From 508992de33173613e4c98ce758d0da4301fba191 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Mon, 13 Mar 2023 13:40:10 +0100 Subject: [PATCH 1/3] Embed the Pygments Catala lexer This enables the HTML output to work without a custom Pygments installation (or the proper venv activated) --- catala.opam | 1 + compiler/catala_utils/cli.ml | 7 + compiler/catala_utils/cli.mli | 5 + compiler/catala_utils/file.ml | 6 + compiler/catala_utils/file.mli | 4 + compiler/driver.ml | 5 +- compiler/literate/dune | 15 + compiler/literate/html.ml | 30 +- french_law/js/french_law.js | 134325 ++++++++++++++- .../en/pygments/catala_en_lexer/lexer.py | 4 +- .../en/pygments/pyproject.toml | 2 +- .../fr/pygments/catala_fr_lexer/lexer.py | 4 +- .../fr/pygments/pyproject.toml | 2 +- .../pl/pygments/catala_pl_lexer/lexer.py | 4 +- .../pl/pygments/pyproject.toml | 2 +- 15 files changed, 126856 insertions(+), 7560 deletions(-) diff --git a/catala.opam b/catala.opam index c93deea41..83ac40b44 100644 --- a/catala.opam +++ b/catala.opam @@ -40,6 +40,7 @@ depends: [ "visitors" {>= "20200210"} "zarith" {>= "1.12"} "zarith_stubs_js" {>= "v0.14.1"} + "crunch" {>= "3.0.0"} "alcotest" {with-test & >= "1.5.0"} "odoc" {with-doc} "ocamlformat" {cataladevmode & = "0.21.0"} diff --git a/compiler/catala_utils/cli.ml b/compiler/catala_utils/cli.ml index 841effc8f..bf1770216 100644 --- a/compiler/catala_utils/cli.ml +++ b/compiler/catala_utils/cli.ml @@ -33,6 +33,13 @@ type backend_option_builtin = type 'a backend_option = [ backend_option_builtin | `Plugin of 'a ] +(** Associates a {!type: Cli.backend_lang} with its string represtation. *) +let languages = ["en", En; "fr", Fr; "pl", Pl] + +let language_code = + let rl = List.map (fun (a, b) -> b, a) languages in + fun l -> List.assoc l rl + let backend_option_to_string = function | `Interpret -> "Interpret" | `Makefile -> "Makefile" diff --git a/compiler/catala_utils/cli.mli b/compiler/catala_utils/cli.mli index 50ee37638..74dcac250 100644 --- a/compiler/catala_utils/cli.mli +++ b/compiler/catala_utils/cli.mli @@ -33,6 +33,11 @@ type backend_option_builtin = type 'a backend_option = [ backend_option_builtin | `Plugin of 'a ] +val languages : (string * backend_lang) list + +val language_code : backend_lang -> string +(** Returns the lowercase two-letter language code *) + val backend_option_to_string : string backend_option -> string (** [backend_option_to_string backend] returns the string representation of the given [backend].*) diff --git a/compiler/catala_utils/file.ml b/compiler/catala_utils/file.ml index 4f53f4867..d7524f7b0 100644 --- a/compiler/catala_utils/file.ml +++ b/compiler/catala_utils/file.ml @@ -26,6 +26,12 @@ let finally f k = f (); r +let temp_file pfx sfx = + let f = Filename.temp_file pfx sfx in + if not !Cli.debug_flag then + at_exit (fun () -> try Sys.remove f with _ -> ()); + f + let with_out_channel filename f = let oc = open_out filename in finally (fun () -> close_out oc) (fun () -> f oc) diff --git a/compiler/catala_utils/file.mli b/compiler/catala_utils/file.mli index 270bc5356..e94804cb4 100644 --- a/compiler/catala_utils/file.mli +++ b/compiler/catala_utils/file.mli @@ -60,3 +60,7 @@ val get_formatter_of_out_channel : (** [get_output_format ~source_file ~output_file ?ext ()] returns the infered filename and its corresponding [with_formatter_of_out_channel] function. If the [output_file] is equal to [Some "-"] returns a wrapper around [stdout]. *) + +val temp_file : string -> string -> string +(** Like [Filename.temp_file], but registers the file for deletion at program + exit unless Cli.debug_flag is set. *) diff --git a/compiler/driver.ml b/compiler/driver.ml index 2e63c3821..c72fb3c16 100644 --- a/compiler/driver.ml +++ b/compiler/driver.ml @@ -17,9 +17,6 @@ open Catala_utils -(** Associates a {!type: Cli.backend_lang} with its string represtation. *) -let languages = ["en", Cli.En; "fr", Cli.Fr; "pl", Cli.Pl] - (** Associates a file extension with its corresponding {!type: Cli.backend_lang} string representation. *) let extensions = [".catala_fr", "fr"; ".catala_en", "en"; ".catala_pl", "pl"] @@ -59,7 +56,7 @@ let driver source_file (options : Cli.options) : int = try List.assoc ext extensions with Not_found -> ext) in let language = - try List.assoc l languages + try List.assoc l Cli.languages with Not_found -> Errors.raise_error "The selected language (%s) is not supported by Catala" l diff --git a/compiler/literate/dune b/compiler/literate/dune index 8dbc99764..81c539bf0 100644 --- a/compiler/literate/dune +++ b/compiler/literate/dune @@ -3,6 +3,21 @@ (public_name catala.literate) (libraries re catala_utils surface ubase uutf)) +(rule + (target pygment_lexers.ml) + (action + (progn + (copy + ../../syntax_highlighting/en/pygments/catala_en_lexer/lexer.py + lexer_en.py) + (copy + ../../syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py + lexer_fr.py) + (copy + ../../syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py + lexer_pl.py) + (run ocaml-crunch -e py -m plain -o %{target} .)))) + (documentation (package catala) (mld_files literate)) diff --git a/compiler/literate/html.ml b/compiler/literate/html.ml index 403c35d07..35d853758 100644 --- a/compiler/literate/html.ml +++ b/compiler/literate/html.ml @@ -58,7 +58,7 @@ let wrap_html (fmt : Format.formatter) (wrapped : Format.formatter -> unit) : unit = let pygments = "pygmentize" in - let css_file = Filename.temp_file "catala_css_pygments" "" in + let css_file = File.temp_file "catala_css_pygments" "" in let pygments_args = [| "-f"; "html"; "-S"; "colorful"; "-a"; ".catala-code" |] in @@ -73,12 +73,15 @@ let wrap_html let css_as_string = really_input_string oc (in_channel_length oc) in close_in oc; Format.fprintf fmt - "\n\ + "\n\ + \n\ + \n\ \n\ \n\ \n\ + \n\

%s
\n\ %s Catala version %s\n\

\n\ @@ -110,7 +113,8 @@ let wrap_html (literal_last_modification language) ftime) source_files)); - wrapped fmt + wrapped fmt; + Format.fprintf fmt "\n\n" (** Performs syntax highlighting on a piece of code by using Pygments and the special Catala lexer. *) @@ -118,17 +122,26 @@ let pygmentize_code (c : string Marked.pos) (language : C.backend_lang) : string = C.debug_print "Pygmenting the code chunk %s" (Pos.to_string (Marked.get_mark c)); - let temp_file_in = Filename.temp_file "catala_html_pygments" "in" in - let temp_file_out = Filename.temp_file "catala_html_pygments" "out" in + let pyg_lexer = + let lexer_fname = "lexer_" ^ Cli.language_code language ^ ".py" in + match Pygment_lexers.read lexer_fname with + | None -> failwith "Pygments lexer not found for this language" + | Some parser -> + let f = File.temp_file "pygments_lexer_" ".py" in + File.with_out_channel f (fun oc -> output_string oc parser); + f + in + let temp_file_in = File.temp_file "catala_html_pygments" "in" in + let temp_file_out = File.temp_file "catala_html_pygments" "out" in let oc = open_out temp_file_in in Printf.fprintf oc "%s" (Marked.unmark c); close_out oc; let pygments = "pygmentize" in - let pygments_lexer = get_language_extension language in let pygments_args = [| "-l"; - pygments_lexer; + pyg_lexer; + "-x"; "-f"; "html"; "-O"; @@ -146,10 +159,13 @@ let pygmentize_code (c : string Marked.pos) (language : C.backend_lang) : string (String.concat " " (Array.to_list pygments_args)) in let return_code = Sys.command cmd in + Sys.remove temp_file_in; + Sys.remove pyg_lexer; if return_code <> 0 then raise_failed_pygments cmd return_code; let oc = open_in temp_file_out in let output = really_input_string oc (in_channel_length oc) in close_in oc; + Sys.remove temp_file_out; (* Remove code blocks delimiters needed by [Pygments]. *) let trimmed_output = output |> remove_cb_first_lines |> remove_cb_last_lines diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index 430b2dbc5..7c9fa82c0 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -1,7541 +1,126786 @@ +//# 1 "api_web.bc.runtime.js" // Generated by js_of_ocaml 4.0.0 -(function(a){typeof -globalThis!=="object"&&(this?b():(a.defineProperty(a.prototype,"_T_",{configurable:true,get:b}),_T_));function -b(){var -b=this||self;b.globalThis=b;delete -a.prototype._T_}}(Object));(function(aL){"use strict";var -bzK=aL,bzN=typeof -module==="object"&&module.exports||aL,A0="38527",A1=4812,rC=424,c$=857,cq="\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales",Gr="Article L521-1",kw="Paragraphe 2 : Ouverture du droit et liquidation.",nB=365180284,AZ="Changement",Gq="26714",f9=163,AY="redevance_in",pb="SaintMartin",Gp=1197,AX="1015",pa=891,ea="Section 1 : Seuils de constitution d'un impay\xc3\xa9",AW="559500",b5="Article 1",cX="aide_finale_formule",AV="35630",dG=122,sB="Article 31",k6="50",bg="Unexpected '",fU=299,Go="34700",jw=181,nA="Article 19",k5=305,jv=4442,cs=128,kv="Avant",rB="identifiant",o$="Oui",sA=1127,Gn="43000",rA="Article D832-26",nz=459,ny=1005,o_=146,nx=">",o8=575,o9=941,Gl=153,Gm=1027,ee=297,AU=4437,o7="Article 17",an="Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",Gk="b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in",eX="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",AT="local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in",o6="baseMensuelleAllocationsFamiliales",AS="35762",aM="Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",A="Calcul du montant de l'allocation logement",Gj=358,d2=2011,dk=2023,d1=295,Gi=462,io="Article L841-1",rz="ServicesSociauxAllocationVerseeALaFamille",Gh=3685,AQ="186000",AR="Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",AP="16.25",ry="0.0315",ku="traitement_aide_finale_diminu\xc3\xa9",Gg="\xc3\xa9ligibilit\xc3\xa9_commune.date_courante",nw=720,AO="40758",k4=623,o5="e",o3=692,o4=313,im="Autre",AN=4382,il=1150,Gf="Article L822-2",AM=3909,ju=421,f8="smic",AL="39445",bD="Article D842-6",AJ=-43,AK="Neuf",AI=3097,AH=3235,sz="Article 27",Ge="inf",Gd="calculetteAidesAuLogementGardeAlternee",AG="27365",Gc="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",eA=685,AF=4637,Gb="41392",k3=111,Ga="Location",ik=967,F$=4456,AD="240400",AE=269,sy=709,sx="Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale",o2=619,F_="33500",jt=4836,kt="CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9",cp="Article D823-9",bI="traitement_aide_finale_minoration_forfaitaire",rx="\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",F9="infinity",F8=1855,ij="2.5",F7="3663",AB=1134,AC=278,ed="Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement",AA=3194,ez="examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr",Az="\\t",F5=3953,F6=2457,aG="examples/aides_logement/code_construction_legislatif.catala_fr",Ay="situation_r822_11_13_17_in",F4=385,aP="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",k2=112,rw=831,ii="1000",ax=563,c_="examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr",k1=701,Ax="210600",F3="Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'",ih=1146,Aw="Couple",nv="SaintPierreEtMiquelon",F2="loyer_minimal",ig=110,co="PrestationsFamiliales",F1="\xc3\x89l\xc3\xa9mentPrestationsFamiliales",Av=1103,F0="214700",FZ=3973,dP="Calcul\xc3\x89quivalenceLoyerMinimale",Au=2083,o1=554,FY="42926",js=1096,rv=265,At=-32,nu=4408,As="39016",o0="AllocationLogementFamiliale",d$=1023,FW=2601,FX="interfaceAllocationsFamiliales",jr=1076,nt="AllocationLogementSociale",Ar=1974,Aq="plafond_l512_3_2",jq=639,ru="Chapitre II : Des contributions pour le remboursement de la dette sociale.",aW="examples/allocations_familiales/decrets_divers.catala_fr",fT=117,Ap=348,k0="compl\xc3\xa9ment_d\xc3\xa9gressif",rt="Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9",FU="240200",FV="Assert_failure",sw="Section 1 : Secteur locatif ordinaire",FT="568400",oZ=496,sv="0.32",Ao="40961",FS=350,kZ="Non",An=185,kY="Article R824-2",FR=219,FQ=1e14,Am="D331_76_1",jp=3489,oY="Article R521-3",Al="17607",$=2022,FO="34865",FP="Fatal error: exception %s\n",Ak="261800",oX=865,ks=740,fS="Article 2",ey=256,ns=558,Aj="Article L521-3",FN="Article R822-1",nr=874,Ai="45064",FM="taux_francs_vers_euros",fR=1031,ie=367,kX="abattement_d\xc3\xa9pense_nette_minimale_d832_10",oW=699,su="mensualit\xc3\xa9_\xc3\xa9ligible",FL=1075,nq="D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance",st="ENOENT",FK=384,ss=1395,rs="0.0006",ic=3935,id=315,rq="EnfantLePlus\xc3\x82g\xc3\xa9",rr=259,Ah=2685,np=751,no=556,bw="examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr",Ag="228000",jo=470,FJ="ENOTEMPTY",Af="copropri\xc3\xa9t\xc3\xa9_in",sr="Article 13",FI="calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge",Ae="D331_59_8",FG="Loyer",FH="35947",Ad=2540,jn=3486,eW=564,Ac="brut_horaire",Ab=172,oV=647,FF="x",Aa="Sous-section 1 : Aides personnelles au logement",FE="calculAidePersonnaliseeLogementAccessionPropriete",sq=335,z$=547,ch="Articles valables du 1er octobre 2020 au 31 septembre 2021",ib=509,kr="Article D755-5",FD="Article D842-4",dF=314,sp="%d",ia=810,z_="Z.of_substring_base: invalid digit",FC="ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille",FB="logement_est_chambre_in",nn=285,z9="buffer.ml",e="Prologue : aides au logement",D="Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9",z8=3640,FA=4785,Fy="167600",Fz="39590",rp=832,Fx=3213,Fw=2565,gT=2008,ro="0.0179",Fv=3505,oU=681,z7="245700",B="Prologue",d0=1029,z6=3366,nm="calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge",Fu="Metropole",cd=100,kW="prise_en_compte_personne_\xc3\xa0_charge",nl=702,fp=300,_="3",a9="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",z5=230,eV=413,Ft="835",oT="169.",z4="plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible",z3=0.5,Fs=4027,cU="Article D521-1",Fq="conventionn\xc3\xa9_livre_III_titre_V_chap_III",eU=622,Fr="sous_calcul_traitement",nk=4769,z2=374,oS="Article D842-11",dZ="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",z1=4137,c5=107,z0=381,h$=161,oR=571,nj="Article D842-12",ni=937,oP=690,oQ="prestations_familiales",kV="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",zZ="26440",Fp=4726,jm=1111,Fo="201700",so="Unix.Unix_error",zY=284,Fm="calculAidePersonnaliseeLogement",eT=553,Fn=3970,h_=1088,zX="Stack_overflow",ff="condition_2_r823_4",a7="Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer",aU="\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement",oO=4089,h9=3487,zV=3460,zW="/static/",rn=253,kq=894,Fl="Not_found",zU="1085",rl=235,rm="\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02",zT="851",zS="41268",a0="examples/allocations_familiales/epilogue.catala_fr",oN=695,Fk="calcul_apl_logement_foyer.date_courante",ca=848054398,oM="Mayotte",Fj="smic.date_courante",zQ=1841,zR=260,oL="1224",Fh="calcul_apl_locatif",Fi=243,dB="calcul_plafond_mensualit\xc3\xa9_d832_10_3",gJ=979,h8=1049,rk="rmdir",jl=1069,Ff="participation_minimale",Fg=32752,h7=4838,zP="33623",sn="19100",zO="37478",f7="calcul_nombre_parts",zN=3279,sm="Article 23",oK="Article R842-5",zM=1026,Fe="taux_composition_familiale",bQ="montant",dY="Article L521-2",bu="examples/allocations_familiales/../smic/smic.catala_fr",zJ="calculAllocationLogementLocatif",zK="37906",zL="false",oJ="Invalid integer: ",zI="PasDeChangement",Fd=2381,bv="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement",zH=3325,a_=106,jk=597,Fc=346,kU=875,h6=186,dO=0x80,eS="Chapitre 1er : Dispositions relatives aux prestations",sl="Fatal error: exception ",zG=4211,oI="\xc3\xa9ligibilit\xc3\xa9_commune",sk="0.0234",Fb="43378",zF="calcul_apl_logement_foyer.date_conventionnement",h5=913,Fa=234,zE=1413,zD=1054,sj="25978",dX=303,zC=1556,E$="Section 2 : R\xc3\xa8gles de non-cumul",h4="zone_in",si="_",zz="eligibilitePrimeDeDemenagement",zA=517,zB=3143,rj="compare: functional value",b4="0.",zw=114,zx="40928",zy="19300",oH=1030,kT=721,zv="197700",zu="Invalid_argument",h3=4832,gI=823,E_="EndCall([ ",oG="0.9",E8="Article R822-22",E9="prise_en_charge",zt="calcul_aide_personnalis\xc3\xa9e_logement",zs=249,E6="34301",E7="577500",zq=3941,zr="%ni",fo=324,W=2020,zp=3783,E5="PersonneSeule",zo=1418,dW=559,ri="0.0238",sh="Article 9",E4="225100",E2="AutresPersonnes",dq="6",E3=495,h2=808,zn="173600",nh=858,p="0",ap="Section 3 : Logements-foyers",zm="montant_forfaitaire_charges_d823_16",kp="Article L161-17-2",d="examples/aides_logement/prologue.catala_fr",E1="eligibiliteAidesPersonnelleLogement",gS=817,jj=604,bm=248,zl=1905,ng=341,oF=322,ji=651,jh=2007,E0="208200",zg="Zone1",zh="Locataire",zi=2245,h1=301,zj="R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro",zk="37457",EZ="562800",zf="535744",EY=572,ze="235800",nf=555,EW=2412,EX="resetLog",zd="\xc3\xa2ge_l512_3_2",U="AllocationsFamiliales",zc="situation_familiale_calcul_apl",rh="GardeAlterneeAllocataireUnique",ne="D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance",EU="haut",EV=1215,jg=4840,h0=1107,gH=1024,oE=1143,za="204761",zb="3.1",sg="35780",y_="calculAidePersonnaliseeLogementFoyer",y$=4470,ET=4484,cl=945,c4=366,fe=0xffffff,ES="34829",jf=1082,y9=524,je=812,nd=876,jd="Titre III: Titre III : Dispositions communes relatives au financement",ER="36378",ay="Calculette globale",hZ=286,EQ="149600",f6=3775,y8=3370,kS="Article R824-1",c3=1994,nc=465,EP=4568,hY=2010,bK="Prologue : prestations familiales",y7=434,sf=2147483647,EO="774",y6=", characters ",f5=456,rg="180100",f4="BaseMensuelleAllocationsFamiliales",y5="prestations_familiales.r\xc3\xa9sidence",EN="819",bn="Chapitre IV : Calcul des allocations de logement en secteur accession",y4="AllocationJournali\xc3\xa8rePresenceParentale",y3=".0",EM=4038,EL="36733",hX=977,rf="AllocationFamilialesAvril2008",y2=328,jc=693,EK="AllocationRentreeScolaire",re="mensualit\xc3\xa9_minimale",kR="2.",nb=691,fn="5612",y1="Concubins",na=578,dE="calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9",y0="date_entr\xc3\xa9e_logement_in",se="Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",yZ="SaintBarth\xc3\xa9lemy",ab="Partie l\xc3\xa9gislative",yY=357,hW=2003,ko="Article R823-4",yX="32956",bs="examples/allocations_familiales/securite_sociale_D.catala_fr",yW="294500",yV=3085,rd="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr",EJ=3051,dV="RessourcesAidesPersonnelleLogement",f3="Montant des plafonds de ressources",br="Annexe",eR="Section 1 : B\xc3\xa9n\xc3\xa9ficiaires",EI=2913,EH="3524",yU="Article D832-27",EG=3553,jb=1101,yT="Zone3",kn="500",yS=471,EF=304,dN=2015,yR="40144",ja=581,EE=4052,fm="prise_en_compte",ED=3985,yQ=3144,m$=718,EC="223900",yP="ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux",i$=138,yO="225500",oD=1998,x="Livre VIII : Aides personnelles au logement",hV=905,km="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6",rc="nan",EB="38892",yN=1276,m_=4401,EA=4649,yM="calculNombrePartLogementFoyer",m9=646,kQ="Impay\xc3\xa9D\xc3\xa9penseLogement",bf="Calculette avec garde altern\xc3\xa9e",Ez=0xdfff,hU="4.3",ex="/",Ey=4504,sd="ENOTDIR",sc=1073741823,Ex=1426,yL=273,yJ=4191,yK="\\r",sb="0.0068",sa=513,oB=560,Ew="calcul_allocation_logement",oC=154,rb="coefficient_prise_en_charge",yH=4045,yI=206,Ev="1107",yG=3811,kP="Article D161-2-1-9",oA="Guyane",oy="PasDeTravaux",oz=311,m8=255,Eu="Revenu",bH="droit_ouvert_majoration",F="Partie r\xc3\xa9glementaire",c9="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",Et="coefficient_r_d832_25",yF="Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",Es="Sous-section 4 : Prise en compte du patrimoine",i="D\xc3\xa9clarations des champs d'application",yE="End_of_file",i_=4833,Er="calcul_apl_logement_foyer.condition_2_du_832_25",yD="calculAllocationLogementFoyer",kl="traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9",fd="Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer",i9="Article 24",ra="Failure",Eq="267871",ox=630,yC="167800",Ep=2344,a6="CalculetteAidesAuLogement",En=1865,Eo=1347,gG=684,m7=715,q$="\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",yB=0xdc00,yA="389618",ow="3.",m6=4803,Em=4844,yz="185800",r$="0.0201",ov=1072,El="Sys_error",eQ=130,yy=4003,fQ="Article D521-2",Ek=3587,m5=703,ou=3595,r_="nombre_personnes_\xc3\xa0_charge_prises_en_compte",ew="Sous-section 4 : Assurance vieillesse",Ei=3889,Ej="Printexc.handle_uncaught_exception",cT="Article D832-24",kO=618,ot="30500",yx="194810",m4="int_of_string",Q="examples/aides_logement/arrete_2019-09-27.catala_fr",yw="Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux",os="Article 37",yv="39340",yu="name",cJ=103,ys=4118,yt=447,i8=428,al="Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement",kN="traitement_aide_finale_redevance",Eh=3951,i7=132,yr=" ])",Ef="1.4",ck=698,i6=803,Eg=4005,m2=648,m3="31797",yo="type_travaux_logement_in",yp="19484",yq=3210,m1=4770,yn=432,yl=3850,ym=4806,cG="Article 7",Ee="%Li",yk=3963,ev=864,cW=1014,hT=616,q_="r\xc3\xa9muneration_mensuelle",dA=302,m0=960,yj=205,cF="Article 14",yi="34570",q9="date_de_naissance",i5=1090,mZ="base_mensuelle_allocations_familiales",i4=795,Ec=2439,Ed=927,yh=2380,mY="_z",yg=4866,i3=2000,r9=1951,hS=860,or="Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",yf=2269,kM=593,b8="Titre IV : Allocations de logement",eP=137,ye="retrieveRawEvents",ec="InterfaceAllocationsFamiliales",kk="Pendant",q8="%a",gF=", ",fc="5422",yd=199,c8=2018,Eb="17012",oq="calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25",yc="AllocationJournalierePresenceParentale",Ea=3542,bX="Chapitre III : Calcul des aides personnelles au logement en secteur locatif",D$="' kind for the enumeration 'ElementPrestationsFamiliales.t'",yb=467,fP=682,bE="Prestations familiales",D8="Enfant\xc3\x80Charge",D9="calculette",D_="GardeAltern\xc3\xa9eAllocataireUnique",eu="Article D823-16",D7="172500",i2=1109,r8="n_nombre_parts_d832_25",r7="Apres",fO=1032,hR=1084,ya=359,bG="examples/aides_logement/../prestations_familiales/prologue.catala_fr",op=887,q7=2187,mX=706,D6="179800",fl=" ",K="Secteur locatif",D5="Undefined_recursive_module",ad="output",x$="195500",x_=1194,q6=1193,x9=2959,bB="Articles valables du 1er octobre 2021 au 30 juin 2022",D4="base_mensuelle_allocations_familiales.date_courante",q5="199900",kj=752,q4=1424,cE=-976970511,x7="' kind for the enumeration 'SituationObligationScolaire.t'",x8="%.16g",D3="220100",oo=189,x6=4422,ki="droit_ouvert_forfaitaire",gE=620,x5="%i",q3="0.01",D2="262985",x4="409505",x3="LogementFoyer",D1="139700",on="PrestationAccueilJeuneEnfant",ol=629,D0="Article L822-4",om=856,mW=521,x2="41252",i1=640,DY="0.1",DZ="Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9",ok=382,mV="5399",q2="2805",DX=337,dz=123,hQ=152,x1="calcul_apl_logement_foyer.type_logement_foyer",hP="0.0173",gD=806,L="Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement",x0=159,xZ="LocationAccession",mU=577,DW=183,q1="a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales",DV="41338",dy=0xff,eO=139,xY=2217,mT="Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance",DU=-12,mS="calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies",DT=4852,mR=458,kh=704,xX=191,mQ="Article 15",dj="0.75",kg="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",DS="22355",mP=3654863,DR="140800",r6="Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",et=455,DQ=1997,xW="163000",kf="0.5",oj="Article R842-14",gC=641,xV="fd ",xU=1116,DP=2203,xT="41751",xS="181800",mO=871,r5=409,xQ="\xc3\xa9quivalence_loyer_\xc3\xa9ligible",xR="41316",bJ="traitement_aide_finale_contributions_sociales_arrondi",mN=993,xP="cat\xc3\xa9gorie_calcul_apl",xO="757",cc="Prise en compte des ressources pour les aides personnelles au logement",gB=827,kL="coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte",DO=1290,fN=2001,q0="Compl\xc3\xa9mentFamilial",hO=793,xN=633,DN="smic.r\xc3\xa9sidence",xM=3260,az="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",mM=108,DM="Article D832-18",mL=-2147483648,eN=2002,z="1",xL="Chapitre II : Dispositions applicables aux ressources",mK="Article R822-7",DL="42605",xJ="VendeurQuandDemandeurAContratLocationAccession",xK="Article R755-0-2",qZ=406,DK="calculNombrePartsAccessionPropriete",DJ="allocationFamilialesAvril2008",r4=": Not a directory",xI="b",DH="18900",DI="Article D521-3",cS="CalculAidePersonnalis\xc3\xa9eLogement",xH="D331_63_64",dU=2012,DF="42469",DG="Out_of_memory",E="examples/aides_logement/code_construction_reglementaire.catala_fr",i0=504,ag="4",r3="index out of bounds",DE=2379,xG=3886,gA=911,DC="27900",DD=3481,iZ=903,oi="_bigarr02",ke=1006,DB=3178,fM=975,xF="31264",DA=0xffffffff,hN=4441,Dz="LaR\xc3\xa9union",xE=3531,mJ="Article L822-5",hM=574,Dy="981600",hK=3771,hL=292,es=0xffff,iY=2009,Dx="%.17g",xC=1806,mI="calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25",xD=400,xB=1965,hJ=1148,c7="100.",Du="1.25",Dv=143,Dw=4100,ai="input0",xA="44729",xz=1310,eM="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",gz=963043957,P="5",di=142,dT=126,iX="AllocationSoutienFamilial",xw=2575,xx=4919,xy=840,Dt="SousLocataire",xv="34713",oh=628,bb="Section 1 : Calcul, liquidation et versement des aides",kK=124,Ds=3550,xu="0.98",gy="Article L512-3",Dq=2182,Dr=1626,xt="633129",fL=422,iW=917,xs="41440",dp="\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement",dD="Sous-section 2 : Calcul de l'aide en secteur locatif",xr=2393,kd=252,Dp="enfant_le_plus_\xc3\xa2g\xc3\xa9",I="examples/allocations_familiales/prologue.catala_fr",au="CalculAidePersonnalis\xc3\xa9eLogementFoyer",er=".",Do=0xf0,xq="eligibilitePrestationsFamiliales",cI="12.",mH="Guadeloupe",xp=276,Dn=4884,bq=116,og="230500",xo="enfantLePlusAge",of=576,mG=627,dn=365,fk="traitement_aide_finale_montant_minimal",dm=294,xn="impossible case",dS="examples/allocations_familiales/securite_sociale_R.catala_fr",Dm=968,eL="R\xc3\xa8gles diverses",Dl=3280,mF=500,Dk=-1080,Dj="18185",gx=1098,xm="SaintBarthelemy",gR=1063,kc=747,Di=-1023,Dg="type_logement_foyer_in",oe=859,Dh=221,gw="1272",xl="ressources_m\xc3\xa9nage_avec_arrondi",De="ouvertureDroitsRetraite",Df="\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement",iV=3773,Dd="204700",r2="Article L755-12",xk="TravauxPourAcquisitionD832_15_1",Dc="Ancien",r1="lib/read.mll",xj=4411,gQ="1229",od=939,Db="Article premier",mE=501,aZ="\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement",Da=1788,xi=4051,hI=4842,mD='"',C$="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",mC="examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr",cR="CalculAllocationLogement",xh=231,hH=4448,C_="3539",r0="<",xe="208500",xf="prestations_familiales.date_courante",xg=0x800,oc=869,xd=617,mB=182,xc=398,rZ=331,ob="\xc3\xa9ligibilit\xc3\xa9",fj=1152,xa="233000",xb=0.012,w$="calculAidePersonnaliseeLogementLocatif",bW="Article 33",oa=719,C8=3005,C9="M\xc3\xa9tropole",hG=842,C6="40696",C7=209,w_=131,C5="ressources_m\xc3\xa9nage_arrondies_seuil",w9=204,rY="Article D815-1",iU="conditions_hors_\xc3\xa2ge",eK="traitement_aide_finale_abattement",bc="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",w7=726928360,cg=562,w8="221100",fb=165,w6="([^/]+)",C4="plafond_loyer_d823_16_2",mA=700,hF=909,C3="Article 39",rX=0xf,w5="798",C2="BailleurSocial",kb="montant_initial_m\xc3\xa9tropole_majoration",n$=372,fi=125,mz=818,kJ="ressources_m\xc3\xa9nage_arrondies_in",iT=907,w4="Division_by_zero",f2=1092,rW=4171,qY="Article L832-3",cQ=402,gP=430,w3=708012133,C0=3976,C1="SituationObligationScolaire",my=877,CZ=4076,CX="AutrePersonne\xc3\x80Charge",CY="44440",mx=532,w2=3158,CW="AllocationJeuneEnfant",kI=566,dM=2014,dL=552,w1=4660,CU="22262",CV=3797,hE="date_courante_in",CT="Article D842-17",iS=380,iR=973,iP=697,CS="Article L751-1",iQ=503,rV=119,ka="montant_avec_garde_altern\xc3\xa9e_majoration",CR="70",n_=412,dR=104,wZ="calculette_sans_garde_altern\xc3\xa9e",w0="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",n9=321,wY="version_avril_2008",iO=468,wX="38361",CQ=439,fK=2013,wW=2714,CO="ouverture_droits_retraite",CP=102,wV="mensualit\xc3\xa9_principale_in",CN="997500",hD="100000.",wU="18261",fJ=101,n8="calcul_nombre_parts.situation_familiale_calcul_apl",CM="participation_personnelle",CK=494,CL="body",fI="Calcul des contributions sociales s'appliquant aux aides personnelles au logement",wT="Unexpected '%s' kind for the enumeration 'Collectivite.t'",rU="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",gO=1e7,wS=3415,hC=1156,j$=254,CI=2333,CJ="calcul_apl_logement_foyer.zone",qX=407,CH="6.",wR="1003",dx="Article L841-2",CG=" : flags Open_text and Open_binary are not compatible",d_="Article D832-15",eq="Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales",wQ="43248",hA=4444,hB=1158,gN=1992,eJ="examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr",wP="\\\\",w="Code de la construction et de l'habitation",wO="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",CF="Article 38",wM=2297,wN=188,wL=4898,CC=463,CD=160,CE="0.04",wK="0.0226",qW=270,wJ="192500",CB=3820,Cz=3346,CA="230700",wI="217600",Cy="0.0463",qV="GardeAlterneePartageAllocations",f1=519,qU="\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0",n7="0.55",n6=109,dl="droit_ouvert",H="Champs d'applications",hz=1105,wH=479,bk="ContributionsSocialesAidesPersonnelleLogement",iN="Article D832-10",bl="Interface du programme",qT=-97,iM=944,aO="examples/aides_logement/archives.catala_fr",iL=469,wG="218700",qR="Article D823-20",qS="ServicesSociauxAllocationVerseeAuxServicesSociaux",Cx=2486,kH="d\xc3\xa9pense_nette_minimale_d832_27",iK=195,ep="1.",gv=1094,wF="45200",dh="d\xc3\xa9pense_nette_minimale",qQ="Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es",wE=2226,j_="Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base",n5=141,rT="Article D823-17",Cw="Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole",n4="AllocationLogement",wC="5186",wD="Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'",iJ=1113,gu=1065,hy=155,n3=518,Cv="calcul_apl_logement_foyer.situation_familiale_calcul_apl",wA="142303",mw=316,wB="37778",d9=296,eI=565,wz=4964,iI=799,n2=215,d8="Article D832-11",wy="LaReunion",kG=947,hx=971,wx=4736,Cu="AgrandirOuRendreHabitableD331_63",aC="Montant du salaire minimum de croissance",mv=557,iH=3283,kF=621,qP="0.3",ww="true",bd="Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution",iG=426,ac="Titre II : Dispositions communes aux aides personnelles au logement",Cs=214,Ct="25116",j9="Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s.",qO="1500",wv=" is too large for shifting.",Cr="237200",n0=502,n1=1068,mt="242800",mu="Map.bal",rS="5208",Cq="0.08",wu="@[",af="Titre III : Aide personnalis\xc3\xa9e au logement",Cp="Apr\xc3\xa8s",ae="Code de la s\xc3\xa9curit\xc3\xa9 sociale",Co="42892",ms=688,mr="ml_z_overflow",wt="1.8",Cn=807,kE="contributions_sociales.date_courante",Cm=4973,ws=307,mq=309,wr="calcul_apl_logement_foyer.redevance",Cl=-752863768,Cj=904,nZ=705,rQ="202500",rR="Article D832-17",Ck=360,Cg="Article 10",Ch="allocationsFamiliales",Ci="Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte",wq="582700",eH=167,hw=915,Cf="4986",nY=274,aD="CalculAidePersonnalis\xc3\xa9eLogementLocatif",eG="abattement_d\xc3\xa9pense_nette_minimale",Cd=3769,Ce="Sys_blocked_io",mp=548,wp=450,qN="b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement",gt="Chapitre 2 : Champ d'application",wo="0.0588",nX="Chapitre 2 : Champ d'application.",rP=362,wn=3757,iF=3939,iE=3281,f0=457,Cc="49",wm=1882,Z="\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement",bz="Article D842-15",Cb=1010,nW=892,iD="nombre_personnes_\xc3\xa0_charge_in",mo=246,wk="37900",wl="%u",mn="Article L831-1",mm="Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession",fH="calcul_\xc3\xa9quivalence_loyer_minimale",fG=298,wj=4273,B$="Article 40",Ca=4034,nV=405,b7="\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement",wi="19402",X="2",hv=127,wg="Article 30",wh="@{",cf="Montant de la base mensuelle des allocations familiales",wf=" : flags Open_rdonly and Open_wronly are not compatible",we="0.232",rO="OuvertureDroitsRetraite",wc="Zone2",wd="43505",nU="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",cH="-",B_="type_aide_in",wa="n_nombre_parts_d832_11",wb=" : file already exists",B9=2364,nT=1070,j8="EffectiveEtPermanente",v$="1127",B7="calculAllocationLogementAccessionPropriete",B8="41481",fa="0.0045",ml=595,fF="Date d'ouverture des droits \xc3\xa0 la retraite",hu=866,B6="retrieveEvents",v_="20165",iC="situation_familiale_calcul_apl_in",B5="2699",mk=625,v8="Infini",v9="prestationsFamiliales",fE="Article 43",v7="\\b",v6=3730,ak="Titre IV : Allocations de Logement",mj="Martinique",b6=404,cr="Article D832-25",v5=487,B4=2322,mi=942,v4=12520,B3="Collectivit\xc3\xa9",B2="42228",ht=981,cj="Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement",aN="Chapitre 1er : Allocations familiales",hs=2016,v3="AllocationEducationEnfantHandicape",B1="832200",v2=1408,kD=963,B0="AllocationRentr\xc3\xa9eScolaire",eF=1000,V="CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9",aa="",rN=737456202,iB="Sous-section 2 : Principes de neutralisation et d'abattement",nS=1142,BZ="^",mh="Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement",j7=746,hr=0x3f,BY="' kind for the enumeration 'Collectivite.t'",v1=4281,rM="184000",v0="251500",qM=334,dQ="Article 16",BX="Article D842-9",vZ="Match_failure",vY=3130,vX=716,BW=3189,at=2021,vW=2345,hq=4446,iA="0.085",kB="d\xc3\xa9pense_nette_minimale_d832_10",kC="CalculNombrePartLogementFoyer",vU=1241,vV=1436,BV="35130",j6="montant_initial_majoration",fh="+",BU=2551,BS=4206,BT="1057",BR=179,vT=3916,BQ="%li",hp="Smic",BO="colocation_in",BP="234600",vS=2313,vR="logement_meubl\xc3\xa9_d842_2_in",nR=1003,BN="39051",vQ="20900",nQ="calcul_apl_logement_foyer",rL="208600",mg=373,vP=267,mf=431,BM="impayeDepenseLogement",ho=801,nP=962,BL="calcul_nombre_parts.condition_2_du_832_25",hn=1086,vO=0xe0,me=873,BJ=2650,BK="20100",BI="D331_32",eE="contributions_sociales",nO=1136,BH="\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in",vN=225,hm=250,vM="calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies",N="Secteur logement-foyer",qL="Article L831-2",J="Allocations familiales",kA=707,nN=893,fZ=1034,iz=1080,qK="0.027",vK="\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage",vL="allocations_familiales",rK=1255,iy="Article 8",bP="examples/allocations_familiales/securite_sociale_L.catala_fr",vJ=245,bC=2019,nM="Article R521-1",rJ="jsError",eD=0x8000,bj="Chapitre Ier : Champ d'application",BG="Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire",nL=964,BF="43074",fD=946,vI="6.55957",ix=1161,vH="eligibiliteAidePersonnaliseeLogement",md="Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources",iw=969,fC=371,fB=320,gs=814,BE=129,vG="\n",kz="abattement_d\xc3\xa9pense_nette_minimale_d832_27",vF=497,am="Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement",qJ="3.7",BD=483,fY=414,mc=310,bO="Tous secteurs",BC="inputs",vD="Article 34",b$="calcul_plafond_mensualit\xc3\xa9_d842_6_base",vE=1033,iv=2005,BB=-48,qI="9",vC=4141,ky=415,BA="1025",ci="camlinternalFormat.ml",nK=312,Y=686,nJ=943,Bz="132000",qH="0.0185",vB="924600",c2=2017,vA=1124,By="date_naissance",cV=317,gM=821,mb="Article R822-2",aj="CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9",eb="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",rI="obligation_scolaire",vz="EEXIST",Bx="r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in",fX=293,eC=550,kx=961,Bw="prestations_familiales.prestation_courante",iu=1154,nI=1999,Bt="\xc3\xa9ligibilit\xc3\xa9_commune.demandeur",Bu=1406,Bv="\\n",ma=1858,vy=333,dw=120,l$="16",Br="23138",Bs="Article D832-14",nH=512,it=724,vx=0x7ff0,vw="eligibiliteAllocationLogement",qG="montant_forfaitaire_charges",eo="traitement_aide_finale_d\xc3\xa9pense_nette_minimale",rH=177,vu=228,vv="\xc3\xa9quivalence_loyer_minimale",vt="0x",Bq="Ascendant",l_="0.005",nG=3865,t="Calcul du montant de l'aide personnalis\xc3\xa9e au logement",l8=499,l9="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",nF=645,Bp="40888",vr="bas",vs="0.208",l7=957,vq="date_conventionnement_in",vp="210900",Bo="219900",aw="traitement_aide_finale",vn="r\xc3\xa9gime_outre_mer_l751_1",be=105,vo="Invalid function call ([ ",vm="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",eB=551,l6="Article R512-2",l5=1135,Bn="31664",bo="direct",vl="44693",Bm=1520,hl="0.45",qF="2710",vk=1165,Bl=1914,gr=429,c6=158,fg="input",vj="39839",Bk="\xc3\xa9ligibilit\xc3\xa9_logement",qE="0.2",cP=157,cC=364,l4="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",vi=390,nE=498,Bj=4586,e$="examples/aides_logement/autres_sources.catala_fr",Bi=283,vh="calculAllocationLogement",qD="mkdir",gL=379,gq="Article L822-3",a4="Chapitre III : Modalit\xc3\xa9s de liquidation et de versement",l3=661,hk=825,is=592,nD=": No such file or directory",vg="\xc3\xa9quivalence_loyer",hj=378,vf=655,fW="Chapitre VII : Calcul des allocations de logement en secteur logement-foyer",gK="Titre 5 : D\xc3\xa9partements d'outre-mer",ve="766",vd=2355,cO="CalculetteAidesAuLogementGardeAltern\xc3\xa9e",hi=151,Bh="calculetteAidesAuLogement",rG="Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es",qC=1137,Bg="Descendant",cb="\xc3\x89ligibilit\xc3\xa9AllocationLogement",ba="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",Bf=3832,hh=919,Be="\xc3\xa9ligibilit\xc3\xa9_apl",vc="taux",qB="Demandeur",bh="CalculAllocationLogementLocatif",Bd="BeginCall([ ",l2=868,rF=822,j5="caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1",Bc="GardeAltern\xc3\xa9ePartageAllocations",Bb="coefficient_multiplicateur_d832_25",ir=3937,a1="\xc3\x89pilogue",Ba=1931,ao="CalculAllocationLogementFoyer",A$="943900",iq=983,A_="bmaf",A9="calculEquivalenceLoyerMinimale",fV=867,l0=2006,hf="0.95",l1=749,hg=472,A7="contributionsSocialesAidesPersonnelleLogement",A8="ressourcesAidesPersonnelleLogement",aS=863,va="Pervasives.do_at_exit",vb="utf8",A6="222300",qA="ComplementFamilial",j4=1001,A5="225000",u$=3736,u_="date_signature_pr\xc3\xaat_in",u9="\xc3\xa9ligibilit\xc3\xa9_allocation_logement",rE="0.0283",rD="0.16",lZ=643,aQ="Article 18",u8=3105,ip=418,A4="36815",nC=134,A3=1167,he=1078,dC="Section 2 : Conditions relatives aux ressources",A2=2109,aK="\xc3\x89ligibilit\xc3\xa9 aux allocations de logement";function -byQ(d,b,e,c,f){if(c<=b)for(var -a=1;a<=f;a++)e[c+a]=d[b+a];else -for(var -a=f;a>=1;a--)e[c+a]=d[b+a];return 0}function -byR(b,d,c,e){for(var -a=0;a=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?po(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else -if(b.t==2&&f==b.c.length){b.c+=d.t==4?po(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)pe(b);var -g=d.c,h=b.c;if(d.t==4)if(f<=e)for(var -a=0;a=0;a--)h[f+a]=g[e+a];else{var -i=Math.min(c,g.length-e);for(var -a=0;a>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function -gU(a){if(a.t==2)a.c+=jB(a.l-a.c.length,"\0");else -a.c=po(a.c,0,a.c.length);a.t=0}function -G1(a){if(a.length<24){for(var -b=0;bhv)return false;return true}else -return!/[^\x00-\x7f]/.test(a)}function -sU(e){for(var -j=aa,c=aa,g,f,h,a,b=0,i=e.length;bnH){c.substr(0,1);j+=c;c=aa;j+=e.slice(b,d)}else -c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else -if(a>es)c+=String.fromCharCode(0xd7c0+(a>>10),yB+(a&0x3FF));else -c+=String.fromCharCode(a);if(c.length>gH){c.substr(0,1);j+=c;c=aa}}return j+c}function -eY(c,a,b){this.t=c;this.c=a;this.l=b}eY.prototype.toString=function(){switch(this.t){case -9:return this.c;default:gU(this);case -0:if(G1(this.c)){this.t=9;return this.c}this.t=8;case -8:return this.c}};eY.prototype.toUtf16=function(){var -a=this.toString();if(this.t==9)return a;return sU(a)};eY.prototype.slice=function(){var -a=this.t==4?this.c.slice():this.c;return new -eY(this.t,a,this.l)};function -GC(a){return new -eY(0,a,a.length)}function -a(a){return GC(a)}function -sP(c,b){bzA(c,a(b))}var -bL=[0];function -bR(a){sP(bL.Invalid_argument,a)}function -GA(){bR(r3)}function -bY(a,c,b){b&=dy;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}pe(a)}a.c[c]=b;return 0}function -d3(b,a,c){if(a>>>0>=b.l)GA();return bY(b,a,c)}function -k8(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case -0:return a.c.charCodeAt(b);case -4:return a.c[b]}}function -dH(c,a){if(c.fun)return dH(c.fun,a);if(typeof -c!=="function")return c;var -b=c.length|0;if(b===0)return c.apply(null,a);var -e=a.length|0,d=b-e|0;if(d==0)return c.apply(null,a);else -if(d<0)return dH(c.apply(null,a.slice(0,b)),a.slice(b));else -return function(){var -e=arguments.length==0?1:arguments.length,d=new -Array(a.length+e);for(var -b=0;b>>0>=a.length-1)k7();return a}function -pc(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function -byZ(){return[0]}function -bZ(a){if(a<0)bR("Bytes.create");return new -eY(a?2:9,aa,a)}function -le(a){throw a}function -jA(){le(bL.Division_by_zero)}function -GF(b,a){if(a==0)jA();return b/a|0}function -d4(a){a.t&6&&gU(a);return a.c}var -bzP=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function -G0(a){if(bzP)return Math.floor(Math.log2(a));var -b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++}else -while(a<1){a*=2;b--}return b}function -sI(c){var -a=new(aL.Float32Array)(1);a[0]=c;var -b=new(aL.Int32Array)(a.buffer);return b[0]|0}var -GM=Math.pow(2,-24);function -aT(b,c,a){this.lo=b&fe;this.mi=c&fe;this.hi=a&es}aT.prototype.caml_custom="_j";aT.prototype.copy=function(){return new -aT(this.lo,this.mi,this.hi)};aT.prototype.ucompare=function(a){if(this.hi>a.hi)return 1;if(this.hia.mi)return 1;if(this.mia.lo)return 1;if(this.loc)return 1;if(ba.mi)return 1;if(this.mia.lo)return 1;if(this.lo>24),c=-this.hi+(b>>24);return new -aT(a,b,c)};aT.prototype.add=function(a){var -b=this.lo+a.lo,c=this.mi+a.mi+(b>>24),d=this.hi+a.hi+(c>>24);return new -aT(b,c,d)};aT.prototype.sub=function(a){var -b=this.lo-a.lo,c=this.mi-a.mi+(b>>24),d=this.hi-a.hi+(c>>24);return new -aT(b,c,d)};aT.prototype.mul=function(a){var -b=this.lo*a.lo,c=(b*GM|0)+this.mi*a.lo+this.lo*a.mi,d=(c*GM|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new -aT(b,c,d)};aT.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};aT.prototype.isNeg=function(){return this.hi<<16<0};aT.prototype.and=function(a){return new -aT(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};aT.prototype.or=function(a){return new -aT(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};aT.prototype.xor=function(a){return new -aT(this.lo^a.lo,this.mi^a.mi,this.hi^a.hi)};aT.prototype.shift_left=function(a){a=a&63;if(a==0)return this;if(a<24)return new -aT(this.lo<>24-a,this.hi<>24-a);if(a<48)return new -aT(0,this.lo<>48-a);return new -aT(0,0,this.lo<>a|this.mi<<24-a,this.mi>>a|this.hi<<24-a,this.hi>>a);if(a<48)return new -aT(this.mi>>a-24|this.hi<<48-a,this.hi>>a-24,0);return new -aT(this.hi>>a-48,0,0)};aT.prototype.shift_right=function(a){a=a&63;if(a==0)return this;var -c=this.hi<<16>>16;if(a<24)return new -aT(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var -b=this.hi<<16>>31;if(a<48)return new -aT(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&es);return new -aT(this.hi<<16>>a-32,b,b)};aT.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&fe;this.lo=this.lo<<1&fe};aT.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&fe;this.mi=(this.mi>>>1|this.hi<<23)&fe;this.hi=this.hi>>>1};aT.prototype.udivmod=function(e){var -c=0,b=this.copy(),a=e.copy(),d=new -aT(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};aT.prototype.div=function(a){var -b=this;if(a.isZero())jA();var -d=b.hi^a.hi;if(b.hi&eD)b=b.neg();if(a.hi&eD)a=a.neg();var -c=b.udivmod(a).quotient;if(d&eD)c=c.neg();return c};aT.prototype.mod=function(b){var -a=this;if(b.isZero())jA();var -d=a.hi;if(a.hi&eD)a=a.neg();if(b.hi&eD)b=b.neg();var -c=a.udivmod(b).modulus;if(d&eD)c=c.neg();return c};aT.prototype.toInt=function(){return this.lo|this.mi<<24};aT.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};aT.prototype.toArray=function(){return[this.hi>>8,this.hi&dy,this.mi>>16,this.mi>>8&dy,this.mi&dy,this.lo>>16,this.lo>>8&dy,this.lo&dy]};aT.prototype.lo32=function(){return this.lo|(this.mi&dy)<<24};aT.prototype.hi32=function(){return this.mi>>>8&es|this.hi<<16};function -ga(b,c,a){return new -aT(b,c,a)}function -ph(a){if(!isFinite(a)){if(isNaN(a))return ga(1,0,vx);return a>0?ga(0,0,vx):ga(0,0,0xfff0)}var -f=a==0&&1/a==-Infinity?eD:a>=0?0:eD;if(f)a=-a;var -b=G0(a)+d$;if(b<=0){b=0;a/=Math.pow(2,-zM)}else{a/=Math.pow(2,b-Gm);if(a<16){a*=2;b-=1}if(b==0)a/=2}var -d=Math.pow(2,24),c=a|0;a=(a-c)*d;var -e=a|0;a=(a-e)*d;var -g=a|0;c=c&rX|f|b<<4;return ga(g,e,c)}function -k$(a){return a.toArray()}function -Gz(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==oi)for(var -a=0;a>4;if(c==2047)return(f|g|b&rX)==0?b&eD?-Infinity:Infinity:NaN;var -e=Math.pow(2,-24),a=(f*e+g)*e+(b&rX);if(c>0){a+=16;a*=Math.pow(2,c-Gm)}else -a*=Math.pow(2,-zM);if(b&eD)a=-a;return a}function -sC(b){var -d=b.length,c=1;for(var -a=0;a>>24&dy|(a&es)<<8,a>>>16&es)}function -sK(a){return a.hi32()}function -sL(a){return a.lo32()}var -byU=oi;function -f_(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}f_.prototype.caml_custom=byU;f_.prototype.offset=function(b){var -c=0;if(typeof -b==="number")b=[b];if(!(b -instanceof -Array))bR("bigarray.js: invalid offset");if(this.dims.length!=b.length)bR("Bigarray.get/set: bad number of dimensions");if(this.layout==0)for(var -a=0;a=this.dims[a])k7();c=c*this.dims[a]+b[a]}else -for(var -a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])k7();c=c*this.dims[a]+(b[a]-1)}return c};f_.prototype.get=function(a){switch(this.kind){case -7:var -d=this.data[a*2+0],b=this.data[a*2+1];return GL(d,b);case -10:case -11:var -e=this.data[a*2+0],c=this.data[a*2+1];return[j$,e,c];default:return this.data[a]}};f_.prototype.set=function(a,b){switch(this.kind){case -7:this.data[a*2+0]=sL(b);this.data[a*2+1]=sK(b);break;case -10:case -11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};f_.prototype.fill=function(b){switch(this.kind){case -7:var -c=sL(b),e=sK(b);if(c==e)this.data.fill(c);else -for(var -a=0;ad)return 1;if(c!=d){if(!g)return NaN;if(c==c)return 1;if(d==d)return-1}}break;case -7:for(var -a=0;ab.data[a+1])return 1;if(this.data[a]>>>0>>0)return-1;if(this.data[a]>>>0>b.data[a]>>>0)return 1}break;case -2:case -3:case -4:case -5:case -6:case -8:case -9:case -12:for(var -a=0;ab.data[a])return 1}break}return 0};function -jx(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}jx.prototype=new -f_();jx.prototype.offset=function(a){if(typeof -a!=="number")if(a -instanceof -Array&&a.length==1)a=a[0];else -bR("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])k7();return a};jx.prototype.get=function(a){return this.data[a]};jx.prototype.set=function(a,b){this.data[a]=b;return 0};jx.prototype.fill=function(a){this.data.fill(a);return 0};function -Gv(c,d,a,b){var -e=Gx(c);if(sC(a)*e!=b.length)bR("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new -jx(c,d,a,b);return new -f_(c,d,a,b)}function -dr(b){if(!bL.Failure)bL.Failure=[bm,a(ra),-3];sP(bL.Failure,b)}function -Gw(b,v,r){var -i=b.read32s();if(i<0||i>16)dr("input_value: wrong number of bigarray dimensions");var -p=b.read32s(),j=p&dy,o=p>>8&1,h=[];if(r==oi)for(var -a=0;a>>32-15;a=gd(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function -by9(a,b){a=cv(a,sL(b));a=cv(a,sK(b));return a}function -sG(a,b){return by9(a,ph(b))}function -Gy(c){var -b=sC(c.dims),d=0;switch(c.kind){case -2:case -3:case -12:if(b>ey)b=ey;var -e=0,a=0;for(a=0;a+4<=c.data.length;a+=4){e=c.data[a+0]|c.data[a+1]<<8|c.data[a+2]<<16|c.data[a+3]<<24;d=cv(d,e)}e=0;switch(b&3){case -3:e=c.data[a+2]<<16;case -2:e|=c.data[a+1]<<8;case -1:e|=c.data[a+0];d=cv(d,e)}break;case -4:case -5:if(b>cs)b=cs;var -e=0,a=0;for(a=0;a+2<=c.data.length;a+=2){e=c.data[a+0]|c.data[a+1]<<16;d=cv(d,e)}if((b&1)!=0)d=cv(d,c.data[a]);break;case -6:if(b>64)b=64;for(var -a=0;a64)b=64;for(var -a=0;a32)b=32;b*=2;for(var -a=0;a64)b=64;for(var -a=0;a32)b=32;for(var -a=0;a0?b(c,f,e):b(f,c,e);if(e&&a!=a)return d;if(+a!=+a)return+a;if((a|0)!=0)return a|0}return d}function -la(a){return a -instanceof -eY}function -pk(a){return la(a)}function -GE(a){if(typeof -a==="number")return eF;else -if(la(a))return kd;else -if(pk(a))return 1252;else -if(a -instanceof -Array&&a[0]===a[0]>>>0&&a[0]<=m8){var -b=a[0]|0;return b==j$?0:b}else -if(a -instanceof -String)return v4;else -if(typeof -a=="string")return v4;else -if(a -instanceof -Number)return eF;else -if(a&&a.caml_custom)return rK;else -if(a&&a.compare)return 1256;else -if(typeof -a=="function")return 1247;else -if(typeof -a=="symbol")return 1251;return j4}function -gb(a,b){if(ab.c?1:0}function -sR(a,b){return GB(a,b)}function -pd(a,b,d){var -e=[];for(;;){if(!(d&&a===b)){var -f=GE(a);if(f==hm){a=a[1];continue}var -g=GE(b);if(g==hm){b=b[1];continue}if(f!==g){if(f==eF){if(g==rK)return GD(a,b,-1,d);return-1}if(g==eF){if(f==rK)return GD(b,a,1,d);return 1}return fb)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case -1001:if(ab)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case -1251:if(a!==b){if(!d)return NaN;return 1}break;case -1252:var -a=d4(a),b=d4(b);if(a!==b){if(ab)return 1}break;case -12520:var -a=a.toString(),b=b.toString();if(a!==b){if(ab)return 1}break;case -246:case -254:default:if(a.length!=b.length)return a.length1)e.push(a,b,1);break}}if(e.length==0)return 0;var -h=e.pop();b=e.pop();a=e.pop();if(h+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=aa;a.t=2}else{a.c=jB(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)pe(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,aa);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var -c=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(a);if(c){var -d=c[3].replace(/0+$/,aa),f=parseInt(c[1]+c[2]+d,16),e=(c[5]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;dr("float_of_string")}function -sO(d){d=d4(d);var -e=d.length;if(e>31)bR("format_int: format too long");var -a={justify:fh,signstyle:cH,filler:fl,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var -c=0;c=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function -sE(b,f){if(b.uppercase)f=f.toUpperCase();var -e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=cH))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2}var -c=aa;if(b.justify==fh&&b.filler==fl)for(var -d=e;d20){c-=20;a/=Math.pow(10,c);a+=new -Array(c+1).join(p);if(b>0)a=a+er+new -Array(b+1).join(p);return a}else -return a.toFixed(b)}}var -a,e=sO(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=rc;e.filler=fl}else -if(!isFinite(c)){a=Ge;e.filler=fl}else -switch(e.conv){case"e":var -a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==o5)a=a.slice(0,b-1)+p+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var -h=a.indexOf(o5),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var -b=h-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==er)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==o5)a=a.slice(0,b-1)+p+a.slice(b-1);break}else{var -f=d;if(g<0){f-=g+1;a=c.toFixed(f)}else -while(a=c.toFixed(f),a.length>d+1)f--;if(f){var -b=a.length-1;while(a.charAt(b)==p)b--;if(a.charAt(b)==er)b--;a=a.slice(0,b+1)}}break}return sE(e,a)}function -pf(e,c){if(d4(e)==sp)return a(aa+c);var -b=sO(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else -c>>>=0;var -d=c.toString(b.base);if(b.prec>=0){b.filler=fl;var -f=b.prec-d.length;if(f>0)d=jB(f,p)+d}return sE(b,d)}var -GT=0;function -cZ(){return GT++}function -by3(a){if(a==0||!isFinite(a))return[0,a,0];var -c=a<0;if(c)a=-a;var -b=Math.max(-d$,G0(a)+1);a*=Math.pow(2,-b);while(a=1){a*=z3;b++}if(c)a=-a;return[0,a,b]}function -eg(a){return a.toUtf16()}function -lf(){return typeof -aL.process!=="undefined"&&typeof -aL.process.versions!=="undefined"&&typeof -aL.process.versions.node!=="undefined"}function -bzQ(){function -a(a){if(a.charAt(0)===ex)return[aa,a.substring(1)];return}function -b(c){var -g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,a=g.exec(c),b=a[1]||aa,e=Boolean(b&&b.charAt(1)!==":");if(Boolean(a[2]||e)){var -d=a[1]||aa,f=a[2]||aa;return[d,c.substring(d.length+f.length)]}return}return lf()&&aL.process&&aL.process.platform?aL.process.platform==="win32"?b:a:a}var -sY=bzQ();function -GY(a){return a.slice(-1)!==ex?a+ex:a}if(lf()&&aL.process&&aL.process.cwd)var -k9=aL.process.cwd().replace(/\\/g,ex);else -var -k9="/static";k9=GY(k9);function -bzn(a){a=eg(a);if(!sY(a))a=k9+a;var -e=sY(a),d=e[1].split(ex),b=[];for(var -c=0;c1)b.pop();break;case".":break;default:b.push(d[c]);break}b.unshift(e[0]);b.orig=a;return b}function -bzH(e){for(var -f=aa,b=f,a,h,c=0,g=e.length;cnH){b.substr(0,1);f+=b;b=aa;f+=e.slice(c,d)}else -b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(dO|a&hr)}else -if(a<0xd800||a>=Ez)b+=String.fromCharCode(vO|a>>12,dO|a>>6&hr,dO|a&hr);else -if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))Ez)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(Do|a>>18,dO|a>>12&hr,dO|a>>6&hr,dO|a&hr)}if(b.length>gH){b.substr(0,1);f+=b;b=aa}}return f+b}function -byY(a){var -b=9;if(!G1(a))b=8,a=bzH(a);return new -eY(b,a,a.length)}function -aR(a){return byY(a)}var -bz7=["E2BIG","EACCES","EAGAIN","EBADF","EBUSY","ECHILD","EDEADLK","EDOM",vz,"EFAULT","EFBIG","EINTR","EINVAL","EIO","EISDIR","EMFILE","EMLINK","ENAMETOOLONG","ENFILE","ENODEV",st,"ENOEXEC","ENOLCK","ENOMEM","ENOSPC","ENOSYS",sd,FJ,"ENOTTY","ENXIO","EPERM","EPIPE","ERANGE","EROFS","ESPIPE","ESRCH","EXDEV","EWOULDBLOCK","EINPROGRESS","EALREADY","ENOTSOCK","EDESTADDRREQ","EMSGSIZE","EPROTOTYPE","ENOPROTOOPT","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EOPNOTSUPP","EPFNOSUPPORT","EAFNOSUPPORT","EADDRINUSE","EADDRNOTAVAIL","ENETDOWN","ENETUNREACH","ENETRESET","ECONNABORTED","ECONNRESET","ENOBUFS","EISCONN","ENOTCONN","ESHUTDOWN","ETOOMANYREFS","ETIMEDOUT","ECONNREFUSED","EHOSTDOWN","EHOSTUNREACH","ELOOP","EOVERFLOW"];function -gY(d,f,e,a){var -b=bz7.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var -c=[b,aR(f||aa),aR(e||aa)];return c}var -GR={};function -e2(a){return GR[a]}function -gX(b,a){throw[0,b].concat(a)}function -byX(a){return new -eY(4,a,a.length)}function -bx(a){sP(bL.Sys_error,a)}function -bzy(a){bx(a+nD)}function -byW(b,a){if(a>>>0>=b.l)GA();return k8(b,a)}function -ds(a){return a.l}function -Gs(){}function -ct(a){this.data=a}ct.prototype=new -Gs();ct.prototype.truncate=function(a){var -b=this.data;this.data=bZ(a|0);f$(b,0,this.data,0,a)};ct.prototype.length=function(){return ds(this.data)};ct.prototype.write=function(b,d,g,a){var -c=this.length();if(b+a>=c){var -e=bZ(b+a),f=this.data;this.data=e;f$(f,0,this.data,0,c)}ef(d,g,this.data,b,a);return 0};ct.prototype.read=function(c,a,d,b){var -e=this.length();f$(this.data,c,a,d,b);return 0};ct.prototype.read_one=function(a){return byW(this.data,a)};ct.prototype.close=function(){};ct.prototype.constructor=ct;function -cY(b,a){this.content={};this.root=b;this.lookupFun=a}cY.prototype.nm=function(a){return this.root+a};cY.prototype.create_dir_if_needed=function(d){var -c=d.split(ex),b=aa;for(var -a=0;a>1|1;if(h=0)}function -sH(d,b){var -e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=cv(d,c)}c=0;switch(e&3){case -3:c=b.charCodeAt(a+2)<<16;case -2:c|=b.charCodeAt(a+1)<<8;case -1:c|=b.charCodeAt(a);d=cv(d,c)}d^=e;return d}function -by_(a,b){return sH(a,d4(b))}function -by7(d,b){var -e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=cv(d,c)}c=0;switch(e&3){case -3:c=b[a+2]<<16;case -2:c|=b[a+1]<<8;case -1:c|=b[a];d=cv(d,c)}d^=e;return d}function -GO(a){switch(a.t&6){default:gU(a);case -0:return a.c;case -4:return a.c}}function -by6(b,c){var -a=GO(c);return typeof -a==="string"?sH(b,a):by7(b,a)}function -by8(a){a^=a>>>16;a=gd(a,0x85ebca6b|0);a^=a>>>13;a=gd(a,0xc2b2ae35|0);a^=a>>>16;return a}function -by5(j,l,n,m){var -f,g,h,d,c,b,a,e,i;d=l;if(d<0||d>ey)d=ey;c=j;b=n;f=[m];g=0;h=1;while(g0){a=f[g++];if(a&&a.caml_custom){if(jy[a.caml_custom]&&jy[a.caml_custom].hash){var -k=jy[a.caml_custom].hash(a);b=cv(b,k);c--}}else -if(a -instanceof -Array&&a[0]===(a[0]|0))switch(a[0]){case -248:b=cv(b,a[2]);c--;break;case -250:f[--g]=a[1];break;default:var -o=a.length-1<<10|a[0];b=cv(b,o);for(e=1,i=a.length;e=d)break;f[h++]=a[e]}break}else -if(la(a)){b=by6(b,a);c--}else -if(pk(a)){b=by_(b,a);c--}else -if(typeof -a==="string"){b=sH(b,a);c--}else -if(a===(a|0)){b=cv(b,a+a+1);c--}else -if(a===+a){b=sG(b,a);c--}}b=by8(b);return b&0x3FFFFFFF}function -by$(a,c,k){if(!isFinite(a)){if(isNaN(a))return aR(rc);return aR(a>0?F9:"-infinity")}var -i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var -d=0;if(a==0);else -if(a<1)while(a<1&&d>-1022){a*=2;d--}else -while(a>=2){a/=2;d++}var -j=d<0?aa:fh,e=aa;if(i)e=cH;else -switch(k){case -43:e=fh;break;case -32:e=fl;break;default:break}if(c>=0&&c<13){var -g=Math.pow(2,c*4);a=Math.round(a*g)/g}var -b=a.toString(16);if(c>=0){var -h=b.indexOf(er);if(h<0)b+=er+jB(c,p);else{var -f=h+1+c;if(b.length>24&fe,a>>31&es)}function -bzk(a){return a.toInt()}function -bze(a){return+a.isNeg()}function -bzh(a){return a.neg()}function -bzc(g,c){var -a=sO(g);if(a.signedconv&&bze(c)){a.sign=-1;c=bzh(c)}var -b=aa,h=bzi(a.base),f="0123456789abcdef";do{var -e=c.udivmod(h);c=e.quotient;b=f.charAt(bzk(e.modulus))+b}while(!bzf(c));if(a.prec>=0){a.filler=fl;var -d=a.prec-b.length;if(d>0)b=jB(d,p)+b}return sE(a,b)}function -bzj(a,b){return a.or(b)}function -pi(a){return a.toFloat()}function -bzx(c){var -a=0,e=aH(c),b=10,d=1;if(e>0)switch(dt(c,a)){case -45:a++;d=-1;break;case -43:a++;d=1;break}if(a+1=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=dG)return a-87;return-1}function -pj(f){var -h=bzx(f),c=h[0],i=h[1],d=h[2],g=aH(f),j=-1>>>0,e=c=d)dr(m4);var -a=b;for(c++;c=d)break;a=d*a+b;if(a>j)dr(m4)}if(c!=g)dr(m4);a=i*a;if(d==10&&(a|0)!=a)dr(m4);return a|0}function -gc(a){return a.slice(1)}function -gV(c){var -d=c.length,b=new -Array(d+1);b[0]=0;for(var -a=0;a0){var -c=new -Array(b);for(var -a=0;ad$){a-=d$;b*=Math.pow(2,d$);if(a>d$){a-=d$;b*=Math.pow(2,d$)}}if(a<-d$){a+=d$;b*=Math.pow(2,-d$)}b*=Math.pow(2,a);return b}function -GN(a,b){return+(pd(a,b,false)<0)}function -lb(b){b=d4(b);var -d=b.length/2,c=new -Array(d);for(var -a=0;a>16;return c}function -sM(b,t,a){var -n=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=lb(b[m]);b.lex_backtrk=lb(b[l]);b.lex_check=lb(b[p]);b.lex_trans=lb(b[s]);b.lex_default=lb(b[q])}var -e,c=t,k=Gt(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1}else -c=-c-1;for(;;){var -f=b.lex_base[c];if(f<0)return-f-1;var -i=b.lex_backtrk[c];if(i>=0){a[h]=a[d];a[g]=i}if(a[d]>=a[o])if(a[j]==0)return-c-1;else -e=ey;else{e=k[a[d]];a[d]++}if(b.lex_check[f+e]==c)c=b.lex_trans[f+e];else -c=b.lex_default[c];if(c<0){a[d]=a[h];if(a[g]==-1)dr("lexing: empty token");else -return a[g]}else -if(e==ey)a[j]=0}}function -e0(a,d){if(a<0)k7();var -a=a+1|0,b=new -Array(a);b[0]=0;for(var -c=1;c>>32-b,c)}function -g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function -h(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function -i(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function -j(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}function -k(f,n){var -e=n;f[e>>2]|=dO<<8*(e&3);for(e=(e&~0x3)+8;(e&0x3F)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&0x1FFFFFFF;var -k=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476];for(e=0;e>8*m&0xFF;return o}return function(i,g,f){var -e=[],h=GO(i);if(typeof -h==="string"){var -d=h;for(var -a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charCodeAt(b+3)<<24}for(;a>2]|=d.charCodeAt(a+g)<<8*(a&3)}else{var -c=h;for(var -a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return bzE(k(e,f))}}();function -bzp(c,b,a){return bzo(fq(c),b,a)}function -bzq(){return 0}var -e1=new -Array();function -gW(c){var -a=e1[c];if(!a.opened)bx("Cannot flush a closed channel");if(!a.buffer||a.buffer==aa)return 0;if(a.fd&&bL.fds[a.fd]&&bL.fds[a.fd].output){var -b=bL.fds[a.fd].output;switch(b.length){case -2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=aa;return 0}function -GW(e,f){var -b=e1[e],d=a(f),c=aH(d);b.file.write(b.offset,d,0,c);b.offset+=c;return 0}function -bzL(a){var -a=sU(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var -c=b.console;c&&c.error&&c.error(a)}}function -bzM(a){var -a=sU(a),b=aL;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var -c=b.console;c&&c.log&&c.log(a)}}function -pp(c,e,d,a){if(bL.fds===undefined)bL.fds=new -Array();a=a?a:{};var -b={};b.file=d;b.offset=a.append?d.length():0;b.flags=a;b.output=e;bL.fds[c]=b;if(!bL.fd_last_idx||c>bL.fd_last_idx)bL.fd_last_idx=c;return c}function -bz8(c,b,g){var -a={};while(b){switch(b[1]){case -0:a.rdonly=1;break;case -1:a.wronly=1;break;case -2:a.append=1;break;case -3:a.create=1;break;case -4:a.truncate=1;break;case -5:a.excl=1;break;case -6:a.binary=1;break;case -7:a.text=1;break;case -8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)bx(d4(c)+wf);if(a.text&&a.binary)bx(d4(c)+CG);var -d=G7(c),e=d.device.open(d.rest,a),f=bL.fd_last_idx?bL.fd_last_idx:0;return pp(f+1,GW,e,a)}pp(0,GW,new -ct(bZ(0)));pp(1,bzM,new -ct(bZ(0)));pp(2,bzL,new -ct(bZ(0)));function -bzr(a){var -c=bL.fds[a];if(c.flags.wronly)bx(xV+a+" is writeonly");var -d=null;if(a==0&&lf()){var -e=require("fs");d=function(){return aR(e.readFileSync(0,vb))}}var -b={file:c.file,offset:c.offset,fd:a,opened:true,out:false,refill:d};e1[b.fd]=b;return b.fd}function -GP(c){var -b=bL.fds[c];if(b.flags.rdonly)bx(xV+c+" is readonly");var -a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:aa};e1[a.fd]=a;return a.fd}function -bzs(){var -b=0;for(var -a=0;a>>0)return a[0];else -if(la(a))return kd;else -if(pk(a))return kd;else -if(a -instanceof -Function||typeof -a=="function")return 247;else -if(a&&a.caml_custom)return m8;else -return eF}function -d5(b,c,a){if(a&&aL.toplevelReloc)b=aL.toplevelReloc(a);bL[b+1]=c;if(a)bL[a]=c}function -sQ(a,b){GR[d4(a)]=b;return 0}function -bzB(a){a[2]=GT++;return a}function -byV(a,b){if(a===b)return 1;a.t&6&&gU(a);b.t&6&&gU(b);return a.c==b.c?1:0}function -sS(a,b){return byV(a,b)}function -bzD(){bR(r3)}function -bA(b,a){if(a>>>0>=aH(b))bzD();return dt(b,a)}function -M(a,b){return 1-sS(a,b)}function -bzF(){return 0x7FFFFFFF/4|0}function -bzz(){le(bL.Not_found)}function -GX(c){var -a=aL,b=eg(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return aR(a.process.env[b]);if(aL.jsoo_static_env&&aL.jsoo_static_env[b])return aR(aL.jsoo_static_env[b]);bzz()}function -bzG(){if(aL.crypto)if(typeof -aL.crypto.getRandomValues==="function"){var -a=new(aL.Uint32Array)(1);aL.crypto.getRandomValues(a);return[0,a[0]]}else -if(aL.crypto.randomBytes==="function"){var -b=aL.crypto.randomBytes(4),a=new(aL.Uint32Array)(b);return[0,a[0]]}var -c=new -Date().getTime(),d=c^DA*Math.random();return[0,d]}function -sT(a){var -b=1;while(a&&a.joo_tramp){a=a.joo_tramp.apply(null,a.joo_args);b++}return a}function -cw(b,a){return{joo_tramp:b,joo_args:a}}function -GV(a){return a}function -o(a){if(a -instanceof -Array)return a;if(aL.RangeError&&a -instanceof -aL.RangeError&&a.message&&a.message.match(/maximum call stack/i))return GV(bL.Stack_overflow);if(aL.InternalError&&a -instanceof -aL.InternalError&&a.message&&a.message.match(/too much recursion/i))return GV(bL.Stack_overflow);if(a -instanceof -aL.Error&&e2(rJ))return[0,e2(rJ),a];return[0,bL.Failure,aR(String(a))]}var -as=function(y){"use strict";var -f=gO,$=7,s=9007199254740992,H=q(s),M="0123456789abcdefghijklmnopqrstuvwxyz",g=bzK.BigInt,F=typeof -g==="function";function -d(a,b,c,f){if(typeof -a==="undefined")return d[0];if(typeof -b!=="undefined")return+b===10&&!c?e(a):ae(a,b,c,f);return e(a)}function -a(b,a){this.value=b;this.sign=a;this.isSmall=false;this.caml_custom=mY}a.prototype=Object.create(d.prototype);function -b(a){this.value=a;this.sign=a<0;this.isSmall=true;this.caml_custom=mY}b.prototype=Object.create(d.prototype);function -c(a){this.value=a;this.caml_custom=mY}c.prototype=Object.create(d.prototype);function -l(a){return-s0)return Math.floor(a);return Math.ceil(a)}function -N(g,h){var -i=g.length,j=h.length,e=new -Array(i),b=0,d=f,c,a;for(a=0;a=d?1:0;e[a]=c-b*d}while(a0)e.push(b);return e}function -t(a,b){if(a.length>=b.length)return N(a,b);return N(b,a)}function -A(g,a){var -h=g.length,d=new -Array(h),c=f,e,b;for(b=0;b0){d[b++]=a%c;a=Math.floor(a/c)}return d}a.prototype.add=function(f){var -b=e(f);if(this.sign!==b.sign)return this.subtract(b.negate());var -c=this.value,d=b.value;if(b.isSmall)return new -a(A(c,Math.abs(d)),this.sign);return new -a(t(c,d),this.sign)};a.prototype.plus=a.prototype.add;b.prototype.add=function(g){var -f=e(g),c=this.value;if(c<0!==f.sign)return this.subtract(f.negate());var -d=f.value;if(f.isSmall){if(l(c+d))return new -b(c+d);d=q(Math.abs(d))}return new -a(A(d,Math.abs(c)),c<0)};b.prototype.plus=b.prototype.add;c.prototype.add=function(a){return new -c(this.value+e(a).value)};c.prototype.plus=c.prototype.add;function -w(d,h){var -g=d.length,i=h.length,c=new -Array(g),e=0,j=f,a,b;for(a=0;a=0)c=w(e,f);else{c=w(f,e);d=!d}c=n(c);if(typeof -c==="number"){if(d)c=-c;return new -b(c)}return new -a(c,d)}function -E(h,l,k){var -j=h.length,c=new -Array(j),i=-l,g=f,e,d;for(e=0;e=0)};b.prototype.minus=b.prototype.subtract;c.prototype.subtract=function(a){return new -c(this.value-e(a).value)};c.prototype.minus=c.prototype.subtract;a.prototype.negate=function(){return new -a(this.value,!this.sign)};b.prototype.negate=function(){var -c=this.sign,a=new -b(-this.value);a.sign=!c;return a};c.prototype.negate=function(){return new -c(-this.value)};a.prototype.abs=function(){return new -a(this.value,false)};b.prototype.abs=function(){return new -b(Math.abs(this.value))};c.prototype.abs=function(){return new -c(this.value>=0?this.value:-this.value)};function -L(g,j){var -i=g.length,l=j.length,o=i+l,c=B(o),n=f,e,d,a,h,k;for(a=0;a0){e[b++]=a%c;a=Math.floor(a/c)}return e}function -W(c,b){var -a=[];while(b-->0)a.push(0);return a.concat(c)}function -C(b,c){var -a=Math.max(b.length,c.length);if(a<=30)return L(b,c);a=Math.ceil(a/2);var -f=b.slice(a),d=b.slice(0,a),i=c.slice(a),h=c.slice(0,a),e=C(d,h),g=C(f,i),k=C(t(d,f),t(h,i)),j=t(t(e,W(w(w(k,e),g),a)),W(g,2*a));m(j);return j}function -aj(a,b){return-(xb*a)-xb*b+0.000015*a*b>0}a.prototype.multiply=function(j){var -h=e(j),c=this.value,b=h.value,i=this.sign!==h.sign,g;if(h.isSmall){if(b===0)return d[0];if(b===1)return this;if(b===-1)return this.negate();g=Math.abs(b);if(g=0;d--){j=g-1;if(b[d+h]!==l)j=Math.floor((b[d+h]*g+b[d+h-1])/l);c=0;e=0;m=i.length;for(a=0;ah)d=(d+1)*i;c=Math.ceil(d/p);do{j=u(b,c);if(o(j,a)<=0)break;c--}while(c);e.push(c);a=w(a,j)}e.reverse();return[n(e),n(a)]}function -O(i,e){var -g=i.length,h=B(g),j=f,a,d,b,c;b=0;for(a=g-1;a>=0;--a){c=b*j+i[a];d=r(c/e);b=c-d*e;h[a]=d|0}return[h,b|0]}function -i(h,w){var -m,j=e(w);if(F)return[new -c(h.value/j.value),new -c(h.value%j.value)];var -l=h.value,i=j.value,g;if(i===0)throw new -Error("Cannot divide by zero");if(h.isSmall){if(j.isSmall)return[new -b(r(l/i)),new -b(l%i)];return[d[0],h]}if(j.isSmall){if(i===1)return[h,d[0]];if(i==-1)return[h.negate(),d[0]];var -s=Math.abs(i);if(sc.length?1:-1;for(var -a=b.length-1;a>=0;a--)if(b[a]!==c[a])return b[a]>c[a]?1:-1;return 0}a.prototype.compareAbs=function(d){var -a=e(d),b=this.value,c=a.value;if(a.isSmall)return 1;return o(b,c)};b.prototype.compareAbs=function(d){var -c=e(d),b=Math.abs(this.value),a=c.value;if(c.isSmall){a=Math.abs(a);return b===a?0:b>a?1:-1}return-1};c.prototype.compareAbs=function(c){var -a=this.value,b=e(c).value;a=a>=0?a:-a;b=b>=0?b:-b;return a===b?0:a>b?1:-1};a.prototype.compare=function(b){if(b===Infinity)return-1;if(b===-Infinity)return 1;var -a=e(b),c=this.value,d=a.value;if(this.sign!==a.sign)return a.sign?1:-1;if(a.isSmall)return this.sign?-1:1;return o(c,d)*(this.sign?-1:1)};a.prototype.compareTo=a.prototype.compare;b.prototype.compare=function(c){if(c===Infinity)return-1;if(c===-Infinity)return 1;var -b=e(c),a=this.value,d=b.value;if(b.isSmall)return a==d?0:a>d?1:-1;if(a<0!==b.sign)return a<0?-1:1;return a<0?1:-1};b.prototype.compareTo=b.prototype.compare;c.prototype.compare=function(a){if(a===Infinity)return-1;if(a===-Infinity)return 1;var -b=this.value,c=e(a).value;return b===c?0:b>c?1:-1};c.prototype.compareTo=c.prototype.compare;a.prototype.equals=function(a){return this.compare(a)===0};c.prototype.eq=c.prototype.equals=b.prototype.eq=b.prototype.equals=a.prototype.eq=a.prototype.equals;a.prototype.notEquals=function(a){return this.compare(a)!==0};c.prototype.neq=c.prototype.notEquals=b.prototype.neq=b.prototype.notEquals=a.prototype.neq=a.prototype.notEquals;a.prototype.greater=function(a){return this.compare(a)>0};c.prototype.gt=c.prototype.greater=b.prototype.gt=b.prototype.greater=a.prototype.gt=a.prototype.greater;a.prototype.lesser=function(a){return this.compare(a)<0};c.prototype.lt=c.prototype.lesser=b.prototype.lt=b.prototype.lesser=a.prototype.lt=a.prototype.lesser;a.prototype.greaterOrEquals=function(a){return this.compare(a)>=0};c.prototype.geq=c.prototype.greaterOrEquals=b.prototype.geq=b.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals;a.prototype.lesserOrEquals=function(a){return this.compare(a)<=0};c.prototype.leq=c.prototype.lesserOrEquals=b.prototype.leq=b.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals;a.prototype.isEven=function(){return(this.value[0]&1)===0};b.prototype.isEven=function(){return(this.value&1)===0};c.prototype.isEven=function(){return(this.value&g(1))===g(0)};a.prototype.isOdd=function(){return(this.value[0]&1)===1};b.prototype.isOdd=function(){return(this.value&1)===1};c.prototype.isOdd=function(){return(this.value&g(1))===g(1)};a.prototype.isPositive=function(){return!this.sign};b.prototype.isPositive=function(){return this.value>0};c.prototype.isPositive=b.prototype.isPositive;a.prototype.isNegative=function(){return this.sign};b.prototype.isNegative=function(){return this.value<0};c.prototype.isNegative=b.prototype.isNegative;a.prototype.isUnit=function(){return false};b.prototype.isUnit=function(){return Math.abs(this.value)===1};c.prototype.isUnit=function(){return this.abs().value===g(1)};a.prototype.isZero=function(){return false};b.prototype.isZero=function(){return this.value===0};c.prototype.isZero=function(){return this.value===g(0)};a.prototype.isDivisibleBy=function(b){var -a=e(b);if(a.isZero())return false;if(a.isUnit())return true;if(a.compareAbs(2)===0)return this.isEven();return this.mod(a).isZero()};c.prototype.isDivisibleBy=b.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function -R(b){var -a=b.abs();if(a.isUnit())return false;if(a.equals(2)||a.equals(3)||a.equals(5))return true;if(a.isEven()||a.isDivisibleBy(3)||a.isDivisibleBy(5))return false;if(a.lesser(49))return true}function -J(d,e){var -g=d.prev(),c=g,h=0,f,i,b,a;while(c.isEven())c=c.divide(2),h++;next:for(b=0;b-s)return new -b(c-1);return new -a(H,true)};c.prototype.prev=function(){return new -c(this.value-g(1))};var -h=[1];while(2*h[h.length-1]<=f)h.push(2*h[h.length-1]);var -v=h.length,j=h[v-1];function -X(a){return Math.abs(a)<=f}a.prototype.shiftLeft=function(c){var -a=e(c).toJSNumber();if(!X(a))throw new -Error(String(a)+wv);if(a<0)return this.shiftRight(-a);var -b=this;if(b.isZero())return b;while(a>=v){b=b.multiply(j);a-=v-1}return b.multiply(h[a])};c.prototype.shiftLeft=b.prototype.shiftLeft=a.prototype.shiftLeft;a.prototype.shiftRight=function(d){var -a,b=e(d).toJSNumber();if(!X(b))throw new -Error(String(b)+wv);if(b<0)return this.shiftLeft(-b);var -c=this;while(b>=v){if(c.isZero()||c.isNegative()&&c.isUnit())return c;a=i(c,j);c=a[1].isNegative()?a[0].prev():a[0];b-=v-1}a=i(c,h[b]);return a[1].isNegative()?a[0].prev():a[0]};c.prototype.shiftRight=b.prototype.shiftRight=a.prototype.shiftRight;function -I(h,a,q){a=e(a);var -m=h.isNegative(),p=a.isNegative(),l=m?h.not():h,o=p?a.not():a,b=0,c=0,k=null,n=null,f=[];while(!l.isZero()||!o.isZero()){k=i(l,j);b=k[1].toJSNumber();if(m)b=j-1-b;n=i(o,j);c=n[1].toJSNumber();if(p)c=j-1-c;l=k[0];o=n[0];f.push(q(b,c))}var -g=q(m?1:0,p?1:0)!==0?as(-1):as(0);for(var -d=f.length-1;d>=0;d-=1)g=g.multiply(j).add(as(f[d]));return g}a.prototype.not=function(){return this.negate().prev()};c.prototype.not=b.prototype.not=a.prototype.not;a.prototype.and=function(a){return I(this,a,function(a,b){return a&b})};c.prototype.and=b.prototype.and=a.prototype.and;a.prototype.or=function(a){return I(this,a,function(a,b){return a|b})};c.prototype.or=b.prototype.or=a.prototype.or;a.prototype.xor=function(a){return I(this,a,function(a,b){return a^b})};c.prototype.xor=b.prototype.xor=a.prototype.xor;var -G=1<<30,_=(f&-f)*(f&-f)|G;function -D(c){var -a=c.value,b=typeof -a==="number"?a|G:typeof -a==="bigint"?a|g(G):a[0]+a[1]*f|_;return b&-b}function -Q(b,a){if(a.compareTo(b)<=0){var -f=Q(b,a.square(a)),d=f.p,c=f.e,e=d.multiply(a);return e.compareTo(b)<=0?{p:e,e:c*2+1}:{p:d,e:c*2}}return{p:as(1),e:0}}a.prototype.bitLength=function(){var -a=this;if(a.compareTo(as(0))<0)a=a.negate().subtract(as(1));if(a.compareTo(as(0))===0)return as(0);return as(Q(a,as(2)).e).add(as(1))};c.prototype.bitLength=b.prototype.bitLength=a.prototype.bitLength;function -S(a,b){a=e(a);b=e(b);return a.greater(b)?a:b}function -K(a,b){a=e(a);b=e(b);return a.lesser(b)?a:b}function -P(a,b){a=e(a).abs();b=e(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var -c=d[1],f,g;while(a.isEven()&&b.isEven()){f=K(D(a),D(b));a=a.divide(f);b=b.divide(f);c=c.multiply(f)}while(a.isEven())a=a.divide(D(a));do{while(b.isEven())b=b.divide(D(b));if(a.greater(b)){g=b;b=a;a=g}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function -ad(a,b){a=e(a).abs();b=e(b).abs();return a.divide(P(a,b)).multiply(b)}function -ag(a,b){a=e(a);b=e(b);var -g=K(a,b),n=S(a,b),h=n.subtract(g).add(1);if(h.isSmall)return g.add(Math.floor(Math.random()*h));var -j=x(h,f).value,l=[],k=true;for(var -c=0;c=i){if(c===z&&i===1)continue;throw new -Error(c+" is not a valid digit in base "+g+er)}}g=e(g);var -h=[],j=b[0]===cH;for(a=j?1:0;a=0;a--){b=b.add(e[a].times(c));c=c.times(f)}return g?b.negate():b}function -ah(b,a){a=a||M;if(b=0){e=c.divmod(b);c=e.quotient;var -d=e.remainder;if(d.isNegative()){d=b.minus(d).abs();c=c.next()}g.push(d.toJSNumber())}g.push(c.toJSNumber());return{value:g.reverse(),isNegative:f}}function -Z(d,c,b){var -a=x(d,c);return(a.isNegative?cH:aa)+a.value.map(function(a){return ah(a,b)}).join(aa)}a.prototype.toArray=function(a){return x(this,a)};b.prototype.toArray=function(a){return x(this,a)};c.prototype.toArray=function(a){return x(this,a)};a.prototype.toString=function(a,f){if(a===y)a=10;if(a!==10)return Z(this,a,f);var -d=this.value,c=d.length,e=String(d[--c]),h="0000000",b;while(--c>=0){b=String(d[c]);e+=h.slice(b.length)+b}var -g=this.sign?cH:aa;return g+e};b.prototype.toString=function(a,b){if(a===y)a=10;if(a!=10)return Z(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function -V(d){if(l(+d)){var -n=+d;if(n===r(n))return F?new -c(g(n)):new -b(n);throw new -Error(oJ+d)}var -s=d[0]===cH;if(s)d=d.slice(1);var -h=d.split(/e/i);if(h.length>2)throw new -Error(oJ+h.join(o5));if(h.length===2){var -e=h[1];if(e[0]===fh)e=e.slice(1);e=+e;if(e!==r(e)||!l(e))throw new -Error(oJ+e+" is not a valid exponent.");var -f=h[0],i=f.indexOf(er);if(i>=0){e-=f.length-i-1;f=f.slice(0,i)+f.slice(i+1)}if(e<0)throw new -Error("Cannot include negative exponent part for integers");f+=new -Array(e+1).join(p);d=f}var -t=/^([0-9][0-9]*)$/.test(d);if(!t)throw new -Error(oJ+d);if(F)return new -c(g(s?cH+d:d));var -q=[],j=d.length,o=$,k=j-o;while(j>0){q.push(+d.slice(k,j));k-=o;if(k<0)k=0;j-=o}m(q);return new -a(q,s)}function -af(a){if(F)return new -c(g(a));if(l(a)){if(a!==r(a))throw new -Error(a+" is not an integer.");return new -b(a)}return V(a.toString())}function -e(a){if(typeof -a==="number")return af(a);if(typeof -a==="string")return V(a);if(typeof -a==="bigint")return new -c(a);return a}for(var -k=0;k0)d[-k]=e(-k)}d.one=d[1];d.zero=d[0];d.minusOne=d[-1];d.max=S;d.min=K;d.gcd=P;d.lcm=ad;d.isInstance=function(d){return d -instanceof -a||d -instanceof -b||d -instanceof -c};d.randBetween=ag;d.fromArray=function(b,a,c){return U(b.map(e),e(a||10),c)};return d}();function -cL(a){var -b=a.toJSNumber()|0;if(a.equals(as(b)))return b;return a}function -G2(a){return cL(as(a).abs())}function -G3(a,b){return cL(as(a).add(as(b)))}function -eh(a,b){return as(a).compare(as(b))}function -jD(b,a){a=as(a);if(a.equals(as(0)))jA();return cL(as(b).divide(as(a)))}function -bz3(b,a){a=as(a);if(a.equals(as(0)))jA();return cL(as(b).mod(a))}function -sV(a,b){return[0,jD(a,b),bz3(a,b)]}function -G4(a,b){return jD(a,b)}function -bzR(a,b){return as(a).equals(as(b))?1:0}function -da(a){return as(a).compare(as.zero)}function -sX(a,b){return cL(as(a).subtract(as(b)))}function -bzS(a,b){var -c=da(a),d=da(b);if(c*d<0)if(!as(a).mod(as(b)).equals(as(0)))return sX(jD(a,b),as(1));return jD(a,b)}function -bzU(a,b){return cL(as.gcd(as(a),as(b)).abs())}function -bzI(c,e,g){e=as(e);var -a=e.toArray(Math.pow(2,32));c.write(8,a.isNegative?1:0);var -f=a.value.length,d=f*4;c.write(32,d);for(var -b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&dy);c.write(8,a.value[b]>>>8&dy);c.write(8,a.value[b]>>>16&dy);c.write(8,a.value[b]>>>24&dy)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function -bzJ(b,g){var -e;switch(b.read8u()){case -1:e=true;break;case -0:e=false;break;default:dr("input_value: z (malformed input)")}var -f=b.read32u(),c=as(0);for(var -d=0;d>>0);c=a.shiftLeft(d*32).add(c)}if(e)c=c.negate();g[0]=f+4;return cL(c)}function -bzV(d){var -b=as(d).toArray(Math.pow(2,32)),a=0;for(var -c=0;c=48&&a<=57)return a-48;if(a>=97&&a<=CP)return a-97+10;if(a>=65&&a<=70)return a-65+10}var -d=0;if(a[d]==fh)a=a.substring(1);else -if(a[d]==cH)d++;if(a[d]==si)bR(z_);a=a.replace(/_/g,aa);if(a==cH||a==aa)a=p;for(;d=c)bR(z_)}return cL(as(a,c))}function -gZ(d,a,b,c){a=d4(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function -pq(a){a=as(a);if(!bzT(a))le(e2(mr));var -b=as(DA),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=GL(d,c);return e}function -bzm(a){switch(a[2]){case-8:case-11:case-12:return 1;default:return 0}}function -by2(b){var -a=aa;if(b[0]==0){a+=b[1][1];if(b.length==3&&b[2][0]==0&&bzm(b[1]))var -e=b[2],f=1;else -var -f=2,e=b;a+="(";for(var -d=f;df)a+=gF;var -c=e[d];if(typeof -c=="number")a+=c.toString();else -if(c -instanceof -eY)a+=mD+c.toString()+mD;else -if(typeof -c=="string")a+=mD+c.toString()+mD;else -a+=si}a+=")"}else -if(b[0]==bm)a+=b[1];return a}function -GG(a){if(a -instanceof -Array&&(a[0]==0||a[0]==bm)){var -c=e2(Ej);if(c)c(a,false);else{var -d=by2(a),b=e2(va);if(b)b(0);aL.console.error(sl+d+vG)}}else -throw a}function -bzC(){var -a=aL;if(a.process&&a.process.on)a.process.on("uncaughtException",function(b,c){GG(b);a.process.exit(2)});else -if(a.addEventListener)a.addEventListener("error",function(a){if(a.error)GG(a.error)})}bzC();function -r(a,b){return a.length==1?a(b):dH(a,[b])}function -aq(a,b,c){return a.length==2?a(b,c):dH(a,[b,c])}function -cB(a,b,c,d){return a.length==3?a(b,c,d):dH(a,[b,c,d])}function -u7(a,b,c,d,e){return a.length==4?a(b,c,d,e):dH(a,[b,c,d,e])}function -lY(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):dH(a,[b,c,d,e,f])}function -byP(a,b,c,d,e,f,g){return a.length==6?a(b,c,d,e,f,g):dH(a,[b,c,d,e,f,g])}function -byO(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):dH(a,[b,c,d,e,f,g,h])}by4();var -ps=[bm,a(DG),-1],s3=[bm,a(El),-2],lg=[bm,a(ra),-3],sZ=[bm,a(zu),-4],pt=[bm,a(w4),-6],cD=[bm,a(Fl),-7],s1=[bm,a(vZ),-8],s2=[bm,a(zX),-9],bp=[bm,a(FV),-11],s4=[bm,a(D5),DU],byL=[4,0,0,0,[12,45,[4,0,0,0,0]]],pJ=[0,[11,a('File "'),[2,0,[11,a('", line '),[4,0,0,0,[11,a(y6),[4,0,0,0,[12,45,[4,0,0,0,[11,a(": "),[2,0,0]]]]]]]]]],a('File "%s", line %d, characters %d-%d: %s')],byM=[12,41,0],byN=[4,0,0,0,[12,46,0]],u6=[0,a("eventsManager"),a("computeAllocationsFamiliales"),a("computeAidesAuLogement")];d5(11,s4,D5);d5(10,bp,FV);d5(9,[bm,a(Ce),-10],Ce);d5(8,s2,zX);d5(7,s1,vZ);d5(6,cD,Fl);d5(5,pt,w4);d5(4,[bm,a(yE),-5],yE);d5(3,sZ,zu);d5(2,lg,ra);d5(1,s3,El);d5(0,ps,DG);var -Hj=a("output_substring"),Hg=a("%.12g"),Hf=a(er),Hd=a(ww),He=a(zL),G8=a("Stdlib.Exit"),G_=ga(0,0,Fg),G$=ga(0,0,65520),Ha=ga(1,0,Fg),Hl=a("CamlinternalLazy.Undefined"),Hq=a(wP),Hr=a("\\'"),Hs=a(v7),Ht=a(Az),Hu=a(Bv),Hv=a(yK),Hp=a("Char.chr"),Hy=a("nth"),Hz=a("List.nth"),Hx=a("tl"),Hw=a("hd"),HC=a("String.blit / Bytes.blit_string"),HB=a("Bytes.blit"),HA=a("String.sub / Bytes.sub"),HH=a("String.contains_from / Bytes.contains_from"),HE=a(aa),HD=a("String.concat"),HK=a("Array.blit"),HJ=a("Array.fill"),HP=a("Map.remove_min_elt"),HQ=[0,0,0,0],HR=[0,a("map.ml"),xD,10],HS=[0,0,0],HL=a(mu),HM=a(mu),HN=a(mu),HO=a(mu),HT=a("Stdlib.Queue.Empty"),HZ=a("Buffer.add_substring/add_subbytes"),HY=a("Buffer.add: cannot grow buffer"),HX=[0,a(z9),93,2],HW=[0,a(z9),94,2],HV=a("Buffer.sub"),H8=a("%c"),H9=a("%s"),H_=a(x5),H$=a(BQ),Ia=a(zr),Ib=a(Ee),Ic=a("%f"),Id=a("%B"),Ie=a("%{"),If=a("%}"),Ig=a("%("),Ih=a("%)"),Ii=a(q8),Ij=a("%t"),Ik=a("%?"),Il=a("%r"),Im=a("%_r"),In=[0,a(ci),850,23],Iy=[0,a(ci),gs,21],Iq=[0,a(ci),815,21],Iz=[0,a(ci),mz,21],Ir=[0,a(ci),819,21],IA=[0,a(ci),rF,19],Is=[0,a(ci),gI,19],IB=[0,a(ci),826,22],It=[0,a(ci),gB,22],IC=[0,a(ci),rw,30],Iu=[0,a(ci),rp,30],Iw=[0,a(ci),836,26],Io=[0,a(ci),837,26],Ix=[0,a(ci),846,28],Ip=[0,a(ci),847,28],Iv=[0,a(ci),851,23],JF=a(wl),JD=[0,a(ci),1558,4],JE=a("Printf: bad conversion %["),JG=[0,a(ci),Dr,39],JH=[0,a(ci),1649,31],JI=[0,a(ci),1650,31],JJ=a("Printf: bad conversion %_"),JK=a(wh),JL=a(wu),JM=a(wh),JN=a(wu),JR=[0,[11,a("invalid box description "),[3,0,0]],a("invalid box description %S")],JP=a(aa),JQ=[0,0,4],JS=a(aa),JT=a(xI),JU=a("h"),JV=a("hov"),JW=a("hv"),JX=a("v"),JB=a(rc),Jz=a("neg_infinity"),JA=a(F9),Jy=a(er),Jt=[0,cJ],Jh=a("%+nd"),Ji=a("% nd"),Jk=a("%+ni"),Jl=a("% ni"),Jm=a("%nx"),Jn=a("%#nx"),Jo=a("%nX"),Jp=a("%#nX"),Jq=a("%no"),Jr=a("%#no"),Jg=a("%nd"),Jj=a(zr),Js=a("%nu"),I6=a("%+ld"),I7=a("% ld"),I9=a("%+li"),I_=a("% li"),I$=a("%lx"),Ja=a("%#lx"),Jb=a("%lX"),Jc=a("%#lX"),Jd=a("%lo"),Je=a("%#lo"),I5=a("%ld"),I8=a(BQ),Jf=a("%lu"),IT=a("%+Ld"),IU=a("% Ld"),IW=a("%+Li"),IX=a("% Li"),IY=a("%Lx"),IZ=a("%#Lx"),I0=a("%LX"),I1=a("%#LX"),I2=a("%Lo"),I3=a("%#Lo"),IS=a("%Ld"),IV=a(Ee),I4=a("%Lu"),IG=a("%+d"),IH=a("% d"),IJ=a("%+i"),IK=a("% i"),IL=a("%x"),IM=a("%#x"),IN=a("%X"),IO=a("%#X"),IP=a("%o"),IQ=a("%#o"),IF=a(sp),II=a(x5),IR=a(wl),H0=a("@]"),H1=a("@}"),H2=a("@?"),H3=a("@\n"),H4=a("@."),H5=a("@@"),H6=a("@%"),H7=a("@"),ID=a("CamlinternalFormat.Type_mismatch"),J1=a(aa),J2=[0,[11,a(gF),[2,0,[2,0,0]]],a(", %s%s")],Kp=[0,[11,a(sl),[2,0,[12,10,0]]],a(FP)],Kq=[0,[11,a("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],a("Fatal error in uncaught exception handler: exception %s\n")],Ko=a("Fatal error: out of memory in uncaught exception handler"),Km=[0,[11,a(sl),[2,0,[12,10,0]]],a(FP)],Ki=[0,[2,0,[12,10,0]],a("%s\n")],Ka=a("Raised at"),Kb=a("Re-raised at"),Kc=a("Raised by primitive operation at"),Kd=a("Called from"),Ke=a(" (inlined)"),Kg=a(aa),Kf=[0,[2,0,[12,32,[2,0,[11,a(' in file "'),[2,0,[12,34,[2,0,[11,a(", line "),[4,0,0,0,[11,a(y6),byL]]]]]]]]]],a('%s %s in file "%s"%s, line %d, characters %d-%d')],Kh=[0,[2,0,[11,a(" unknown location"),0]],a("%s unknown location")],J7=a("Out of memory"),J8=a("Stack overflow"),J9=a("Pattern matching failed"),J_=a("Assertion failed"),J$=a("Undefined recursive module"),J3=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a("(%s%s)")],J4=a(aa),J5=a(aa),J6=[0,[12,40,[2,0,[12,41,0]]],a("(%s)")],J0=[0,[4,0,0,0,0],a(sp)],JY=[0,[3,0,0],a("%S")],JZ=a(si),Kj=[0,a(aa),a("(Cannot print locations:\n bytecode executable program file not found)"),a("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),a("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),a("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],Kr=a(FF),KF=[0,0],byJ=a("OCAMLRUNPARAM"),byH=a("CAMLRUNPARAM"),Ks=a(aa),K5=[3,0,3],K6=a(er),K0=a(nx),K1=a("<\/"),K2=a(aa),KW=a(nx),KX=a(r0),KY=a(aa),KU=a("\n"),KQ=a(aa),KR=a(aa),KS=a(aa),KT=a(aa),KP=[0,a(aa)],KL=a(aa),KM=a(aa),KN=a(aa),KO=a(aa),KJ=[0,a(aa),0,a(aa)],KI=a(aa),KH=a("Stdlib.Format.String_tag"),Lf=a(aa),Lm=[0,a("lib/dates.ml"),226,2],Ll=[0,[4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]],a("%04d-%02d-%02d")],Lj=[0,[12,91,[4,0,0,0,[11,a(" years, "),[4,0,0,0,[11,a(" months, "),[4,0,0,0,[11,a(" days]"),0]]]]]]],a("[%d years, %d months, %d days]")],Lg=a("Dates_calc.Dates.InvalidDate"),Lh=a("Dates_calc.Dates.AmbiguousComputation"),Lr=ga(1,0,0),Ln=a("Z.Overflow"),Lo=a(mr),Lv=a(aa),Lw=a("+inf"),Lx=a("-inf"),Ly=a(Ge),Lz=a("undef"),LB=[0,a("q.ml"),486,25],LA=a("Q.of_string: invalid digit"),Lt=a(xn),Ls=a(xn),LF=a("Buf.extend: reached Sys.max_string_length"),Md=[0,a(r1),72,32],Ma=[0,a(r1),72,32],L$=a("Root is not an object or array"),L7=a("NaN value not allowed in standard JSON"),L8=[0,[8,[0,0,3],0,[0,16],0],a(x8)],L_=[0,[8,[0,0,3],0,[0,17],0],a(Dx)],L9=a(y3),L5=a("Infinity value not allowed in standard JSON"),L6=a("-Infinity value not allowed in standard JSON"),L1=a("NaN"),L2=[0,[8,[0,0,3],0,[0,16],0],a(x8)],L4=[0,[8,[0,0,3],0,[0,17],0],a(Dx)],L3=a(y3),LZ=a("Infinity"),L0=a("-Infinity"),LW=a(ww),LX=a(zL),LV=a("null"),LP=a(v7),LQ=a(Az),LR=a(Bv),LS=a("\\f"),LT=a(yK),LU=a('\\"'),LO=a(wP),LN=[0,[11,a("src="),[3,0,[11,a(" start="),[4,3,0,0,[11,a(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],a("src=%S start=%i len=%i\n%!")],LL=a("\\u00"),LI=[0,a(r1),72,32],LG=a("Yojson.Json_error"),LK=[0,a(qU),a(q$),a(rm),a(rU),a(rx),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],Mc=[0,a(qU),a(q$),a(rm),a(rU),a(rx),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],Mf=[0,a(qU),a(q$),a(rm),a(rU),a(rx),a(aa),a(aa),a(aa),a(aa),a(aa),a(aa)],M7=[0,0,0],M$=a("unreachable due to the [is_subscope_call] test"),Nb=a("unreachable due to the [is_subscope_input_var_def] test"),Nc=a("]"),Nd=a("["),Ne=a(" ]): expected variable definition (function output), found: "),Nf=a(gF),Ng=a(vo),Nh=a(" ]): expected variable definition (function output), found: end of tokens"),Ni=a(gF),Nj=a(vo),Na=a("Unexpected event: "),Nk=[0,a("runtimes/ocaml/runtime.ml"),nH,19],Nl=a("Missing function output variable definition."),Nm=a("Invalid start of function call."),M_=a(fg),M9=a(ad),Nn=[0,[11,a("An error occurred while parsing raw events: "),[2,0,[12,10,0]]],a("An error occurred while parsing raw events: %s\n")],MY=a(yr),MZ=a(gF),M0=[0,[11,a(Bd),0],a(Bd)],M1=a(yr),M2=a(gF),M3=[0,[11,a(E_),0],a(E_)],M4=a(gF),M5=[0,[11,a("VariableDefinition([ "),[2,0,[11,a(" ], "),[2,0,[12,41,0]]]]],a("VariableDefinition([ %s ], %s)")],M6=[0,[11,a("DecisionTaken("),[2,0,[12,58,[4,0,0,0,[12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,byM]]]]]]]]]],a("DecisionTaken(%s:%d.%d-%d.%d)")],MI=[0,cE,a("VarComputation")],MJ=[0,cE,a("FunCall")],MK=a(CL),ML=a(BC),MM=a(yu),MN=[0,cE,a("SubScopeCall")],MO=a("fun_calls"),MP=a("value"),MQ=a(yu),MR=a("pos"),MS=a(ad),MT=a(CL),MU=a(BC),MV=a("fun_name"),Mx=[0,ca,[0,[0,cE,a("Unit")],0]],My=[0,ca,[0,[0,cE,a("Unembeddable")],0]],Mz=[0,cE,a("Bool")],MA=[0,cE,a("Money")],MB=[0,cE,a("Integer")],MC=[0,cE,a("Decimal")],MD=[0,cE,a("Date")],ME=[0,cE,a("Duration")],MF=[0,cE,a("Enum")],MG=[0,cE,a("Struct")],MH=[0,cE,a("Array")],Mw=[0,[15,0],a(q8)],Mv=[0,[15,0],a(q8)],Mh=a("law_headings"),Mi=a("end_column"),Mj=a("end_line"),Mk=a("start_column"),Ml=a("start_line"),Mm=a("filename"),Mn=a("Runtime_ocaml.Runtime.EmptyError"),Mo=a("Runtime_ocaml.Runtime.AssertionFailed"),Mp=a("Runtime_ocaml.Runtime.ConflictError"),Mq=a("Runtime_ocaml.Runtime.UncomparableDurations"),Ms=a("Runtime_ocaml.Runtime.ImpossibleDate"),Mu=a("Runtime_ocaml.Runtime.NoValueProvided"),No=a("Jsoo_runtime.Error.Exn"),Np=a(rJ),NH=[0,[2,0,[11,a(" in file "),[2,0,[11,a(", position "),[4,0,0,0,[12,58,[4,0,0,0,[11,a("--"),[4,0,0,0,[12,58,byN]]]]]]]]]],a("%s in file %s, position %d:%d--%d:%d.")],NI=a("No rule applies in the given context to give a value to the variable"),NJ=a("A conflict happened between two rules giving a value to the variable"),NK=a("A failure happened in the assertion"),NA=a("Begin call"),NB=a("End call"),NC=a("Variable definition"),ND=a("Decision taken"),Ny=a(aa),Nw=a("date_of_jsoo: invalid date"),Nu=[0,a(ye),a(B6),a(EX)],Nv=[0,a(ye),a(EX),a(B6)],aan=[0,a(a0),90,14,90,29,[0,a(bl),[0,a(a1),0]]],aag=[0,a(a0),fJ,18,fJ,64,[0,a(bl),[0,a(a1),0]]],aah=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],aaf=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],aab=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],$9=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$5=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$1=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$W=[0,a(a0),97,18,97,72,[0,a(bl),[0,a(a1),0]]],$X=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$V=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$Q=[0,a(a0),93,18,93,67,[0,a(bl),[0,a(a1),0]]],$R=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$P=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$L=[0,a(a0),fT,14,fT,30,[0,a("Article L131-1"),[0,a(bl),[0,a(a1),0]]]],$I=[0,0],$J=[1,0],$K=[2,0],$M=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$H=[0,a(a0),76,11,76,27,[0,a(bl),[0,a(a1),0]]],$N=[0,a(ec),[0,a("enfants_\xc3\xa0_charge"),0]],$S=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$T=[0,a(ec),[0,a("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],$O=[0,a(a0),92,5,92,75,[0,a(bl),[0,a(a1),0]]],$Y=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$Z=[0,a(ec),[0,a("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],$U=[0,a(a0),96,5,96,80,[0,a(bl),[0,a(a1),0]]],$2=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$3=[0,a(ec),[0,a("allocations_familiales.ressources_m\xc3\xa9nage"),0]],$0=[0,a(a0),88,14,88,54,[0,a(bl),[0,a(a1),0]]],$6=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$7=[0,a(ec),[0,a("allocations_familiales.r\xc3\xa9sidence"),0]],$4=[0,a(a0),89,14,89,46,[0,a(bl),[0,a(a1),0]]],$_=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],$$=[0,a(ec),[0,a("allocations_familiales.date_courante"),0]],$8=[0,a(a0),86,14,86,50,[0,a(bl),[0,a(a1),0]]],aac=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],aad=[0,a(ec),[0,a("allocations_familiales.enfants_\xc3\xa0_charge"),0]],aaa=[0,a(a0),87,14,87,53,[0,a(bl),[0,a(a1),0]]],aai=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],aaj=[0,a(ec),[0,a("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],aae=[0,a(a0),cd,5,cd,72,[0,a(bl),[0,a(a1),0]]],aak=[0,a(ec),[0,a(vL),[0,a(U),0]]],aal=[0,a(ec),[0,a(vL),[0,a(U),0]]],aao=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],aam=[0,a(a0),80,12,80,27,[0,a(bl),[0,a(a1),0]]],aap=[0,a(ec),[0,a("i_montant_vers\xc3\xa9"),0]],$B=[0,a(a0),45,14,45,27,[0,a(eL),[0,a(a1),0]]],$A=a(p),$w=[0,a(bs),DW,14,DW,62,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],$r=[0,a(U),[0,a(k0),[0,a(ai),0]]],$s=[0,a(U),[0,a(k0),0]],$t=[0,a(U),[0,a(k0),[0,a(ad),0]]],$u=[0,a(U),[0,a(k0),0]],$v=a(p),$n=[0,a(bs),oo,14,oo,61,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],$j=[0,a(a0),39,14,39,38,[0,a(eL),[0,a(a1),0]]],$d=[0,a(U),[0,a(ka),[0,a(ai),0]]],$e=[0,a(U),[0,a(ka),0]],$f=[0,a(U),[0,a(ka),[0,a(ad),0]]],$g=[0,a(U),[0,a(ka),0]],$h=a(p),$i=a(p),_$=[0,a(a0),37,14,37,32,[0,a(eL),[0,a(a1),0]]],__=a(p),_6=[0,a(dS),h6,5,h6,43,[0,a("Article R521-4"),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],_V=[0,a(U),[0,a(fm),[0,a(ai),0]]],_W=[0,a(U),[0,a(fm),0]],_X=[0,a(U),[0,a(fm),[0,a(ad),0]]],_Y=[0,a(U),[0,a(fm),0]],_Z=a(ep),_4=a(kf),_5=a(b4),_0=[0,a(U),[0,a(j6),[0,a(ai),0]]],_1=[0,a(U),[0,a(j6),0]],_2=[0,a(U),[0,a(j6),[0,a(ad),0]]],_3=[0,a(U),[0,a(j6),0]],_7=[0,a(I),i7,11,i7,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_U=[0,a(I),i7,11,i7,49,[0,a(J),[0,a(H),[0,a(B),0]]]],_R=[0,a(dS),fi,14,fi,46,[0,a(oY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],_K=a(cI),_L=[0,a(bs),268,5,qW,41,[0,a(fQ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],_H=a(cI),_I=a(ep),_J=a(cI),_M=[0,a(I),di,11,di,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_E=a(cI),_F=[0,a(bs),AC,5,280,40,[0,a(fQ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],_B=a(cI),_C=a(ep),_D=a(cI),_G=[0,a(I),di,11,di,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_N=[0,a(I),di,11,di,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_A=[0,a(bs),hZ,14,hZ,55,[0,a(fQ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],_z=a(p),_o=a(z),_p=[0,a(U),[0,a(bH),[0,a(ai),0]]],_q=[0,a(U),[0,a(bH),0]],_r=[0,a(U),[0,a(bH),[0,a(ad),0]]],_s=[0,a(U),[0,a(bH),0]],_t=[0,a(bs),gL,5,383,55,[0,a(kr),[0,a(eX),[0,a(gK),[0,a(dZ),[0,a(a9),[0,a(ae),0]]]]]]],_n=a("0.0369"),_u=[0,a(I),eQ,11,eQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],_g=a(z),_h=[0,a(U),[0,a(bH),[0,a(ai),0]]],_i=[0,a(U),[0,a(bH),0]],_j=[0,a(U),[0,a(bH),[0,a(ad),0]]],_k=[0,a(U),[0,a(bH),0]],_l=[0,a(bs),389,5,392,56,[0,a(kr),[0,a(eX),[0,a(gK),[0,a(dZ),[0,a(a9),[0,a(ae),0]]]]]]],_f=a("0.0567"),_m=[0,a(I),eQ,11,eQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],_v=[0,a(I),eQ,11,eQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],_e=[0,a(bs),22,14,22,40,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],_a=[0,a(U),[0,a(kb),[0,a(ai),0]]],_b=[0,a(U),[0,a(kb),0]],_c=[0,a(U),[0,a(kb),[0,a(ad),0]]],_d=[0,a(U),[0,a(kb),0]],_w=[0,a(I),eQ,11,eQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z$=[0,a(I),eQ,11,eQ,37,[0,a(J),[0,a(H),[0,a(B),0]]]],Z5=a(z),Z6=[0,a(bs),356,5,yY,69,[0,a(kr),[0,a(eX),[0,a(gK),[0,a(dZ),[0,a(a9),[0,a(ae),0]]]]]]],Z7=[0,a(I),dR,11,dR,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Z2=[8,0],Z3=[0,a(aW),hi,24,hi,44,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Z4=[0,a(I),dR,11,dR,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Z8=[0,a(I),dR,11,dR,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Z1=[0,a(bs),18,14,18,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],ZX=[0,a(bs),yd,14,yd,39,[0,a(fQ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],ZT=[0,a(U),[0,a(ki),[0,a(ai),0]]],ZU=[0,a(U),[0,a(ki),0]],ZV=[0,a(U),[0,a(ki),[0,a(ad),0]]],ZW=[0,a(U),[0,a(ki),0]],ZK=[0,a(U),[0,a(bH),[0,a(ai),0]]],ZL=[0,a(U),[0,a(bH),0]],ZM=[0,a(U),[0,a(bH),[0,a(ad),0]]],ZN=[0,a(U),[0,a(bH),0]],ZO=[0,a(bs),60,5,60,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],ZJ=a(rD),ZP=[0,a(I),cs,11,cs,47,[0,a(J),[0,a(H),[0,a(B),0]]]],ZD=[0,a(U),[0,a(bH),[0,a(ai),0]]],ZE=[0,a(U),[0,a(bH),0]],ZF=[0,a(U),[0,a(bH),[0,a(ad),0]]],ZG=[0,a(U),[0,a(bH),0]],ZH=[0,a(bs),fJ,5,fJ,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],ZC=a(Cq),ZI=[0,a(I),cs,11,cs,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zw=[0,a(U),[0,a(bH),[0,a(ai),0]]],Zx=[0,a(U),[0,a(bH),0]],Zy=[0,a(U),[0,a(bH),[0,a(ad),0]]],Zz=[0,a(U),[0,a(bH),0]],ZA=[0,a(bs),i$,5,i$,38,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],Zv=a(CE),ZB=[0,a(I),cs,11,cs,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zp=[0,a(U),[0,a(bH),[0,a(ai),0]]],Zq=[0,a(U),[0,a(bH),0]],Zr=[0,a(U),[0,a(bH),[0,a(ad),0]]],Zs=[0,a(U),[0,a(bH),0]],Zt=[0,a(a0),28,5,28,44,[0,a(eL),[0,a(a1),0]]],Zo=a(p),Zu=[0,a(I),cs,11,cs,47,[0,a(J),[0,a(H),[0,a(B),0]]]],ZQ=[0,a(I),cs,11,cs,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zn=[0,a(I),cs,11,cs,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zk=[0,a(dS),cs,14,cs,41,[0,a(oY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],Zi=a(b4),Zj=a(b4),Za=[8,0],Zb=[0,a(aW),FS,5,FS,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Y9=a(z),Y_=a(we),Y$=a(p),Zc=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y6=[8,0],Y7=[0,a(aW),Gj,5,Gj,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Y3=a(z),Y4=a("0.2379"),Y5=a(p),Y8=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Y0=[8,0],Y1=[0,a(aW),c4,5,c4,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],YX=a(z),YY=a("0.2437"),YZ=a(p),Y2=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YU=[8,0],YV=[0,a(aW),z2,5,z2,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],YR=a(z),YS=a("0.2496"),YT=a(p),YW=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YO=[8,0],YP=[0,a(aW),ok,5,ok,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],YL=a(z),YM=a("0.2555"),YN=a(p),YQ=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YI=[8,0],YJ=[0,a(aW),vi,5,vi,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],YF=a(z),YG=a("0.2613"),YH=a(p),YK=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],YC=[8,0],YD=[0,a(aW),xc,5,xc,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Yz=a(z),YA=a("0.2672"),YB=a(p),YE=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yw=[8,0],Yx=[0,a(aW),qZ,5,qZ,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Yt=a(z),Yu=a("0.2804"),Yv=a(p),Yy=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yq=[8,0],Yr=[0,a(aW),fY,5,fY,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Yn=a(z),Yo=a("0.2936"),Yp=a(p),Ys=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yk=[8,0],Yl=[0,a(aW),fL,5,fL,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Yh=a(z),Yi=a("0.3068"),Yj=a(p),Ym=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zd=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yf=[8,0],Yg=[0,a(aW),rH,14,rH,50,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Yc=a(z),Yd=a(sv),Ye=a(p),Ze=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X$=[0,a(bs),38,14,38,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],X8=a(z),X9=a(sv),X_=a(p),Ya=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X6=[0,a(bs),79,14,79,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],X3=a(z),X4=a(rD),X5=a(p),X7=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],X1=[0,a(bs),fT,14,fT,50,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],XY=a(z),XZ=a(Cq),X0=a(p),X2=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Yb=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XT=[0,a(bs),43,14,43,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],XP=a(X),XQ=a(X),XR=a("0.41"),XS=a(p),XU=[0,a(I),c5,11,c5,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XN=[0,a(bs),84,14,84,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],XJ=a(X),XK=a(X),XL=a("0.205"),XM=a(p),XO=[0,a(I),c5,11,c5,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XH=[0,a(bs),dG,14,dG,59,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],XD=a(X),XE=a(X),XF=a("0.1025"),XG=a(p),XI=[0,a(I),c5,11,c5,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Xy=[0,a(bs),Dh,5,Dh,42,[0,a(fQ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],Xx=a("0.20234"),Xz=[0,a(I),dG,11,dG,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xv=[0,a(bs),rl,5,236,45,[0,a(fQ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],Xu=a("0.10117"),Xw=[0,a(I),dG,11,dG,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xs=[0,a(bs),zs,5,zs,42,[0,a(fQ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],Xr=a("0.05059"),Xt=[0,a(I),dG,11,dG,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xk=a(cI),Xl=[0,a(bs),fb,5,166,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],Xh=a(cI),Xi=a(ep),Xj=a(cI),Xm=[0,a(I),eO,11,eO,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Xe=a(cI),Xf=[0,a(bs),174,5,175,65,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],Xb=a(cI),Xc=a(ep),Xd=a(cI),Xg=[0,a(I),eO,11,eO,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Xn=[0,a(I),eO,11,eO,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Xa=[0,a(bs),jw,14,jw,34,[0,a(cU),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],W$=a(p),Xo=[0,a(I),eO,11,eO,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W_=[0,a(I),eO,11,eO,31,[0,a(J),[0,a(H),[0,a(B),0]]]],W1=[0,a(U),[0,a(eM),[0,a(ai),0]]],W2=[0,a(U),[0,a(eM),0]],W3=[0,a(U),[0,a(eM),[0,a(ad),0]]],W4=[0,a(U),[0,a(eM),0]],W5=[0,a(bP),id,5,318,21,[0,a(Aj),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],W6=[0,a(I),dT,11,dT,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WS=[0,a(U),[0,a(eM),[0,a(ai),0]]],WT=[0,a(U),[0,a(eM),0]],WU=[0,a(U),[0,a(eM),[0,a(ad),0]]],WV=[0,a(U),[0,a(eM),0]],WW=[0,a(U),[0,a(kV),[0,a(ai),0]]],WX=[0,a(U),[0,a(kV),0]],WY=[0,a(U),[0,a(kV),[0,a(ad),0]]],WZ=[0,a(U),[0,a(kV),0]],W0=[0,a(bP),fp,5,dA,21,[0,a(Aj),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],W7=[0,a(I),dT,11,dT,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WR=[0,a(I),dT,11,dT,34,[0,a(J),[0,a(H),[0,a(B),0]]]],W8=[0,a(I),dT,11,dT,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WQ=[0,a(I),dT,11,dT,34,[0,a(J),[0,a(H),[0,a(B),0]]]],WH=a(z),WI=[8,0],WJ=[0,a(aW),x0,6,x0,71,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],WK=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WF=a(z),WG=[0,a(bP),r5,5,410,72,[0,a(r2),[0,a(eX),[0,a(kg),[0,a(dZ),[0,a(ab),[0,a(ae),0]]]]]]],WL=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WM=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WD=a(X),WE=[0,a(bP),fJ,5,fJ,70,[0,a(Gr),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],WN=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WC=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],Wu=[8,0],Wv=[0,a(aW),251,5,kd,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Wr=a(p),Ws=a("0.145"),Wt=a(p),Ww=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wo=[8,0],Wp=[0,a(aW),zR,5,261,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Wl=a(p),Wm=a("0.1393"),Wn=a(p),Wq=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wi=[8,0],Wj=[0,a(aW),AE,5,qW,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Wf=a(p),Wg=a("0.1335"),Wh=a(p),Wk=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wc=[8,0],Wd=[0,a(aW),AC,5,279,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],V$=a(p),Wa=a("0.1278"),Wb=a(p),We=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V8=[8,0],V9=[0,a(aW),287,5,288,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],V5=a(p),V6=a("0.122"),V7=a(p),V_=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],V2=[8,0],V3=[0,a(aW),d9,5,ee,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],VZ=a(p),V0=a("0.1163"),V1=a(p),V4=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VW=[8,0],VX=[0,a(aW),k5,5,306,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],VT=a(p),VU=a("0.1105"),VV=a(p),VY=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VQ=[8,0],VR=[0,a(aW),dF,5,id,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],VN=a(p),VO=a("0.0976"),VP=a(p),VS=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VK=[8,0],VL=[0,a(aW),323,5,fo,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],VH=a(p),VI=a("0.0847"),VJ=a(p),VM=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],VE=[8,0],VF=[0,a(aW),332,5,vy,53,[0,a(br),[0,a(ba),[0,a(bc),0]]]],VB=a(p),VC=a("0.0717"),VD=a(p),VG=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vy=[8,0],Vz=[0,a(aW),ng,5,ng,49,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Vv=a(p),Vw=a("5728"),Vx=a(p),VA=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Wx=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vt=[8,0],Vu=[0,a(aW),eH,14,eH,49,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],Vq=a(p),Vr=a(wo),Vs=a(p),Wy=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vn=a(z),Vo=[0,a(bs),dn,5,c4,71,[0,a(kr),[0,a(eX),[0,a(gK),[0,a(dZ),[0,a(a9),[0,a(ae),0]]]]]]],Vm=a(wo),Vp=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vl=[0,a(bs),rP,29,rP,64,[0,a(kr),[0,a(eX),[0,a(gK),[0,a(dZ),[0,a(a9),[0,a(ae),0]]]]]]],Vk=a(p),Vg=[0,a(dS),di,14,di,34,[0,a(oY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],U_=[0,a(U),[0,a(fm),[0,a(ai),0]]],U$=[0,a(U),[0,a(fm),0]],Va=[0,a(U),[0,a(fm),[0,a(ad),0]]],Vb=[0,a(U),[0,a(fm),0]],Vc=a(ep),Vd=a(kf),Ve=a(b4),Vf=a(b4),U6=[0,a(dS),CD,14,CD,34,[0,a(oY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],UZ=[8,0],U0=[0,a(aW),mf,5,mf,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],UW=a(X),UX=a(Cy),UY=a(p),U1=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UT=[8,0],UU=[0,a(aW),CQ,5,CQ,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],UQ=a(X),UR=a("0.0539"),US=a(p),UV=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UN=[8,0],UO=[0,a(aW),yt,5,yt,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],UK=a(X),UL=a("0.0615"),UM=a(p),UP=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UH=[8,0],UI=[0,a(aW),et,5,et,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],UE=a(X),UF=a("0.069"),UG=a(p),UJ=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],UB=[8,0],UC=[0,a(aW),CC,5,CC,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Uy=a(X),Uz=a("0.0766"),UA=a(p),UD=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uv=[8,0],Uw=[0,a(aW),yS,5,yS,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Us=a(X),Ut=a("0.0842"),Uu=a(p),Ux=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Up=[8,0],Uq=[0,a(aW),wH,5,wH,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Um=a(X),Un=a("0.0918"),Uo=a(p),Ur=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Uj=[8,0],Uk=[0,a(aW),v5,5,v5,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Ug=a(X),Uh=a("0.1089"),Ui=a(p),Ul=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Ud=[8,0],Ue=[0,a(aW),E3,5,E3,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],Ua=a(X),Ub=a("0.1259"),Uc=a(p),Uf=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T9=[8,0],T_=[0,a(aW),iQ,5,iQ,67,[0,a(br),[0,a(ba),[0,a(bc),0]]]],T6=a(X),T7=a("0.143"),T8=a(p),T$=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],U2=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T5=[0,a(aW),h6,14,h6,59,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],T2=a(X),T3=a(rD),T4=a(p),TY=[0,a(aW),iK,14,iK,67,[0,a(cG),[0,a(ba),[0,a(bc),0]]]],TU=a(_),TV=a(_),TW=a(Cy),TX=a(p),TN=a(z),TO=[0,a(bP),423,6,rC,72,[0,a(r2),[0,a(eX),[0,a(kg),[0,a(dZ),[0,a(ab),[0,a(ae),0]]]]]]],TP=[0,a(I),dw,11,dw,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TI=[0,a(co),[0,a(iU),[0,a(ai),0]]],TJ=[0,a(co),[0,a(iU),0]],TK=[0,a(co),[0,a(iU),[0,a(ad),0]]],TL=[0,a(co),[0,a(iU),0]],TM=[0,a(bP),rV,5,dT,59,[0,a(Gr),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],TQ=[0,a(I),dw,11,dw,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TH=[0,a(I),dw,11,dw,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TR=[0,a(I),dw,11,dw,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TG=[0,a(I),dw,11,dw,35,[0,a(J),[0,a(H),[0,a(B),0]]]],TA=a(z),TB=[0,a(bP),gr,5,gP,71,[0,a(r2),[0,a(eX),[0,a(kg),[0,a(dZ),[0,a(ab),[0,a(ae),0]]]]]]],TC=[0,a(I),eP,11,eP,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tz=[0,a(a0),31,9,31,32,[0,a(eL),[0,a(a1),0]]],TD=[0,a(I),eP,11,eP,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Ty=[0,a(I),eP,11,eP,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Ts=[0,a(aW),23,5,23,67,[0,a(Gc),[0,a(f3),0]]],Tq=a(EZ),Tr=a("5628600"),Tt=[0,a(I),cP,11,cP,27,[0,a(J),[0,a(H),[0,a(B),0]]]],To=[0,a(aW),56,5,56,67,[0,a(vm),[0,a(f3),0]]],Tm=a(FT),Tn=a("5684900"),Tp=[0,a(I),cP,11,cP,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tk=[0,a(aW),89,5,89,67,[0,a(wO),[0,a(f3),0]]],Ti=a(E7),Tj=a("5775900"),Tl=[0,a(I),cP,11,cP,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tg=[0,a(aW),bq,5,bq,67,[0,a(b5),[0,a(C$),[0,a(f3),0]]]],Te=a(wq),Tf=a("5827900"),Th=[0,a(I),cP,11,cP,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tu=[0,a(I),cP,11,cP,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Td=[0,a(bs),EF,14,EF,30,[0,a(DI),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],Tb=a(AW),Tc=a("5595000"),S7=[0,a(aW),30,5,30,67,[0,a(Gc),[0,a(f3),0]]],S5=a(EZ),S6=a("7877000"),S8=[0,a(I),c6,11,c6,28,[0,a(J),[0,a(H),[0,a(B),0]]]],S3=[0,a(aW),63,5,63,67,[0,a(vm),[0,a(f3),0]]],S1=a(FT),S2=a("7955800"),S4=[0,a(I),c6,11,c6,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SZ=[0,a(aW),96,5,96,67,[0,a(wO),[0,a(f3),0]]],SX=a(E7),SY=a("8083100"),S0=[0,a(I),c6,11,c6,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SV=[0,a(aW),i7,5,i7,67,[0,a(b5),[0,a(C$),[0,a(f3),0]]]],ST=a(wq),SU=a("8155800"),SW=[0,a(I),c6,11,c6,28,[0,a(J),[0,a(H),[0,a(B),0]]]],S9=[0,a(I),c6,11,c6,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SS=[0,a(bs),dF,14,dF,31,[0,a(DI),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],SQ=a(AW),SR=a("7830000"),SM=[0,a(a0),34,14,34,36,[0,a(eL),[0,a(a1),0]]],SN=[0,a(I),hy,11,hy,33,[0,a(J),[0,a(H),[0,a(B),0]]]],SL=[0,a(I),hy,11,hy,33,[0,a(J),[0,a(H),[0,a(B),0]]]],SI=[0,a(bP),75,14,75,64,[0,a(gy),[0,a(gt),[0,a(eb),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],SE=[0,a(co),[0,a(dl),[0,a(ai),0]]],SF=[0,a(co),[0,a(dl),0]],SG=[0,a(co),[0,a(dl),[0,a(ad),0]]],SH=[0,a(co),[0,a(dl),0]],Sz=[0,a(dS),83,19,83,67,[0,a(nM),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],SA=[0,a(I),hQ,11,hQ,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sy=[0,a(dS),56,14,56,41,[0,a(nM),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],SB=[0,a(I),hQ,11,hQ,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Sx=[0,a(I),hQ,11,hQ,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Ss=[0,a(a0),33,14,33,40,[0,a(eL),[0,a(a1),0]]],Sm=[0,a(I),fb,14,fb,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Si=[0,a(I),h$,14,h$,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Sh=[1,0],Sd=[0,a(I),f9,14,f9,50,[0,a(J),[0,a(H),[0,a(B),0]]]],R9=[0,a(I),eH,14,eH,32,[0,a(J),[0,a(H),[0,a(B),0]]]],R3=[0,a(dS),64,14,64,44,[0,a(nM),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],R2=a(_),RY=[0,a(bs),dm,14,dm,35,[0,a(fQ),[0,a(aN),[0,a(aP),[0,a(az),[0,a(a9),[0,a(ae),0]]]]]]],RX=a(_),RS=[0,a(bP),rr,5,zR,56,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],RR=[1,0],RT=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RM=[0,a(bP),qW,5,271,48,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],RL=[0,0],RN=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RK=[0,a(bP),FR,5,FR,70,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],RJ=[0,0],RO=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RI=[0,a(bP),C7,5,C7,69,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],RH=[0,0],RP=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RG=[0,a(bP),oo,5,oo,60,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],RF=[0,0],RQ=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RU=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RE=[0,a(I),98,11,98,20,[0,a(J),[0,a(H),[0,a(B),0]]]],RA=[0,a(bP),n2,5,n2,70,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Rz=[1,0],RB=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rx=[0,a(bP),j$,5,m8,56,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Rw=[2,0],Ry=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rs=[0,a(bP),264,5,rv,48,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Rr=[0,0],Rt=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rq=[0,a(bP),yj,5,yj,69,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Rp=[0,0],Ru=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Ro=[0,a(bP),An,5,An,60,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Rn=[0,0],Rv=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],RC=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],Rm=[0,a(I),97,11,97,26,[0,a(J),[0,a(H),[0,a(B),0]]]],RD=[0,a(U),[0,a(fm),0]],RV=[0,a(U),[0,a("versement"),0]],RZ=[0,a(I),hi,11,hi,32,[0,a(J),[0,a(H),[0,a(B),0]]]],RW=[0,a(I),hi,11,hi,32,[0,a(J),[0,a(H),[0,a(B),0]]]],R0=[0,a(U),[0,a("nombre_enfants_l521_1"),0]],R4=[0,a(I),oC,11,oC,41,[0,a(J),[0,a(H),[0,a(B),0]]]],R1=[0,a(I),oC,11,oC,41,[0,a(J),[0,a(H),[0,a(B),0]]]],R5=[0,a(U),[0,a("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],R6=[0,a(U),[0,a(wY),[0,a(rf),0]]],R7=[0,a(U),[0,a(wY),[0,a(rf),0]]],R_=[0,a(I),eH,14,eH,32,[0,a(J),[0,a(H),[0,a(B),0]]]],R$=[0,a(U),[0,a("bmaf.date_courante"),0]],R8=[0,a(I),eH,14,eH,32,[0,a(J),[0,a(H),[0,a(B),0]]]],Sa=[0,a(U),[0,a(A_),[0,a(f4),0]]],Sb=[0,a(U),[0,a(A_),[0,a(f4),0]]],Se=[0,a(I),f9,14,f9,50,[0,a(J),[0,a(H),[0,a(B),0]]]],Sf=[0,a(U),[0,a(xf),0]],Sc=[0,a(I),f9,14,f9,50,[0,a(J),[0,a(H),[0,a(B),0]]]],Sj=[0,a(I),h$,14,h$,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Sk=[0,a(U),[0,a(Bw),0]],Sg=[0,a(I),h$,14,h$,56,[0,a(J),[0,a(H),[0,a(B),0]]]],Sn=[0,a(I),fb,14,fb,46,[0,a(J),[0,a(H),[0,a(B),0]]]],So=[0,a(U),[0,a(y5),0]],Sl=[0,a(I),fb,14,fb,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Sp=[0,a(U),[0,a(oQ),[0,a(co),0]]],Sq=[0,a(U),[0,a(oQ),[0,a(co),0]]],St=[0,a(a0),33,14,33,40,[0,a(eL),[0,a(a1),0]]],Su=[0,a(U),[0,a("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],Sr=[0,a(a0),33,14,33,40,[0,a(eL),[0,a(a1),0]]],Sv=[0,a(U),[0,a(Dp),[0,a(rq),0]]],Sw=[0,a(U),[0,a(Dp),[0,a(rq),0]]],SC=[0,a(U),[0,a(eM),0]],SJ=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],SD=[0,a(I),95,11,95,61,[0,a(J),[0,a(H),[0,a(B),0]]]],SK=[0,a(U),[0,a("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],SO=[0,a(U),[0,a(kV),0]],S_=[0,a(I),c6,11,c6,28,[0,a(J),[0,a(H),[0,a(B),0]]]],SP=[0,a(I),c6,11,c6,28,[0,a(J),[0,a(H),[0,a(B),0]]]],S$=[0,a(U),[0,a("plafond_II_d521_3"),0]],Tv=[0,a(I),cP,11,cP,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Ta=[0,a(I),cP,11,cP,27,[0,a(J),[0,a(H),[0,a(B),0]]]],Tw=[0,a(U),[0,a("plafond_I_d521_3"),0]],TE=[0,a(I),eP,11,eP,34,[0,a(J),[0,a(H),[0,a(B),0]]]],Tx=[0,a(I),eP,11,eP,34,[0,a(J),[0,a(H),[0,a(B),0]]]],TF=[0,a(U),[0,a("droit_ouvert_compl\xc3\xa9ment"),0]],TS=[0,a(U),[0,a(ki),0]],TZ=[0,a(I),fT,11,fT,64,[0,a(J),[0,a(H),[0,a(B),0]]]],TT=[0,a(I),fT,11,fT,64,[0,a(J),[0,a(H),[0,a(B),0]]]],T0=[0,a(U),[0,a("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],U3=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],T1=[0,a(I),bq,11,bq,56,[0,a(J),[0,a(H),[0,a(B),0]]]],U4=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],U7=[0,a(I),ig,11,ig,31,[0,a(J),[0,a(H),[0,a(B),0]]]],U5=[0,a(I),ig,11,ig,31,[0,a(J),[0,a(H),[0,a(B),0]]]],U8=[0,a(U),[0,a("nombre_total_enfants"),0]],Vh=[0,a(I),n6,11,n6,31,[0,a(J),[0,a(H),[0,a(B),0]]]],U9=[0,a(I),n6,11,n6,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Vi=[0,a(U),[0,a("nombre_moyen_enfants"),0]],Wz=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],Vj=[0,a(I),be,11,be,46,[0,a(J),[0,a(H),[0,a(B),0]]]],WA=[0,a(U),[0,a("montant_initial_base_premier_enfant"),0]],WO=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WB=[0,a(I),cJ,11,cJ,28,[0,a(J),[0,a(H),[0,a(B),0]]]],WP=[0,a(U),[0,a("droit_ouvert_base"),0]],W9=[0,a(U),[0,a(bH),0]],Xp=[0,a(U),[0,a(k0),0]],XA=[0,a(I),dG,11,dG,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Xq=[0,a(I),dG,11,dG,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XB=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],XV=[0,a(I),c5,11,c5,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XC=[0,a(I),c5,11,c5,56,[0,a(J),[0,a(H),[0,a(B),0]]]],XW=[0,a(U),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],Zf=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],XX=[0,a(I),a_,11,a_,47,[0,a(J),[0,a(H),[0,a(B),0]]]],Zg=[0,a(U),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],Zl=[0,a(I),mM,11,mM,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Zh=[0,a(I),mM,11,mM,38,[0,a(J),[0,a(H),[0,a(B),0]]]],Zm=[0,a(U),[0,a("rapport_enfants_total_moyen"),0]],ZR=[0,a(U),[0,a(kb),0]],ZY=[0,a(I),dz,11,dz,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZS=[0,a(I),dz,11,dz,36,[0,a(J),[0,a(H),[0,a(B),0]]]],ZZ=[0,a(U),[0,a("montant_vers\xc3\xa9_forfaitaire"),0]],Z9=[0,a(I),dR,11,dR,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Z0=[0,a(I),dR,11,dR,31,[0,a(J),[0,a(H),[0,a(B),0]]]],Z_=[0,a(U),[0,a("montant_initial_base"),0]],_x=[0,a(U),[0,a(j6),0]],_O=[0,a(I),di,11,di,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_y=[0,a(I),di,11,di,52,[0,a(J),[0,a(H),[0,a(B),0]]]],_P=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],_S=[0,a(I),k3,11,k3,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_Q=[0,a(I),k3,11,k3,43,[0,a(J),[0,a(H),[0,a(B),0]]]],_T=[0,a(U),[0,a("montant_avec_garde_altern\xc3\xa9e_base"),0]],_8=[0,a(U),[0,a(ka),0]],$a=[0,a(I),k2,11,k2,29,[0,a(J),[0,a(H),[0,a(B),0]]]],_9=[0,a(I),k2,11,k2,29,[0,a(J),[0,a(H),[0,a(B),0]]]],$b=[0,a(U),[0,a("montant_vers\xc3\xa9_base"),0]],$k=[0,a(I),nC,11,nC,35,[0,a(J),[0,a(H),[0,a(B),0]]]],$c=[0,a(I),nC,11,nC,35,[0,a(J),[0,a(H),[0,a(B),0]]]],$l=[0,a(U),[0,a("montant_vers\xc3\xa9_majoration"),0]],$o=[0,a(I),i$,11,i$,58,[0,a(J),[0,a(H),[0,a(B),0]]]],$m=[0,a(I),i$,11,i$,58,[0,a(J),[0,a(H),[0,a(B),0]]]],$p=[0,a(U),[0,a("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$x=[0,a(I),n5,11,n5,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$q=[0,a(I),n5,11,n5,59,[0,a(J),[0,a(H),[0,a(B),0]]]],$y=[0,a(U),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],$C=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$z=[0,a(I),cd,12,cd,25,[0,a(J),[0,a(H),[0,a(B),0]]]],$D=[0,a(U),[0,a("montant_vers\xc3\xa9"),0]],$E=[0,a(bP),xh,5,rl,6,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],$F=[0,a(bP),xh,5,rl,6,[0,a(dY),[0,a(aN),[0,a(aP),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Rh=[0,a("examples/allocations_familiales/autres_codes.catala_fr"),24,5,24,63,[0,a("Article L821-3"),[0,a(Aa),[0,a(E$),[0,a(yw),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]]]],Ri=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Rd=[0,a(bP),60,5,62,62,[0,a(gy),[0,a(gt),[0,a(eb),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Re=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Rc=[0,a(bP),49,5,50,50,[0,a(gy),[0,a(gt),[0,a(eb),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Rf=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Rg=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Rj=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Rb=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Rk=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Ra=[0,a(I),57,12,57,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q8=[0,a(bP),68,5,71,56,[0,a(gy),[0,a(gt),[0,a(eb),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],Q9=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q7=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q_=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q6=[0,a(I),58,12,58,31,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q2=[0,a(dS),n2,18,n2,41,[0,a(xK),[0,a(eX),[0,a(gK),[0,a(dZ),[0,a(c9),[0,a(ae),0]]]]]]],Q0=a(oT),Q1=a(n7),Q3=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QZ=[0,a(dS),31,14,31,30,[0,a(l6),[0,a(nX),[0,a(eb),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],QX=a(oT),QY=a(n7),QM=[5,0],QN=[4,0],QO=[3,0],QP=[2,0],QQ=[1,0],QR=[0,0],QS=[0,a(bP),yY,5,rP,30,[0,a(CS),[0,a(yF),[0,a(kg),[0,a(dZ),[0,a(ab),[0,a(ae),0]]]]]]],QT=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],QL=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],QF=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],QB=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qx=[0,a(dS),21,14,21,26,[0,a(l6),[0,a(nX),[0,a(eb),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],Qy=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qw=[0,a(I),60,12,60,24,[0,a(bE),[0,a(H),[0,a(B),0]]]],Qz=[0,a(co),[0,a(zd),0]],QC=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],QD=[0,a(co),[0,a(Fj),0]],QA=[0,a(I),69,14,69,32,[0,a(bE),[0,a(H),[0,a(B),0]]]],QG=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],QH=[0,a(co),[0,a(DN),0]],QE=[0,a(I),68,14,68,28,[0,a(bE),[0,a(H),[0,a(B),0]]]],QI=[0,a(co),[0,a(f8),[0,a(hp),0]]],QJ=[0,a(co),[0,a(f8),[0,a(hp),0]]],QU=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],QK=[0,a(I),61,12,61,35,[0,a(bE),[0,a(H),[0,a(B),0]]]],QV=[0,a(co),[0,a(vn),0]],Q4=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],QW=[0,a(I),59,11,59,27,[0,a(bE),[0,a(H),[0,a(B),0]]]],Q5=[0,a(co),[0,a(Aq),0]],Q$=[0,a(co),[0,a(iU),0]],Rl=[0,a(co),[0,a(dl),0]],Qs=[0,a(ez),28,5,29,33,[0,a(Cw),[0,a(cf),0]]],Qr=a(xR),Qt=[0,a(ez),6,12,6,19,[0,a(cf),0]],Qp=[0,a(ez),48,5,49,33,[0,a(AR),[0,a(cf),0]]],Qo=a(xs),Qq=[0,a(ez),6,12,6,19,[0,a(cf),0]],Qm=[0,a(ez),64,5,65,33,[0,a(Ci),[0,a(cf),0]]],Ql=a(B8),Qn=[0,a(ez),6,12,6,19,[0,a(cf),0]],Qj=[0,a(ez),82,5,83,33,[0,a(w0),[0,a(cf),0]]],Qi=a(B2),Qk=[0,a(ez),6,12,6,19,[0,a(cf),0]],Qu=[0,a(ez),6,12,6,19,[0,a(cf),0]],Qh=[0,a(ez),6,12,6,19,[0,a(cf),0]],Qv=[0,a(f4),[0,a(bQ),0]],P7=[7,0],P8=[5,0],P9=[4,0],P_=[3,0],P$=[2,0],Qa=[1,0],Qb=[0,0],Qc=[6,0],Qd=[0,a(bu),29,5,38,6,[0,a(b5),[0,a(l4),[0,a(aC),0]]]],P6=a(wR),Qe=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],P3=[8,0],P4=[0,a(bu),47,5,49,6,[0,a(b5),[0,a(l4),[0,a(aC),0]]]],P2=a(xO),P5=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PS=[7,0],PT=[5,0],PU=[4,0],PV=[3,0],PW=[2,0],PX=[1,0],PY=[0,0],PZ=[6,0],P0=[0,a(bu),68,5,77,6,[0,a(b5),[0,a(nU),[0,a(aC),0]]]],PR=a(AX),P1=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PO=[8,0],PP=[0,a(bu),86,5,88,6,[0,a(b5),[0,a(nU),[0,a(aC),0]]]],PN=a(ve),PQ=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],PD=[7,0],PE=[5,0],PF=[4,0],PG=[3,0],PH=[2,0],PI=[1,0],PJ=[0,0],PK=[6,0],PL=[0,a(bu),c5,5,bq,6,[0,a(b5),[0,a(l9),[0,a(aC),0]]]],PC=a(BA),PM=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pz=[8,0],PA=[0,a(bu),fi,5,hv,6,[0,a(b5),[0,a(l9),[0,a(aC),0]]]],Py=a(EO),PB=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Po=[7,0],Pp=[5,0],Pq=[4,0],Pr=[3,0],Ps=[2,0],Pt=[1,0],Pu=[0,0],Pv=[6,0],Pw=[0,a(bu),o_,5,hy,6,[0,a(b5),[0,a(nq),[0,a(aC),0]]]],Pn=a(BT),Px=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Pk=[8,0],Pl=[0,a(bu),fb,5,eH,6,[0,a(b5),[0,a(nq),[0,a(aC),0]]]],Pj=a(w5),Pm=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],O$=[7,0],Pa=[5,0],Pb=[4,0],Pc=[3,0],Pd=[2,0],Pe=[1,0],Pf=[0,0],Pg=[6,0],Ph=[0,a(bu),h6,5,iK,6,[0,a(fS),[0,a(mT),[0,a(aC),0]]]],O_=a(zU),Pi=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],O7=[8,0],O8=[0,a(bu),w9,5,yI,6,[0,a(fS),[0,a(mT),[0,a(aC),0]]]],O6=a(EN),O9=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OW=[7,0],OX=[5,0],OY=[4,0],OZ=[3,0],O0=[2,0],O1=[1,0],O2=[0,0],O3=[6,0],O4=[0,a(bu),vN,5,Fa,6,[0,a(fS),[0,a(or),[0,a(aC),0]]]],OV=a(Ev),O5=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OS=[8,0],OT=[0,a(bu),Fi,5,vJ,6,[0,a(fS),[0,a(or),[0,a(aC),0]]]],OR=a(Ft),OU=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OH=[7,0],OI=[5,0],OJ=[4,0],OK=[3,0],OL=[2,0],OM=[1,0],ON=[0,0],OO=[6,0],OP=[0,a(bu),rv,5,nY,6,[0,a(b5),[0,a(ne),[0,a(aC),0]]]],OG=a(v$),OQ=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OD=[8,0],OE=[0,a(bu),Bi,5,nn,6,[0,a(b5),[0,a(ne),[0,a(aC),0]]]],OC=a(zT),OF=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Qf=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],OB=[0,a(bu),11,12,11,24,[0,a(B),[0,a(aC),0]]],Qg=[0,a(hp),[0,a(Ac),0]],Oy=[0,a(a0),12,14,12,25,[0,a(eL),[0,a(a1),0]]],Ou=[2,0],Ov=a(p),Ow=[1,0],Ox=a("-1"),Oz=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],Ot=[0,a(I),80,12,80,23,[0,a(J),[0,a(H),[0,a(B),0]]]],OA=[0,a(rq),[0,a("le_plus_\xc3\xa2g\xc3\xa9"),0]],Oq=[0,a(dS),78,14,78,41,[0,a(nM),[0,a(aN),[0,a(aP),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],Or=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Op=[0,a(I),76,12,76,39,[0,a(J),[0,a(H),[0,a(B),0]]]],Os=[0,a(rf),[0,a(eM),0]],Oh=a(qN),Oi=a(q1),Oj=a(E9),Ok=a(q9),Ol=a(q_),Om=a(rI),On=a(rB),Oo=[0,a("Enfant"),0],N9=a(mH),N$=a(oA),Oa=a(mj),Ob=a(Dz),Oc=a(yZ),Od=a(pb),Oe=a(C9),Of=a(nv),Og=a(oM),N_=[0,a(B3),0],N0=a(on),N2=a(U),N3=a(q0),N4=a(n4),N5=a(DZ),N6=a(iX),N7=a(B0),N8=a(y4),N1=[0,a(F1),0],NV=a("Compl\xc3\xa8te"),NX=a("Partag\xc3\xa9e"),NY=a("Z\xc3\xa9ro"),NW=[0,a("PriseEnCompte"),0],NR=a(kv),NT=a(kk),NU=a(Cp),NS=[0,a(C1),0],NL=a(Bc),NN=a(D_),NO=a(j8),NP=a(FC),NQ=a(yP),NM=[0,a("PriseEnCharge"),0],abp=a(aa),aa1=a(mH),aa2=a(oA),aa3=a(wy),aa4=a(mj),aa5=a(oM),aa6=a(Fu),aa7=a(xm),aa8=a(pb),aa9=a(nv),aa$=[7,0],aba=[5,0],abb=[4,0],abc=[6,0],abd=[8,0],abe=[2,0],abf=[3,0],abg=[1,0],abh=[0,0],aa_=[0,[11,a(bg),[2,0,[11,a(BY),0]]],a(wT)],aaK=a(v3),aaL=a(yc),aaM=a(n4),aaN=a(EK),aaO=a(iX),aaP=a(U),aaQ=a(qA),aaR=a(on),aaT=[0,0],aaU=[2,0],aaV=[1,0],aaW=[5,0],aaX=[6,0],aaY=[3,0],aaZ=[7,0],aa0=[4,0],aaS=[0,[11,a(bg),[2,0,[11,a(D$),0]]],a(F3)],aaD=a(r7),aaE=a(kv),aaF=a(kk),aaH=[1,0],aaI=[0,0],aaJ=[2,0],aaG=[0,[11,a(bg),[2,0,[11,a(x7),0]]],a(wD)],aas=a(j8),aat=a(rh),aau=a(qV),aav=a(rz),aaw=a(qS),aay=[4,0],aaz=[3,0],aaA=[0,0],aaB=[1,0],aaC=[2,0],aax=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnCharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")],aaq=[0,a(Ch),a(o6),a(f8),a(DJ),a(FX),a(v9),a(xo)],aar=[0,a(f8),a(v9),a(FX),a(xo),a(o6),a(Ch),a(DJ)],abx=a("AllocationsFamilialesLib"),bud=[0,a(e$),zY,14,zY,25,[0,a("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"),0]],bt8=a(p),bt9=a(p),buc=a(b4),bt_=[0,a(a6),[0,a(aw),[0,a(ai),0]]],bt$=[0,a(a6),[0,a(aw),0]],bua=[0,a(a6),[0,a(aw),[0,a(ad),0]]],bub=[0,a(a6),[0,a(aw),0]],bt4=[0,a(d),vk,14,vk,63,[0,a(bf),[0,a(e),0]]],bt0=[0,a(d),q6,14,q6,25,[0,a(bf),[0,a(e),0]]],btU=[0,a(d),ix,5,ix,70,[0,a(bf),[0,a(e),0]]],btQ=[0,a(d),hB,14,hB,58,[0,a(bf),[0,a(e),0]]],btM=[0,a(d),hC,14,hC,54,[0,a(bf),[0,a(e),0]]],btI=[0,a(d),iu,14,iu,51,[0,a(bf),[0,a(e),0]]],btC=[0,a(d),fj,14,fj,59,[0,a(bf),[0,a(e),0]]],bty=[0,a(d),il,14,il,38,[0,a(bf),[0,a(e),0]]],btu=[0,a(d),hJ,14,hJ,34,[0,a(bf),[0,a(e),0]]],btq=[0,a(d),ih,14,ih,31,[0,a(bf),[0,a(e),0]]],btm=[0,a(d),A3,14,A3,48,[0,a(bf),[0,a(e),0]]],btn=[0,a(d),l5,11,l5,45,[0,a(bf),[0,a(e),0]]],btl=[0,a(d),l5,11,l5,45,[0,a(bf),[0,a(e),0]]],bto=[0,a(cO),[0,a("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"),0]],btr=[0,a(d),ih,14,ih,31,[0,a(bf),[0,a(e),0]]],bts=[0,a(cO),[0,a("calculette.m\xc3\xa9nage"),0]],btp=[0,a(d),ih,14,ih,31,[0,a(bf),[0,a(e),0]]],btv=[0,a(d),hJ,14,hJ,34,[0,a(bf),[0,a(e),0]]],btw=[0,a(cO),[0,a("calculette.demandeur"),0]],btt=[0,a(d),hJ,14,hJ,34,[0,a(bf),[0,a(e),0]]],btz=[0,a(d),il,14,il,38,[0,a(bf),[0,a(e),0]]],btA=[0,a(cO),[0,a("calculette.date_courante"),0]],btx=[0,a(d),il,14,il,38,[0,a(bf),[0,a(e),0]]],btD=[0,a(d),fj,14,fj,59,[0,a(bf),[0,a(e),0]]],btE=[0,a(cO),[0,a("calculette.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btB=[0,a(d),fj,14,fj,59,[0,a(bf),[0,a(e),0]]],btF=[0,a(cO),[0,a(D9),[0,a(a6),0]]],btG=[0,a(cO),[0,a(D9),[0,a(a6),0]]],btJ=[0,a(d),iu,14,iu,51,[0,a(bf),[0,a(e),0]]],btK=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"),0]],btH=[0,a(d),iu,14,iu,51,[0,a(bf),[0,a(e),0]]],btN=[0,a(d),hC,14,hC,54,[0,a(bf),[0,a(e),0]]],btO=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.demandeur"),0]],btL=[0,a(d),hC,14,hC,54,[0,a(bf),[0,a(e),0]]],btR=[0,a(d),hB,14,hB,58,[0,a(bf),[0,a(e),0]]],btS=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.date_courante"),0]],btP=[0,a(d),hB,14,hB,58,[0,a(bf),[0,a(e),0]]],btV=[0,a(d),ix,5,ix,70,[0,a(bf),[0,a(e),0]]],btW=[0,a(cO),[0,a("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"),0]],btT=[0,a(d),ix,5,ix,70,[0,a(bf),[0,a(e),0]]],btX=[0,a(cO),[0,a(wZ),[0,a(a6),0]]],btY=[0,a(cO),[0,a(wZ),[0,a(a6),0]]],bt1=[0,a(d),nS,12,nS,23,[0,a(bf),[0,a(e),0]]],btZ=[0,a(d),nS,12,nS,23,[0,a(bf),[0,a(e),0]]],bt2=[0,a(cO),[0,a(ob),0]],bt5=[0,a(d),nO,11,nO,60,[0,a(bf),[0,a(e),0]]],bt3=[0,a(d),nO,11,nO,60,[0,a(bf),[0,a(e),0]]],bt6=[0,a(cO),[0,a(kL),0]],bue=[0,a(d),oE,12,oE,23,[0,a(bf),[0,a(e),0]]],bt7=[0,a(d),oE,12,oE,23,[0,a(bf),[0,a(e),0]]],buf=[0,a(cO),[0,a("aide_finale"),0]],bth=[0,a(aG),FL,14,FL,33,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bs_=a(p),bs$=[0,a(cR),[0,a(aw),[0,a(ai),0]]],bta=[0,a(cR),[0,a(aw),0]],btb=[0,a(cR),[0,a(aw),[0,a(ad),0]]],btc=[0,a(cR),[0,a(aw),0]],btd=[0,a(cS),[0,a(aw),[0,a(ai),0]]],bte=[0,a(cS),[0,a(aw),0]],btf=[0,a(cS),[0,a(aw),[0,a(ad),0]]],btg=[0,a(cS),[0,a(aw),0]],bs6=[0,a(aG),f2,14,f2,36,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsY=[0,a(cS),[0,a(aw),[0,a(ai),0]]],bsZ=[0,a(cS),[0,a(aw),0]],bs0=[0,a(cS),[0,a(aw),[0,a(ad),0]]],bs1=[0,a(cS),[0,a(aw),0]],bs2=[0,a(cR),[0,a(aw),[0,a(ai),0]]],bs3=[0,a(cR),[0,a(aw),0]],bs4=[0,a(cR),[0,a(aw),[0,a(ad),0]]],bs5=[0,a(cR),[0,a(aw),0]],bs7=[0,a(d),nT,12,nT,34,[0,a(ay),[0,a(e),0]]],bsX=[0,a(d),nT,12,nT,34,[0,a(ay),[0,a(e),0]]],bsU=[0,a(aG),zD,14,zD,25,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsQ=[0,a(d),xU,14,xU,63,[0,a(ay),[0,a(e),0]]],bsK=[0,a(d),jm,14,jm,62,[0,a(ay),[0,a(e),0]]],bsG=[0,a(d),h0,14,h0,53,[0,a(ay),[0,a(e),0]]],bsC=[0,a(d),jb,5,jb,65,[0,a(ay),[0,a(e),0]]],bsy=[0,a(d),js,14,js,68,[0,a(ay),[0,a(e),0]]],bsu=[0,a(d),f2,14,f2,66,[0,a(ay),[0,a(e),0]]],bsq=[0,a(aG),gR,14,gR,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsp=[0,0],bsl=[0,a(d),h_,14,h_,64,[0,a(ay),[0,a(e),0]]],bsf=[0,a(aG),gu,14,gu,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsc=[2,0],bsd=[1,0],bse=[2,0],br_=[0,a(d),iJ,14,iJ,54,[0,a(ay),[0,a(e),0]]],br6=[0,a(d),i2,14,i2,45,[0,a(ay),[0,a(e),0]]],br2=[0,a(d),hz,14,hz,66,[0,a(ay),[0,a(e),0]]],brY=[0,a(d),gx,14,gx,60,[0,a(ay),[0,a(e),0]]],brU=[0,a(d),gv,14,gv,58,[0,a(ay),[0,a(e),0]]],brQ=[0,a(d),i5,14,i5,56,[0,a(ay),[0,a(e),0]]],brK=[0,a(d),hR,14,hR,67,[0,a(ay),[0,a(e),0]]],brG=[0,a(d),iz,14,iz,63,[0,a(ay),[0,a(e),0]]],brC=[0,a(d),jr,14,jr,60,[0,a(ay),[0,a(e),0]]],brw=[0,a(aG),h8,5,h8,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],brs=[0,a(d),jf,14,jf,55,[0,a(ay),[0,a(e),0]]],bro=[0,a(d),he,14,he,52,[0,a(ay),[0,a(e),0]]],brk=[0,a(d),hn,14,hn,59,[0,a(ay),[0,a(e),0]]],brl=[0,a(d),hn,14,hn,59,[0,a(ay),[0,a(e),0]]],brm=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"),0]],brj=[0,a(d),hn,14,hn,59,[0,a(ay),[0,a(e),0]]],brp=[0,a(d),he,14,he,52,[0,a(ay),[0,a(e),0]]],brq=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"),0]],brn=[0,a(d),he,14,he,52,[0,a(ay),[0,a(e),0]]],brt=[0,a(d),jf,14,jf,55,[0,a(ay),[0,a(e),0]]],bru=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"),0]],brr=[0,a(d),jf,14,jf,55,[0,a(ay),[0,a(e),0]]],brx=[0,a(aG),h8,5,h8,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bry=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"),0]],brv=[0,a(aG),h8,5,h8,74,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],brz=[0,a(a6),[0,a(u9),[0,a(cb),0]]],brA=[0,a(a6),[0,a(u9),[0,a(cb),0]]],brD=[0,a(d),jr,14,jr,60,[0,a(ay),[0,a(e),0]]],brE=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"),0]],brB=[0,a(d),jr,14,jr,60,[0,a(ay),[0,a(e),0]]],brH=[0,a(d),iz,14,iz,63,[0,a(ay),[0,a(e),0]]],brI=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"),0]],brF=[0,a(d),iz,14,iz,63,[0,a(ay),[0,a(e),0]]],brL=[0,a(d),hR,14,hR,67,[0,a(ay),[0,a(e),0]]],brM=[0,a(a6),[0,a("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],brJ=[0,a(d),hR,14,hR,67,[0,a(ay),[0,a(e),0]]],brN=[0,a(a6),[0,a(Df),[0,a(b7),0]]],brO=[0,a(a6),[0,a(Df),[0,a(b7),0]]],brR=[0,a(d),i5,14,i5,56,[0,a(ay),[0,a(e),0]]],brS=[0,a(a6),[0,a("calcul_allocation_logement.mode_occupation"),0]],brP=[0,a(d),i5,14,i5,56,[0,a(ay),[0,a(e),0]]],brV=[0,a(d),gv,14,gv,58,[0,a(ay),[0,a(e),0]]],brW=[0,a(a6),[0,a("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],brT=[0,a(d),gv,14,gv,58,[0,a(ay),[0,a(e),0]]],brZ=[0,a(d),gx,14,gx,60,[0,a(ay),[0,a(e),0]]],br0=[0,a(a6),[0,a("calcul_allocation_logement.situation_familiale"),0]],brX=[0,a(d),gx,14,gx,60,[0,a(ay),[0,a(e),0]]],br3=[0,a(d),hz,14,hz,66,[0,a(ay),[0,a(e),0]]],br4=[0,a(a6),[0,a("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"),0]],br1=[0,a(d),hz,14,hz,66,[0,a(ay),[0,a(e),0]]],br7=[0,a(d),i2,14,i2,45,[0,a(ay),[0,a(e),0]]],br8=[0,a(a6),[0,a("calcul_allocation_logement.zone"),0]],br5=[0,a(d),i2,14,i2,45,[0,a(ay),[0,a(e),0]]],br$=[0,a(d),iJ,14,iJ,54,[0,a(ay),[0,a(e),0]]],bsa=[0,a(a6),[0,a("calcul_allocation_logement.date_courante"),0]],br9=[0,a(d),iJ,14,iJ,54,[0,a(ay),[0,a(e),0]]],bsg=[0,a(aG),gu,14,gu,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsh=[0,a(a6),[0,a("calcul_allocation_logement.type_aide"),0]],bsb=[0,a(aG),gu,14,gu,50,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsi=[0,a(a6),[0,a(Ew),[0,a(cR),0]]],bsj=[0,a(a6),[0,a(Ew),[0,a(cR),0]]],bsm=[0,a(d),h_,14,h_,64,[0,a(ay),[0,a(e),0]]],bsn=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"),0]],bsk=[0,a(d),h_,14,h_,64,[0,a(ay),[0,a(e),0]]],bsr=[0,a(aG),gR,14,gR,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bss=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"),0]],bso=[0,a(aG),gR,14,gR,58,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bsv=[0,a(d),f2,14,f2,66,[0,a(ay),[0,a(e),0]]],bsw=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"),0]],bst=[0,a(d),f2,14,f2,66,[0,a(ay),[0,a(e),0]]],bsz=[0,a(d),js,14,js,68,[0,a(ay),[0,a(e),0]]],bsA=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"),0]],bsx=[0,a(d),js,14,js,68,[0,a(ay),[0,a(e),0]]],bsD=[0,a(d),jb,5,jb,65,[0,a(ay),[0,a(e),0]]],bsE=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"),0]],bsB=[0,a(d),jb,5,jb,65,[0,a(ay),[0,a(e),0]]],bsH=[0,a(d),h0,14,h0,53,[0,a(ay),[0,a(e),0]]],bsI=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.zone"),0]],bsF=[0,a(d),h0,14,h0,53,[0,a(ay),[0,a(e),0]]],bsL=[0,a(d),jm,14,jm,62,[0,a(ay),[0,a(e),0]]],bsM=[0,a(a6),[0,a("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"),0]],bsJ=[0,a(d),jm,14,jm,62,[0,a(ay),[0,a(e),0]]],bsN=[0,a(a6),[0,a(zt),[0,a(cS),0]]],bsO=[0,a(a6),[0,a(zt),[0,a(cS),0]]],bsR=[0,a(d),ov,12,ov,61,[0,a(ay),[0,a(e),0]]],bsP=[0,a(d),ov,12,ov,61,[0,a(ay),[0,a(e),0]]],bsS=[0,a(a6),[0,a(kL),0]],bsV=[0,a(d),n1,12,n1,23,[0,a(ay),[0,a(e),0]]],bsT=[0,a(d),n1,12,n1,23,[0,a(ay),[0,a(e),0]]],bsW=[0,a(a6),[0,a(ob),0]],bs8=[0,a(a6),[0,a(aw),0]],bti=[0,a(d),jl,12,jl,31,[0,a(ay),[0,a(e),0]]],bs9=[0,a(d),jl,12,jl,31,[0,a(ay),[0,a(e),0]]],btj=[0,a(a6),[0,a(cX),0]],brg=[0,a(E),Bu,14,Bu,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],brc=[0,a(E),v2,14,v2,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],brd=[0,a(d),ke,12,ke,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],brb=[0,a(d),ke,12,ke,34,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bq_=[0,a(E),Bm,14,Bm,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq3=[0,a(V),[0,a(aw),[0,a(ai),0]]],bq4=[0,a(V),[0,a(aw),0]],bq5=[0,a(V),[0,a(aw),[0,a(ad),0]]],bq6=[0,a(V),[0,a(aw),0]],bqS=[0,a(bh),[0,a(aw),[0,a(ai),0]]],bqT=[0,a(bh),[0,a(aw),0]],bqU=[0,a(bh),[0,a(aw),[0,a(ad),0]]],bqV=[0,a(bh),[0,a(aw),0]],bqI=[0,a(V),[0,a(aw),[0,a(ai),0]]],bqJ=[0,a(V),[0,a(aw),0]],bqK=[0,a(V),[0,a(aw),[0,a(ad),0]]],bqL=[0,a(V),[0,a(aw),0]],bqz=[0,a(ao),[0,a(aw),[0,a(ai),0]]],bqA=[0,a(ao),[0,a(aw),0]],bqB=[0,a(ao),[0,a(aw),[0,a(ad),0]]],bqC=[0,a(ao),[0,a(aw),0]],bqo=[0,a(bh),[0,a(aw),[0,a(ai),0]]],bqp=[0,a(bh),[0,a(aw),0]],bqq=[0,a(bh),[0,a(aw),[0,a(ad),0]]],bqr=[0,a(bh),[0,a(aw),0]],bqv=a(p),bqw=a(p),bql=[0,a(E),1539,16,1542,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqm=[0,a(bh),[0,a(bo),[0,a(fg),0]]],bqn=[0,a(bh),[0,a(bo),0]],bqs=[0,a(E),1524,9,1545,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqt=[0,a(bh),[0,a(bo),[0,a(ad),0]]],bqu=[0,a(bh),[0,a(bo),0]],bqx=[0,a(ao),[0,a(bo),[0,a(fg),0]]],bqy=[0,a(ao),[0,a(bo),0]],bqD=[0,a(E),1588,9,1599,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqE=[0,a(ao),[0,a(bo),[0,a(ad),0]]],bqF=[0,a(ao),[0,a(bo),0]],bqG=[0,a(V),[0,a(bo),[0,a(fg),0]]],bqH=[0,a(V),[0,a(bo),0]],bqM=[0,a(E),1609,10,1624,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqN=[0,a(V),[0,a(bo),[0,a(ad),0]]],bqO=[0,a(V),[0,a(bo),0]],bqZ=a(p),bq0=a(p),bqP=[0,a(E),1571,16,1574,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqQ=[0,a(bh),[0,a(bo),[0,a(fg),0]]],bqR=[0,a(bh),[0,a(bo),0]],bqW=[0,a(E),zC,9,1577,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bqX=[0,a(bh),[0,a(bo),[0,a(ad),0]]],bqY=[0,a(bh),[0,a(bo),0]],bq1=[0,a(V),[0,a(bo),[0,a(fg),0]]],bq2=[0,a(V),[0,a(bo),0]],bq7=[0,a(E),1636,10,1651,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bq8=[0,a(V),[0,a(bo),[0,a(ad),0]]],bq9=[0,a(V),[0,a(bo),0]],bqh=[0,a(Q),88,14,88,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],bqb=[0,0],bqc=[1,0],bqd=[1,0],bqe=[1,0],bqf=[0,0],bqg=[1,0],bp9=[0,a(E),A1,14,A1,31,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bp6=a(c7),bp7=a(Cc),bp8=a(q3),bp2=[0,a(E),ss,14,ss,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bp3=[0,a(d),eF,11,eF,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp1=[0,a(d),eF,11,eF,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp4=[0,a(cR),[0,a(xP),0]],bp_=[0,a(d),mN,10,mN,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp5=[0,a(d),mN,10,mN,22,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bp$=[0,a(cR),[0,a(xl),0]],bqi=[0,a(d),j4,11,j4,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqa=[0,a(d),j4,11,j4,41,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqj=[0,a(cR),[0,a(zc),0]],bq$=[0,a(d),nR,11,nR,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bqk=[0,a(d),nR,11,nR,33,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bra=[0,a(cR),[0,a(Fr),0]],bre=[0,a(cR),[0,a(aw),0]],brh=[0,a(d),ny,12,ny,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],brf=[0,a(d),ny,12,ny,31,[0,a(bO),[0,a(N),[0,a(A),[0,a(e),0]]]]],bri=[0,a(cR),[0,a(cX),0]],bpW=[0,a(aG),vA,5,vA,73,[0,a("Article L841-3"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpV=[2,0],bpX=[0,a(d),eV,10,eV,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpT=[0,a(aG),qC,5,1140,28,[0,a("Article L841-4"),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpS=[0,0],bpU=[0,a(d),eV,10,eV,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpY=[0,a(d),eV,10,eV,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpR=[0,a(aG),vE,14,vE,25,[0,a(dx),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpN=[0,0],bpO=[0,0],bpP=[1,0],bpQ=[2,0],bpD=a(p),bpE=[0,a(aG),1002,5,ke,29,[0,a(io),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpF=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpy=a(z),bpz=[0,a(aG),gJ,5,990,13,[0,a(io),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpA=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpt=[0,a(aU),[0,a(ff),[0,a(ai),0]]],bpu=[0,a(aU),[0,a(ff),0]],bpv=[0,a(aU),[0,a(ff),[0,a(ad),0]]],bpw=[0,a(aU),[0,a(ff),0]],bps=a(z),bpx=[0,a(aG),kx,5,kD,9,[0,a(io),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpB=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpC=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpG=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpl=[2,0],bpq=[0,0],bpm=[0,a(cq),[0,a(dl),[0,a(ai),0]]],bpn=[0,a(cq),[0,a(dl),0]],bpo=[0,a(cq),[0,a(dl),[0,a(ad),0]]],bpp=[0,a(cq),[0,a(dl),0]],bpk=a(p),bpr=[0,a(aG),922,5,kG,29,[0,a(io),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpH=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpd=[2,0],bpi=[0,0],bpe=[0,a(cq),[0,a(dl),[0,a(ai),0]]],bpf=[0,a(cq),[0,a(dl),0]],bpg=[0,a(cq),[0,a(dl),[0,a(ad),0]]],bph=[0,a(cq),[0,a(dl),0]],bpc=a(z),bpj=[0,a(aG),890,5,gA,8,[0,a(io),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpI=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo9=[4,0],bo_=[3,0],bo$=[1,0],bpa=[0,0],bpb=[0,a(aG),870,5,kU,6,[0,a(io),[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bpJ=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo8=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo4=[0,a(aG),xy,14,xy,25,[0,a(bj),[0,a(b8),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],bo2=[0,0],bo3=[2,0],boY=[0,a(d),yn,14,yn,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],boU=[0,a(d),y7,14,y7,63,[0,a(aK),[0,a(i),[0,a(e),0]]]],boO=[0,a(E),m1,9,m1,55,[0,a(oj),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boP=[0,a(E),m1,9,m1,55,[0,a(oj),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boQ=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"),0]],boL=[0,a(E),nk,9,nk,68,[0,a(oj),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boM=[0,a(E),nk,9,nk,68,[0,a(oj),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],boN=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"),0]],boI=[0,a(d),gP,14,gP,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boE=[0,a(d),gr,14,gr,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],boA=[0,a(d),i8,14,i8,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bor=[0,a(E),4364,5,4369,28,[0,a(oK),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bos=[0,a(d),cQ,11,cQ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boq=[0,a(E),4347,5,4352,28,[0,a(oK),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bot=[0,a(d),cQ,11,cQ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bop=[0,a(E),4330,5,4337,28,[0,a(oK),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bou=[0,a(d),cQ,11,cQ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bov=[0,a(d),cQ,11,cQ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boo=[0,a(E),4300,5,4302,28,[0,a(oK),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bow=[0,a(d),cQ,11,cQ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bon=[0,a(d),cQ,11,cQ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boh=[0,a(d),iG,14,iG,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bog=[6,0],boc=[0,a(d),fL,14,fL,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],bob=[1,0],bn9=[0,a(d),ju,14,ju,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn5=[0,a(E),rW,14,rW,28,[0,a("Article D841-1"),[0,a("Chapitre 1 : Champ d'application"),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]],bn6=[0,a(d),nV,11,nV,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn4=[0,a(d),nV,11,nV,25,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn7=[0,a(cb),[0,a("dur\xc3\xa9e_l841_1_3"),0]],bn_=[0,a(d),ju,14,ju,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bn$=[0,a(cb),[0,a(xf),0]],bn8=[0,a(d),ju,14,ju,50,[0,a(aK),[0,a(i),[0,a(e),0]]]],bod=[0,a(d),fL,14,fL,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],boe=[0,a(cb),[0,a(Bw),0]],boa=[0,a(d),fL,14,fL,56,[0,a(aK),[0,a(i),[0,a(e),0]]]],boi=[0,a(d),iG,14,iG,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],boj=[0,a(cb),[0,a(y5),0]],bof=[0,a(d),iG,14,iG,46,[0,a(aK),[0,a(i),[0,a(e),0]]]],bok=[0,a(cb),[0,a(oQ),[0,a(cq),0]]],bol=[0,a(cb),[0,a(oQ),[0,a(cq),0]]],box=[0,a(d),cQ,11,cQ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],bom=[0,a(d),cQ,11,cQ,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boy=[0,a(cb),[0,a("condition_accession_propri\xc3\xa9t\xc3\xa9"),0]],boB=[0,a(d),i8,14,i8,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boC=[0,a(cb),[0,a(vK),0]],boz=[0,a(d),i8,14,i8,40,[0,a(aK),[0,a(i),[0,a(e),0]]]],boF=[0,a(d),gr,14,gr,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],boG=[0,a(cb),[0,a(Bt),0]],boD=[0,a(d),gr,14,gr,43,[0,a(aK),[0,a(i),[0,a(e),0]]]],boJ=[0,a(d),gP,14,gP,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boK=[0,a(cb),[0,a(Gg),0]],boH=[0,a(d),gP,14,gP,47,[0,a(aK),[0,a(i),[0,a(e),0]]]],boR=[0,a(cb),[0,a(oI),[0,a(aU),0]]],boS=[0,a(cb),[0,a(oI),[0,a(aU),0]]],boV=[0,a(d),ky,12,ky,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boT=[0,a(d),ky,12,ky,61,[0,a(aK),[0,a(i),[0,a(e),0]]]],boW=[0,a(cb),[0,a(kL),0]],boZ=[0,a(d),fY,12,fY,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],boX=[0,a(d),fY,12,fY,54,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo0=[0,a(cb),[0,a(r_),0]],bo5=[0,a(d),n_,10,n_,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo1=[0,a(d),n_,10,n_,31,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo6=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"),0]],bpK=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bo7=[0,a(d),b6,11,b6,52,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpL=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"),0]],bpZ=[0,a(d),eV,10,eV,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bpM=[0,a(d),eV,10,eV,16,[0,a(aK),[0,a(i),[0,a(e),0]]]],bp0=[0,a(cb),[0,a("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]],bn0=[0,a(aG),591,5,kM,36,[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],bn1=[0,a(d),fC,12,fC,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnZ=[0,a(d),fC,12,fC,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnV=[0,a(d),ok,14,ok,56,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnR=[0,a(d),FK,14,FK,63,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnH=[0,a(E),3693,5,3698,30,[0,a("Article R832-21"),[0,a("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bnI=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnD=[0,a(b7),[0,a(km),[0,a(ai),0]]],bnE=[0,a(b7),[0,a(km),0]],bnF=[0,a(b7),[0,a(km),[0,a(ad),0]]],bnG=[0,a(b7),[0,a(km),0]],bnC=[0,a(aG),k1,5,kh,30,[0,a(mn),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnJ=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnB=[0,a(aG),gG,5,687,30,[0,a(mn),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnK=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnA=[0,a(aG),gC,5,650,30,[0,a(mn),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnL=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnw=[0,a(b7),[0,a(j5),[0,a(ai),0]]],bnx=[0,a(b7),[0,a(j5),0]],bny=[0,a(b7),[0,a(j5),[0,a(ad),0]]],bnz=[0,a(b7),[0,a(j5),0]],bnv=[0,a(aG),gE,5,k4,30,[0,a(mn),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnM=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnN=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnu=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bno=[0,a(d),iS,14,iS,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnk=[0,a(d),gL,14,gL,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bng=[0,a(d),hj,14,hj,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm$=[0,a(aG),ks,5,753,30,[0,a(qL),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bna=[0,a(d),dn,11,dn,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm_=[0,a(aG),kT,5,726,30,[0,a(qL),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnb=[0,a(d),dn,11,dn,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm9=[0,a(aG),vX,31,vX,54,[0,a(qL),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bnc=[0,a(d),dn,11,dn,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm8=[0,a(d),dn,11,dn,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm4=[0,a(d),ie,11,ie,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm5=[0,a(d),ie,11,ie,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm3=[0,a(d),ie,11,ie,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmX=[0,a(E),3021,5,3024,41,[0,a("Article R832-7"),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmY=[0,a(d),c4,11,c4,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmW=[0,a(E),2986,5,2988,42,[0,a("Article R832-5"),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmZ=[0,a(d),c4,11,c4,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm0=[0,a(d),c4,11,c4,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmV=[0,a(d),c4,11,c4,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm1=[0,a(d),c4,11,c4,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bmU=[0,a(d),c4,11,c4,41,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm2=[0,a(b7),[0,a(j5),0]],bm6=[0,a(b7),[0,a(km),0]],bnd=[0,a(d),dn,11,dn,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bm7=[0,a(d),dn,11,dn,34,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bne=[0,a(b7),[0,a("condition_logement_pr\xc3\xaat"),0]],bnh=[0,a(d),hj,14,hj,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bni=[0,a(b7),[0,a(vK),0]],bnf=[0,a(d),hj,14,hj,40,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnl=[0,a(d),gL,14,gL,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnm=[0,a(b7),[0,a(Bt),0]],bnj=[0,a(d),gL,14,gL,43,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnp=[0,a(d),iS,14,iS,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnq=[0,a(b7),[0,a(Gg),0]],bnn=[0,a(d),iS,14,iS,47,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnr=[0,a(b7),[0,a(oI),[0,a(aU),0]]],bns=[0,a(b7),[0,a(oI),[0,a(aU),0]]],bnO=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnt=[0,a(d),cC,11,cC,38,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnP=[0,a(b7),[0,a("condition_logement_bailleur"),0]],bnS=[0,a(d),mg,12,mg,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnQ=[0,a(d),mg,12,mg,61,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnT=[0,a(b7),[0,a(kL),0]],bnW=[0,a(d),n$,12,n$,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnU=[0,a(d),n$,12,n$,54,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnX=[0,a(b7),[0,a(r_),0]],bn2=[0,a(d),fC,12,fC,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bnY=[0,a(d),fC,12,fC,23,[0,a(aZ),[0,a(i),[0,a(e),0]]]],bn3=[0,a(b7),[0,a(ob),0]],bmR=[0,a(E),A2,14,A2,40,[0,a("Article D823-22"),[0,a(mh),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmM=[0,a(aG),ax,5,kI,42,[0,a("Article L823-8"),[0,a(a4),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],bmN=[0,a(d),f0,11,f0,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmL=[0,a(d),f0,11,f0,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmH=[0,a(Q),BS,14,BS,29,[0,a("Article 45"),[0,a("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"),[0,a(L),0]]]],bmC=a(_),bmD=a(qE),bmE=a(_),bmG=a(p),bmF=a("2.4"),bmx=[0,a(E),2069,6,2079,75,[0,a(qR),[0,a(mh),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bmy=[0,a(d),f5,11,f5,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmw=[0,a(d),f5,11,f5,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmq=[0,a(d),jo,14,jo,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmm=[0,a(d),iL,14,iL,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmi=[0,a(d),iO,14,iO,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmc=[0,a(d),hg,14,hg,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl8=a(_),bl9=[0,a(E),2060,5,2065,77,[0,a(qR),[0,a(mh),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bl_=[0,a(d),et,11,et,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl7=[0,a(d),et,11,et,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl3=[0,a(E),Au,14,Au,47,[0,a(qR),[0,a(mh),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bl4=[0,a(d),mR,11,mR,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl2=[0,a(d),mR,11,mR,44,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl5=[0,a(dp),[0,a("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"),0]],bl$=[0,a(d),et,11,et,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],bl6=[0,a(d),et,11,et,32,[0,a(bv),[0,a(i),[0,a(e),0]]]],bma=[0,a(dp),[0,a("condition_rang_enfant"),0]],bmd=[0,a(d),hg,14,hg,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bme=[0,a(dp),[0,a(D4),0]],bmb=[0,a(d),hg,14,hg,65,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmf=[0,a(dp),[0,a(mZ),[0,a(f4),0]]],bmg=[0,a(dp),[0,a(mZ),[0,a(f4),0]]],bmj=[0,a(d),iO,14,iO,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmk=[0,a(dp),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"),0]],bmh=[0,a(d),iO,14,iO,36,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmn=[0,a(d),iL,14,iL,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmo=[0,a(dp),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]],bml=[0,a(d),iL,14,iL,39,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmr=[0,a(d),jo,14,jo,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bms=[0,a(dp),[0,a("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"),0]],bmp=[0,a(d),jo,14,jo,43,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmt=[0,a(dp),[0,a(Be),[0,a(aU),0]]],bmu=[0,a(dp),[0,a(Be),[0,a(aU),0]]],bmz=[0,a(d),f5,11,f5,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmv=[0,a(d),f5,11,f5,41,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmA=[0,a(dp),[0,a("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"),0]],bmI=[0,a(d),nz,11,nz,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmB=[0,a(d),nz,11,nz,26,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmJ=[0,a(dp),[0,a("plafond_d823_22"),0]],bmO=[0,a(d),f0,11,f0,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmK=[0,a(d),f0,11,f0,31,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmP=[0,a(dp),[0,a(Bk),0]],bmS=[0,a(d),nc,12,nc,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmQ=[0,a(d),nc,12,nc,38,[0,a(bv),[0,a(i),[0,a(e),0]]]],bmT=[0,a(dp),[0,a("montant_prime_d\xc3\xa9m\xc3\xa9nagement"),0]],blY=[0,a(E),q4,14,q4,33,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blU=[0,a(E),Ex,14,Ex,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blV=[0,a(d),kj,12,kj,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blT=[0,a(d),kj,12,kj,34,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blQ=[0,a(E),vV,14,vV,36,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blJ=[0,a(au),[0,a(aw),[0,a(ai),0]]],blK=[0,a(au),[0,a(aw),0]],blL=[0,a(au),[0,a(aw),[0,a(ad),0]]],blM=[0,a(au),[0,a(aw),0]],blA=[0,a(aj),[0,a(aw),[0,a(ai),0]]],blB=[0,a(aj),[0,a(aw),0]],blC=[0,a(aj),[0,a(aw),[0,a(ad),0]]],blD=[0,a(aj),[0,a(aw),0]],blp=[0,a(aD),[0,a(aw),[0,a(ai),0]]],blq=[0,a(aD),[0,a(aw),0]],blr=[0,a(aD),[0,a(aw),[0,a(ad),0]]],bls=[0,a(aD),[0,a(aw),0]],blw=a(p),blx=a(p),blm=[0,a(E),1455,16,1458,39,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bln=[0,a(aD),[0,a(bo),[0,a(fg),0]]],blo=[0,a(aD),[0,a(bo),0]],blt=[0,a(E),1440,9,1460,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blu=[0,a(aD),[0,a(bo),[0,a(ad),0]]],blv=[0,a(aD),[0,a(bo),0]],bly=[0,a(aj),[0,a(bo),[0,a(fg),0]]],blz=[0,a(aj),[0,a(bo),0]],blE=[0,a(E),1491,10,1507,11,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blF=[0,a(aj),[0,a(bo),[0,a(ad),0]]],blG=[0,a(aj),[0,a(bo),0]],blH=[0,a(au),[0,a(bo),[0,a(fg),0]]],blI=[0,a(au),[0,a(bo),0]],blN=[0,a(E),1471,9,1480,10,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],blO=[0,a(au),[0,a(bo),[0,a(ad),0]]],blP=[0,a(au),[0,a(bo),0]],bli=[0,a(Q),78,14,78,44,[0,a(cG),[0,a(bX),[0,a(L),0]]]],blc=[0,0],bld=[1,0],ble=[1,0],blf=[1,0],blg=[0,0],blh=[1,0],bk_=[0,a(E),Ar,14,Ar,31,[0,a(rT),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],bk7=a(c7),bk8=a(Cc),bk9=a(q3),bk3=[0,a(E),zE,14,zE,34,[0,a(cp),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bk4=[0,a(d),j7,11,j7,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk2=[0,a(d),j7,11,j7,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk5=[0,a(cS),[0,a(xP),0]],bk$=[0,a(d),ks,10,ks,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bk6=[0,a(d),ks,10,ks,22,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bla=[0,a(cS),[0,a(xl),0]],blj=[0,a(d),kc,11,kc,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blb=[0,a(d),kc,11,kc,41,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blk=[0,a(cS),[0,a(zc),0]],blR=[0,a(d),l1,11,l1,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bll=[0,a(d),l1,11,l1,33,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blS=[0,a(cS),[0,a(Fr),0]],blW=[0,a(cS),[0,a(aw),0]],blZ=[0,a(d),np,12,np,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],blX=[0,a(d),np,12,np,31,[0,a(bO),[0,a(t),[0,a(i),[0,a(e),0]]]]],bl0=[0,a(cS),[0,a(cX),0]],bkZ=[0,a(E),Ey,14,Ey,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkU=[0,a(V),[0,a(bJ),[0,a(ai),0]]],bkV=[0,a(V),[0,a(bJ),0]],bkW=[0,a(V),[0,a(bJ),[0,a(ad),0]]],bkX=[0,a(V),[0,a(bJ),0]],bkY=a(p),bk0=[0,a(d),kq,10,kq,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkT=[0,a(d),kq,10,kq,25,[0,a(D),[0,a(A),[0,a(e),0]]]],bkQ=[0,a(E),ET,14,ET,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkF=[0,a(V),[0,a(eo),[0,a(ai),0]]],bkG=[0,a(V),[0,a(eo),0]],bkH=[0,a(V),[0,a(eo),[0,a(ad),0]]],bkI=[0,a(V),[0,a(eo),0]],bkJ=[0,a(bk),[0,a(bQ),[0,a(ai),0]]],bkK=[0,a(bk),[0,a(bQ),0]],bkL=[0,a(bk),[0,a(bQ),[0,a(ad),0]]],bkM=[0,a(bk),[0,a(bQ),0]],bkN=a(k6),bkO=a(p),bkP=a(p),bkR=[0,a(d),nN,10,nN,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkE=[0,a(d),nN,10,nN,40,[0,a(D),[0,a(A),[0,a(e),0]]]],bkB=[0,a(E),y$,14,y$,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bks=[0,a(V),[0,a(bI),[0,a(ai),0]]],bkt=[0,a(V),[0,a(bI),0]],bku=[0,a(V),[0,a(bI),[0,a(ad),0]]],bkv=[0,a(V),[0,a(bI),0]],bkw=[0,a(V),[0,a(eG),[0,a(ai),0]]],bkx=[0,a(V),[0,a(eG),0]],bky=[0,a(V),[0,a(eG),[0,a(ad),0]]],bkz=[0,a(V),[0,a(eG),0]],bkA=a(p),bkC=[0,a(d),nW,10,nW,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bkr=[0,a(d),nW,10,nW,32,[0,a(D),[0,a(A),[0,a(e),0]]]],bko=[0,a(E),AN,14,AN,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkk=[0,a(E),EA,14,EA,47,[0,a(oS),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bkf=[0,a(V),[0,a(dh),[0,a(ai),0]]],bkg=[0,a(V),[0,a(dh),0]],bkh=[0,a(V),[0,a(dh),[0,a(ad),0]]],bki=[0,a(V),[0,a(dh),0]],bkj=a(p),bkl=[0,a(d),mO,11,mO,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bke=[0,a(d),mO,11,mO,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bkb=[0,a(E),xj,14,xj,41,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj9=[0,a(E),AU,14,AU,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj5=[0,a(E),x6,14,x6,33,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj0=[0,a(E),4672,7,4675,44,[0,a(oS),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bj1=[0,a(d),hu,11,hu,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjZ=[0,a(E),w1,14,w1,50,[0,a(oS),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjT=[0,a(E),nu,14,nu,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjU=[0,a(E),nu,14,nu,62,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjV=[0,a(V),[0,a("calcul_apl_logement_foyer.n_nombre_parts_d832_25"),0]],bjQ=[0,a(E),m_,14,m_,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjR=[0,a(E),m_,14,m_,61,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjS=[0,a(V),[0,a(Er),0]],bjN=[0,a(d),iT,14,iT,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjM=a(p),bjI=[0,a(d),iW,14,iW,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjE=[0,a(d),hw,14,hw,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjA=[0,a(d),h5,14,h5,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjw=[0,a(d),gA,14,gA,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjs=[0,a(d),hF,14,hF,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjo=[0,a(d),hV,14,hV,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjk=[0,a(d),iZ,14,iZ,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bjj=[3,0],bjd=[0,a(E),hA,14,hA,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi$=[0,a(E),hN,14,hN,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi7=[0,a(E),jv,14,jv,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi2=[0,a(E),Bj,5,Bj,44,[0,a(BX),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biU=[0,a(V),[0,a(dE),[0,a(ai),0]]],biV=[0,a(V),[0,a(dE),0]],biW=[0,a(V),[0,a(dE),[0,a(ad),0]]],biX=[0,a(V),[0,a(dE),0]],biY=[0,a(V),[0,a(dE),[0,a(ai),0]]],biZ=[0,a(V),[0,a(dE),0]],bi0=[0,a(V),[0,a(dE),[0,a(ad),0]]],bi1=[0,a(V),[0,a(dE),0]],bi3=[0,a(d),hS,11,hS,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biT=[0,a(E),EP,14,EP,39,[0,a(BX),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biP=[0,a(V),[0,a(dE),[0,a(ai),0]]],biQ=[0,a(V),[0,a(dE),0]],biR=[0,a(V),[0,a(dE),[0,a(ad),0]]],biS=[0,a(V),[0,a(dE),0]],biK=[0,a(E),wx,5,wx,28,[0,a(nj),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biL=[0,a(d),hG,10,hG,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biJ=[0,a(E),Fp,14,Fp,41,[0,a(nj),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],biG=a(c7),biH=a(q3),biI=a("4999"),biz=[0,a(aO),xN,24,xN,56,[0,a(os),[0,a(bB),[0,a(aM),0]]]],biq=a(dj),bir=[0,a(V),[0,a(b$),[0,a(ai),0]]],bis=[0,a(V),[0,a(b$),0]],bit=[0,a(V),[0,a(b$),[0,a(ad),0]]],biu=[0,a(V),[0,a(b$),0]],biv=[0,a(V),[0,a(b$),[0,a(ai),0]]],biw=[0,a(V),[0,a(b$),0]],bix=[0,a(V),[0,a(b$),[0,a(ad),0]]],biy=[0,a(V),[0,a(b$),0]],biA=[0,a(d),ev,10,ev,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bip=[0,a(Q),ED,24,ED,56,[0,a(os),[0,a(bn),[0,a(L),0]]]],big=a(dj),bih=[0,a(V),[0,a(b$),[0,a(ai),0]]],bii=[0,a(V),[0,a(b$),0]],bij=[0,a(V),[0,a(b$),[0,a(ad),0]]],bik=[0,a(V),[0,a(b$),0]],bil=[0,a(V),[0,a(b$),[0,a(ai),0]]],bim=[0,a(V),[0,a(b$),0]],bin=[0,a(V),[0,a(b$),[0,a(ad),0]]],bio=[0,a(V),[0,a(b$),0]],biB=[0,a(d),ev,10,ev,26,[0,a(D),[0,a(A),[0,a(e),0]]]],biC=[0,a(d),ev,10,ev,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bif=[0,a(Q),AM,14,AM,46,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bib=[0,a(V),[0,a(b$),[0,a(ai),0]]],bic=[0,a(V),[0,a(b$),0]],bid=[0,a(V),[0,a(b$),[0,a(ad),0]]],bie=[0,a(V),[0,a(b$),0]],biD=[0,a(d),ev,10,ev,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bia=[0,a(d),ev,10,ev,26,[0,a(D),[0,a(A),[0,a(e),0]]]],bh9=[0,a(E),AF,15,AF,37,[0,a(oS),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bh_=[0,a(d),oc,11,oc,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bh8=[0,a(d),oc,11,oc,33,[0,a(D),[0,a(A),[0,a(e),0]]]],bh4=[0,a(E),4697,6,4703,6,[0,a(nj),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bh5=[0,a(d),fV,11,fV,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bh2=[0,a(E),4715,5,4716,59,[0,a(nj),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bh3=[0,a(d),fV,11,fV,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bhX=[0,a(Q),EI,5,EI,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bhb=a(p),bhc=a("158700"),bhd=a("191300"),bhe=a(z),bhf=a("205500"),bhg=a(X),bhh=a("211300"),bhi=a(_),bhj=a("217100"),bhk=a(ag),bhl=a("222900"),bhm=a(P),bhn=a(Ag),bho=a(P),bhp=a("19800"),bhq=a(Ag),bhr=a(p),bhs=a("139300"),bht=a("170600"),bhu=a(z),bhv=a("184700"),bhw=a(X),bhx=a("191200"),bhy=a(_),bhz=a(zv),bhA=a(ag),bhB=a("204200"),bhC=a(P),bhD=a(wG),bhE=a(P),bhF=a(sn),bhG=a(wG),bhH=a(p),bhI=a("130600"),bhJ=a("158400"),bhK=a(z),bhL=a("172600"),bhM=a(X),bhN=a(D6),bhO=a(_),bhP=a("187000"),bhQ=a(ag),bhR=a("194200"),bhS=a(P),bhT=a(rL),bhU=a(P),bhV=a("18200"),bhW=a(rL),bhY=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bg$=[0,a(Q),x9,5,x9,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bgp=a(p),bgq=a("160400"),bgr=a("193400"),bgs=a(z),bgt=a("207800"),bgu=a(X),bgv=a("213700"),bgw=a(_),bgx=a("219600"),bgy=a(ag),bgz=a(yO),bgA=a(P),bgB=a(og),bgC=a(P),bgD=a("20000"),bgE=a(og),bgF=a(p),bgG=a(DR),bgH=a(D7),bgI=a(z),bgJ=a("186700"),bgK=a(X),bgL=a("193300"),bgM=a(_),bgN=a(q5),bgO=a(ag),bgP=a("206500"),bgQ=a(P),bgR=a(w8),bgS=a(P),bgT=a(zy),bgU=a(w8),bgV=a(p),bgW=a(Bz),bgX=a(rg),bgY=a(z),bgZ=a("174500"),bg0=a(X),bg1=a(xS),bg2=a(_),bg3=a("189100"),bg4=a(ag),bg5=a("196400"),bg6=a(P),bg7=a(vp),bg8=a(P),bg9=a("18400"),bg_=a(vp),bha=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bgn=[0,a(Q),C8,5,C8,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bfD=a(p),bfE=a("163300"),bfF=a("196900"),bfG=a(z),bfH=a("211600"),bfI=a(X),bfJ=a(wI),bfK=a(_),bfL=a("223600"),bfM=a(ag),bfN=a("229600"),bfO=a(P),bfP=a(BP),bfQ=a(P),bfR=a("20400"),bfS=a(BP),bfT=a(p),bfU=a("143300"),bfV=a("175600"),bfW=a(z),bfX=a("190100"),bfY=a(X),bfZ=a("196600"),bf0=a(_),bf1=a("203500"),bf2=a(ag),bf3=a("210200"),bf4=a(P),bf5=a(E4),bf6=a(P),bf7=a("19600"),bf8=a(E4),bf9=a(p),bf_=a("134400"),bf$=a(xW),bga=a(z),bgb=a("177700"),bgc=a(X),bgd=a("185100"),bge=a(_),bgf=a(wJ),bgg=a(ag),bgh=a(q5),bgi=a(P),bgj=a(F0),bgk=a(P),bgl=a("18700"),bgm=a(F0),bgo=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bfB=[0,a(Q),EJ,5,EJ,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],beR=a(p),beS=a("167200"),beT=a("201600"),beU=a(z),beV=a("216700"),beW=a(X),beX=a("222800"),beY=a(_),beZ=a("229000"),be0=a(ag),be1=a("235100"),be2=a(P),be3=a(FU),be4=a(P),be5=a(vQ),be6=a(FU),be7=a(p),be8=a("146700"),be9=a(D6),be_=a(z),be$=a("194700"),bfa=a(X),bfb=a("201500"),bfc=a(_),bfd=a("208400"),bfe=a(ag),bff=a("215200"),bfg=a(P),bfh=a(og),bfi=a(P),bfj=a(BK),bfk=a(og),bfl=a(p),bfm=a("137600"),bfn=a("166900"),bfo=a(z),bfp=a("182000"),bfq=a(X),bfr=a("189500"),bfs=a(_),bft=a("197100"),bfu=a(ag),bfv=a(Dd),bfw=a(P),bfx=a(Bo),bfy=a(P),bfz=a(sn),bfA=a(Bo),bfC=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],beP=[0,a(Q),AI,5,AI,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bd5=a(p),bd6=a("167400"),bd7=a("201800"),bd8=a(z),bd9=a("216900"),bd_=a(X),bd$=a("223000"),bea=a(_),beb=a("229200"),bec=a(ag),bed=a("235300"),bee=a(P),bef=a(AD),beg=a(P),beh=a(vQ),bei=a(AD),bej=a(p),bek=a("146800"),bel=a("180000"),bem=a(z),ben=a("194900"),beo=a(X),bep=a(Fo),beq=a(_),ber=a(rL),bes=a(ag),bet=a("215400"),beu=a(P),bev=a(CA),bew=a(P),bex=a(BK),bey=a(CA),bez=a(p),beA=a("137700"),beB=a("167100"),beC=a(z),beD=a("182200"),beE=a(X),beF=a("189700"),beG=a(_),beH=a("197300"),beI=a(ag),beJ=a("204900"),beK=a(P),beL=a(D3),beM=a(P),beN=a(sn),beO=a(D3),beQ=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bd3=[0,a(Q),zB,5,zB,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bdh=a(p),bdi=a("169100"),bdj=a("203800"),bdk=a(z),bdl=a("219100"),bdm=a(X),bdn=a("225200"),bdo=a(_),bdp=a("231500"),bdq=a(ag),bdr=a("237700"),bds=a(P),bdt=a(mt),bdu=a(P),bdv=a("21100"),bdw=a(mt),bdx=a(p),bdy=a("148300"),bdz=a(xS),bdA=a(z),bdB=a("196800"),bdC=a(X),bdD=a("203700"),bdE=a(_),bdF=a("210700"),bdG=a(ag),bdH=a(wI),bdI=a(P),bdJ=a(xa),bdK=a(P),bdL=a("20300"),bdM=a(xa),bdN=a(p),bdO=a("139100"),bdP=a("168800"),bdQ=a(z),bdR=a(rM),bdS=a(X),bdT=a("191600"),bdU=a(_),bdV=a("199300"),bdW=a(ag),bdX=a("206900"),bdY=a(P),bdZ=a(A6),bd0=a(P),bd1=a(zy),bd2=a(A6),bd4=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bdf=[0,a(Q),BW,5,BW,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bcv=a(p),bcw=a("171100"),bcx=a("206200"),bcy=a(z),bcz=a("221700"),bcA=a(X),bcB=a("227900"),bcC=a(_),bcD=a("234300"),bcE=a(ag),bcF=a("240600"),bcG=a(P),bcH=a(z7),bcI=a(P),bcJ=a("21400"),bcK=a(z7),bcL=a(p),bcM=a("150100"),bcN=a(rM),bcO=a(z),bcP=a("199200"),bcQ=a(X),bcR=a("206100"),bcS=a(_),bcT=a("213200"),bcU=a(ag),bcV=a("220200"),bcW=a(P),bcX=a(ze),bcY=a(P),bcZ=a("20500"),bc0=a(ze),bc1=a(p),bc2=a(DR),bc3=a("170800"),bc4=a(z),bc5=a("186200"),bc6=a(X),bc7=a("193900"),bc8=a(_),bc9=a(Fo),bc_=a(ag),bc$=a("209400"),bda=a(P),bdb=a(A5),bdc=a(P),bdd=a("19500"),bde=a(A5),bdg=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bct=[0,a(Q),AH,5,AH,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],bbJ=a(p),bbK=a("26084"),bbL=a("31435"),bbM=a(z),bbN=a("33798"),bbO=a(X),bbP=a("34743"),bbQ=a(_),bbR=a("35719"),bbS=a(ag),bbT=a("36679"),bbU=a(P),bbV=a(zk),bbW=a(P),bbX=a("3262"),bbY=a(zk),bbZ=a(p),bb0=a("22883"),bb1=a("28051"),bb2=a(z),bb3=a("30368"),bb4=a(X),bb5=a("31420"),bb6=a(_),bb7=a("32502"),bb8=a(ag),bb9=a("33569"),bb_=a(P),bb$=a(FH),bca=a(P),bcb=a("3125"),bcc=a(FH),bcd=a(p),bce=a("21465"),bcf=a("26038"),bcg=a(z),bch=a("28386"),bci=a(X),bcj=a("29560"),bck=a(_),bcl=a("30749"),bcm=a(ag),bcn=a("31923"),bco=a(P),bcp=a(E6),bcq=a(P),bcr=a("2973"),bcs=a(E6),bcu=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bbH=[0,a(Q),Dl,5,Dl,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],baX=a(p),baY=a("26397"),baZ=a("31812"),ba0=a(z),ba1=a("34204"),ba2=a(X),ba3=a("35160"),ba4=a(_),ba5=a("36148"),ba6=a(ag),ba7=a("37119"),ba8=a(P),ba9=a(zK),ba_=a(P),ba$=a("3301"),bba=a(zK),bbb=a(p),bbc=a("23158"),bbd=a("28388"),bbe=a(z),bbf=a("30732"),bbg=a(X),bbh=a(m3),bbi=a(_),bbj=a("32892"),bbk=a(ag),bbl=a("33972"),bbm=a(P),bbn=a(ER),bbo=a(P),bbp=a("3163"),bbq=a(ER),bbr=a(p),bbs=a("21723"),bbt=a("26350"),bbu=a(z),bbv=a("28727"),bbw=a(X),bbx=a("29915"),bby=a(_),bbz=a("31118"),bbA=a(ag),bbB=a("32306"),bbC=a(P),bbD=a(xv),bbE=a(P),bbF=a("3009"),bbG=a(xv),bbI=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],baV=[0,a(Q),zH,5,zH,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a$$=a(p),baa=a(Gq),bab=a("32194"),bac=a(z),bad=a("34614"),bae=a(X),baf=a("35582"),bag=a(_),bah=a("36582"),bai=a(ag),baj=a("37564"),bak=a(P),bal=a(wX),bam=a(P),ban=a("3341"),bao=a(wX),bap=a(p),baq=a("23436"),bar=a("28729"),bas=a(z),bat=a("31101"),bau=a(X),bav=a("32179"),baw=a(_),bax=a("33287"),bay=a(ag),baz=a("34380"),baA=a(P),baB=a(A4),baC=a(P),baD=a("3201"),baE=a(A4),baF=a(p),baG=a("21984"),baH=a("26666"),baI=a(z),baJ=a("29072"),baK=a(X),baL=a("30274"),baM=a(_),baN=a("31491"),baO=a(ag),baP=a("32694"),baQ=a(P),baR=a(BV),baS=a(P),baT=a("3045"),baU=a(BV),baW=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a$9=[0,a(Q),y8,5,y8,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a$n=a(p),a$o=a("27195"),a$p=a("32773"),a$q=a(z),a$r=a("35237"),a$s=a(X),a$t=a("36222"),a$u=a(_),a$v=a("37240"),a$w=a(ag),a$x=a("38240"),a$y=a(P),a$z=a(BN),a$A=a(P),a$B=a("3401"),a$C=a(BN),a$D=a(p),a$E=a("23858"),a$F=a("29246"),a$G=a(z),a$H=a("31661"),a$I=a(X),a$J=a("32758"),a$K=a(_),a$L=a("33886"),a$M=a(ag),a$N=a("34999"),a$O=a(P),a$P=a(zO),a$Q=a(P),a$R=a("3259"),a$S=a(zO),a$T=a(p),a$U=a("22380"),a$V=a("27146"),a$W=a(z),a$X=a("29595"),a$Y=a(X),a$Z=a("30819"),a$0=a(_),a$1=a("32058"),a$2=a(ag),a$3=a("33282"),a$4=a(P),a$5=a(AS),a$6=a(P),a$7=a("3100"),a$8=a(AS),a$_=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a$l=[0,a(Q),wS,5,wS,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a_B=a(p),a_C=a("27956"),a_D=a("33691"),a_E=a(z),a_F=a("36224"),a_G=a(X),a_H=a("37236"),a_I=a(_),a_J=a("38283"),a_K=a(ag),a_L=a("39311"),a_M=a(P),a_N=a(yR),a_O=a(P),a_P=a("3496"),a_Q=a(yR),a_R=a(p),a_S=a("24526"),a_T=a("30065"),a_U=a(z),a_V=a("32548"),a_W=a(X),a_X=a("33675"),a_Y=a(_),a_Z=a(FO),a_0=a(ag),a_1=a("35979"),a_2=a(P),a_3=a(A0),a_4=a(P),a_5=a("3350"),a_6=a(A0),a_7=a(p),a_8=a("23007"),a_9=a("27906"),a__=a(z),a_$=a("30424"),a$a=a(X),a$b=a("31682"),a$c=a(_),a$d=a(yX),a$e=a(ag),a$f=a("34214"),a$g=a(P),a$h=a(EL),a$i=a(P),a$j=a("3187"),a$k=a(EL),a$m=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a_z=[0,a(Q),zV,5,zV,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a9P=a(p),a9Q=a("28728"),a9R=a("34621"),a9S=a(z),a9T=a("37224"),a9U=a(X),a9V=a("38264"),a9W=a(_),a9X=a(yv),a9Y=a(ag),a9Z=a("40396"),a90=a(P),a91=a(x2),a92=a(P),a93=a("3592"),a94=a(x2),a95=a(p),a96=a("25203"),a97=a("30895"),a98=a(z),a99=a("33446"),a9_=a(X),a9$=a("34604"),a_a=a(_),a_b=a("35796"),a_c=a(ag),a_d=a("36972"),a_e=a(P),a_f=a(Fz),a_g=a(P),a_h=a("3442"),a_i=a(Fz),a_j=a(p),a_k=a("23642"),a_l=a("28676"),a_m=a(z),a_n=a(xF),a_o=a(X),a_p=a("32556"),a_q=a(_),a_r=a("33866"),a_s=a(ag),a_t=a("35158"),a_u=a(P),a_v=a(wB),a_w=a(P),a_x=a("3275"),a_y=a(wB),a_A=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a9N=[0,a(Q),Fv,5,Fv,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a83=a(p),a84=a("29575"),a85=a("35642"),a86=a(z),a87=a("38322"),a88=a(X),a89=a("39393"),a8_=a(_),a8$=a("40501"),a9a=a(ag),a9b=a("41588"),a9c=a(P),a9d=a(DF),a9e=a(P),a9f=a("3698"),a9g=a(DF),a9h=a(p),a9i=a("25946"),a9j=a("31806"),a9k=a(z),a9l=a("34433"),a9m=a(X),a9n=a("35625"),a9o=a(_),a9p=a("36852"),a9q=a(ag),a9r=a("38063"),a9s=a(P),a9t=a(AO),a9u=a(P),a9v=a("3544"),a9w=a(AO),a9x=a(p),a9y=a("24339"),a9z=a("29522"),a9A=a(z),a9B=a("32186"),a9C=a(X),a9D=a("33516"),a9E=a(_),a9F=a(FO),a9G=a(ag),a9H=a("36195"),a9I=a(P),a9J=a(EB),a9K=a(P),a9L=a("3372"),a9M=a(EB),a9O=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a81=[0,a(Q),Ds,5,Ds,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a8f=a(p),a8g=a("29670"),a8h=a("35757"),a8i=a(z),a8j=a("38445"),a8k=a(X),a8l=a("39519"),a8m=a(_),a8n=a("40601"),a8o=a(ag),a8p=a("41721"),a8q=a(P),a8r=a(DL),a8s=a(P),a8t=a("3710"),a8u=a(DL),a8v=a(p),a8w=a("26029"),a8x=a("31908"),a8y=a(z),a8z=a("34643"),a8A=a(X),a8B=a("35739"),a8C=a(_),a8D=a("36970"),a8E=a(ag),a8F=a("38185"),a8G=a(P),a8H=a(Bp),a8I=a(P),a8J=a("3555"),a8K=a(Bp),a8L=a(p),a8M=a("24417"),a8N=a("29616"),a8O=a(z),a8P=a("32289"),a8Q=a(X),a8R=a(zP),a8S=a(_),a8T=a("34977"),a8U=a(ag),a8V=a("36311"),a8W=a(P),a8X=a(As),a8Y=a(P),a8Z=a("3383"),a80=a(As),a82=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a8d=[0,a(Q),ou,5,ou,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a7t=a(p),a7u=a("29996"),a7v=a("36149"),a7w=a(z),a7x=a("38868"),a7y=a(X),a7z=a("39954"),a7A=a(_),a7B=a("41078"),a7C=a(ag),a7D=a("42180"),a7E=a(P),a7F=a(BF),a7G=a(P),a7H=a("3751"),a7I=a(BF),a7J=a(p),a7K=a("26315"),a7L=a("32259"),a7M=a(z),a7N=a("34923"),a7O=a(X),a7P=a("36132"),a7Q=a(_),a7R=a("37373"),a7S=a(ag),a7T=a("38605"),a7U=a(P),a7V=a(DV),a7W=a(P),a7X=a("3594"),a7Y=a(DV),a7Z=a(p),a70=a("24686"),a71=a("29942"),a72=a(z),a73=a("32644"),a74=a(X),a75=a("33993"),a76=a(_),a77=a("35362"),a78=a(ag),a79=a("36710"),a7_=a(P),a7$=a(AL),a8a=a(P),a8b=a("3420"),a8c=a(AL),a8e=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a7r=[0,a(Q),z8,5,z8,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a6H=a(p),a6I=a("30296"),a6J=a("36510"),a6K=a(z),a6L=a("39257"),a6M=a(X),a6N=a("40354"),a6O=a(_),a6P=a("41489"),a6Q=a(ag),a6R=a("42602"),a6S=a(P),a6T=a(wd),a6U=a(P),a6V=a("3789"),a6W=a(wd),a6X=a(p),a6Y=a("26578"),a6Z=a("32582"),a60=a(z),a61=a("35272"),a62=a(X),a63=a("36493"),a64=a(_),a65=a("37751"),a66=a(ag),a67=a("38991"),a68=a(P),a69=a(xT),a6_=a(P),a6$=a("3630"),a7a=a(xT),a7b=a(p),a7c=a("24933"),a7d=a("30241"),a7e=a(z),a7f=a("32970"),a7g=a(X),a7h=a("34333"),a7i=a(_),a7j=a("35716"),a7k=a(ag),a7l=a("37077"),a7m=a(P),a7n=a(vj),a7o=a(P),a7p=a("3454"),a7q=a(vj),a7s=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a6F=[0,a(Q),Gh,5,Gh,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a5V=a(p),a5W=a("30947"),a5X=a("37295"),a5Y=a(z),a5Z=a("40101"),a50=a(X),a51=a("41222"),a52=a(_),a53=a("42381"),a54=a(ag),a55=a("43518"),a56=a(P),a57=a(CY),a58=a(P),a59=a("3870"),a5_=a(CY),a5$=a(p),a6a=a("27149"),a6b=a("33283"),a6c=a(z),a6d=a("36030"),a6e=a(X),a6f=a("37278"),a6g=a(_),a6h=a("38563"),a6i=a(ag),a6j=a("39829"),a6k=a(P),a6l=a("42649"),a6m=a(P),a6n=a("3708"),a6o=a("42659"),a6p=a(p),a6q=a("25469"),a6r=a("30891"),a6s=a(z),a6t=a("33679"),a6u=a(X),a6v=a("35071"),a6w=a(_),a6x=a("36484"),a6y=a(ag),a6z=a("37874"),a6A=a(P),a6B=a(C6),a6C=a(P),a6D=a("3528"),a6E=a(C6),a6G=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a5T=[0,a(Q),v6,5,v6,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a49=a(p),a4_=a("31123"),a4$=a("37508"),a5a=a(z),a5b=a("40330"),a5c=a(X),a5d=a("41457"),a5e=a(_),a5f=a("42623"),a5g=a(ag),a5h=a("43766"),a5i=a(P),a5j=a(vl),a5k=a(P),a5l=a("3892"),a5m=a(vl),a5n=a(p),a5o=a("27304"),a5p=a("33473"),a5q=a(z),a5r=a("36235"),a5s=a(X),a5t=a("37490"),a5u=a(_),a5v=a("38783"),a5w=a(ag),a5x=a("40056"),a5y=a(P),a5z=a(Co),a5A=a(P),a5B=a("3729"),a5C=a(Co),a5D=a(p),a5E=a("25614"),a5F=a("31067"),a5G=a(z),a5H=a("33871"),a5I=a(X),a5J=a("35271"),a5K=a(_),a5L=a("36692"),a5M=a(ag),a5N=a("38090"),a5O=a(P),a5P=a(zx),a5Q=a(P),a5R=a("3548"),a5S=a(zx),a5U=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a47=[0,a(Q),f6,5,f6,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a4l=a(p),a4m=a("31148"),a4n=a("37538"),a4o=a(z),a4p=a("40362"),a4q=a(X),a4r=a("41490"),a4s=a(_),a4t=a("42657"),a4u=a(ag),a4v=a("43801"),a4w=a(P),a4x=a(xA),a4y=a(P),a4z=a("3895"),a4A=a(xA),a4B=a(p),a4C=a("27326"),a4D=a(F_),a4E=a(z),a4F=a("36264"),a4G=a(X),a4H=a("37520"),a4I=a(_),a4J=a("38814"),a4K=a(ag),a4L=a("40088"),a4M=a(P),a4N=a(FY),a4O=a(P),a4P=a("3732"),a4Q=a(FY),a4R=a(p),a4S=a("25634"),a4T=a("31092"),a4U=a(z),a4V=a("33898"),a4W=a(X),a4X=a("35299"),a4Y=a(_),a4Z=a("36721"),a40=a(ag),a41=a("38120"),a42=a(P),a43=a(Ao),a44=a(P),a45=a("3551"),a46=a(Ao),a48=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a4j=[0,a(Q),CB,5,CB,62,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a3z=a(p),a3A=a("31382"),a3B=a("37820"),a3C=a(z),a3D=a("40665"),a3E=a(X),a3F=a("41801"),a3G=a(_),a3H=a("42977"),a3I=a(ag),a3J=a("44130"),a3K=a(P),a3L=a(Ai),a3M=a(P),a3N=a("3924"),a3O=a(Ai),a3P=a(p),a3Q=a("27531"),a3R=a("33751"),a3S=a(z),a3T=a("36536"),a3U=a(X),a3V=a("37801"),a3W=a(_),a3X=a("39105"),a3Y=a(ag),a3Z=a("40389"),a30=a(P),a31=a(wQ),a32=a(P),a33=a("3760"),a34=a(wQ),a35=a(p),a36=a("25826"),a37=a("31325"),a38=a(z),a39=a("34152"),a3_=a(X),a3$=a("35564"),a4a=a(_),a4b=a("36996"),a4c=a(ag),a4d=a("38406"),a4e=a(P),a4f=a(zS),a4g=a(P),a4h=a("3578"),a4i=a(zS),a4k=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a3x=[0,a(Q),nG,5,nG,32,[0,a(bW),[0,a(bn),[0,a(L),0]]]],a2N=a(p),a2O=a("31476"),a2P=a("37933"),a2Q=a(z),a2R=a("40787"),a2S=a(X),a2T=a("41927"),a2U=a(_),a2V=a("43106"),a2W=a(ag),a2X=a("44262"),a2Y=a(P),a2Z=a(wF),a20=a(P),a21=a("3936"),a22=a(wF),a23=a(p),a24=a("27614"),a25=a("33853"),a26=a(z),a27=a("36646"),a28=a(X),a29=a("37915"),a2_=a(_),a2$=a("39222"),a3a=a(ag),a3b=a("40510"),a3c=a(P),a3d=a(Fb),a3e=a(P),a3f=a("3771"),a3g=a(Fb),a3h=a(p),a3i=a("25904"),a3j=a("31419"),a3k=a(z),a3l=a("34255"),a3m=a(X),a3n=a("35670"),a3o=a(_),a3p=a("37107"),a3q=a(ag),a3r=a("38521"),a3s=a(P),a3t=a(Gb),a3u=a(P),a3v=a("3588"),a3w=a(Gb),a3y=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],bhZ=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2M=[0,a(d),aS,10,aS,14,[0,a(D),[0,a(A),[0,a(e),0]]]],a2J=[0,a(E),F$,14,F$,36,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a2H=a(p),a2I=a(p),a2K=[0,a(d),pa,10,pa,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2G=[0,a(d),pa,10,pa,32,[0,a(D),[0,a(A),[0,a(e),0]]]],a2B=[0,a(aO),vf,5,vf,16,[0,a(os),[0,a(bB),[0,a(aM),0]]]],a2y=a(gQ),a2z=a(qF),a2A=a(fc),a2C=[0,a(d),c$,11,c$,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2x=[0,a(aO),xd,43,xd,70,[0,a(vD),[0,a(bB),[0,a(aM),0]]]],a2t=a(p),a2u=a(fc),a2v=a(gQ),a2w=a(fc),a2D=[0,a(d),c$,11,c$,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2q=[0,a(Q),Eg,5,Eg,16,[0,a(os),[0,a(bn),[0,a(L),0]]]],a2n=a(gw),a2o=a(q2),a2p=a(fn),a2r=[0,a(d),c$,11,c$,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2m=[0,a(Q),Eh,31,Eh,58,[0,a(vD),[0,a(bn),[0,a(L),0]]]],a2i=a(p),a2j=a(fn),a2k=a(gw),a2l=a(fn),a2s=[0,a(d),c$,11,c$,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2h=[0,a(d),c$,47,c$,53,[0,a(D),[0,a(A),[0,a(e),0]]]],a2b=[0,a(d),hh,14,hh,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a17=[0,a(E),hH,14,hH,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a13=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1Z=[0,a(Q),yH,14,yH,33,[0,a(C3),[0,a(bn),[0,a(L),0]]]],a1Y=a(AP),a1U=[0,a(Q),Ca,14,Ca,33,[0,a(CF),[0,a(bn),[0,a(L),0]]]],a1T=a(sk),a1P=[0,a(Q),EE,14,EE,41,[0,a(C3),[0,a(bn),[0,a(L),0]]]],a1O=a("390000"),a1K=[0,a(Q),Fs,14,Fs,41,[0,a(CF),[0,a(bn),[0,a(L),0]]]],a1J=a(qO),a1F=[0,a(Q),FZ,14,FZ,41,[0,a("Article 36"),[0,a(bn),[0,a(L),0]]]],a1E=a(ii),a1A=[0,a(e$),rZ,14,rZ,36,[0,a(Db),[0,a(zj),0]]],a1y=a(vI),a1z=a(ep),a1u=[0,a(Q),yk,14,yk,40,[0,a("Article 35"),[0,a(bn),[0,a(L),0]]]],a1t=a(kn),a1v=[0,a(d),oX,11,oX,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1s=[0,a(d),oX,11,oX,37,[0,a(D),[0,a(A),[0,a(e),0]]]],a1w=[0,a(V),[0,a("montant_forfaitaire_d842_6"),0]],a1B=[0,a(d),l2,11,l2,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1x=[0,a(d),l2,11,l2,33,[0,a(D),[0,a(A),[0,a(e),0]]]],a1C=[0,a(V),[0,a(FM),0]],a1G=[0,a(d),me,11,me,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1D=[0,a(d),me,11,me,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1H=[0,a(V),[0,a("montant_minimal_aide_d842_6"),0]],a1L=[0,a(d),nr,11,nr,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1I=[0,a(d),nr,11,nr,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1M=[0,a(V),[0,a("montant_forfaitaire_d842_11"),0]],a1Q=[0,a(d),kU,11,kU,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1N=[0,a(d),kU,11,kU,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a1R=[0,a(V),[0,a("montant_forfaitaire_d842_12"),0]],a1V=[0,a(d),nd,11,nd,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1S=[0,a(d),nd,11,nd,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1W=[0,a(V),[0,a("coefficient_d842_11"),0]],a10=[0,a(d),my,11,my,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a1X=[0,a(d),my,11,my,30,[0,a(D),[0,a(A),[0,a(e),0]]]],a11=[0,a(V),[0,a("coefficient_d842_12"),0]],a14=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a15=[0,a(V),[0,a(nm),0]],a12=[0,a(E),hq,14,hq,59,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a18=[0,a(E),hH,14,hH,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a19=[0,a(V),[0,a(n8),0]],a16=[0,a(E),hH,14,hH,64,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1_=[0,a(V),[0,a(f7),[0,a(kt),0]]],a1$=[0,a(V),[0,a(f7),[0,a(kt),0]]],a2c=[0,a(d),hh,14,hh,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a2d=[0,a(V),[0,a(kE),0]],a2a=[0,a(d),hh,14,hh,50,[0,a(D),[0,a(A),[0,a(e),0]]]],a2e=[0,a(V),[0,a(eE),[0,a(bk),0]]],a2f=[0,a(V),[0,a(eE),[0,a(bk),0]]],a2E=[0,a(d),c$,11,c$,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2g=[0,a(d),c$,11,c$,38,[0,a(D),[0,a(A),[0,a(e),0]]]],a2F=[0,a(V),[0,a(qG),0]],a2L=[0,a(V),[0,a(bI),0]],bh0=[0,a(V),[0,a(b$),0]],bh6=[0,a(d),fV,11,fV,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bh1=[0,a(d),fV,11,fV,42,[0,a(D),[0,a(A),[0,a(e),0]]]],bh7=[0,a(V),[0,a("seuil_minimal_ressources_m\xc3\xa9nage"),0]],bh$=[0,a(V),[0,a(dh),0]],biE=[0,a(V),[0,a(dE),0]],biM=[0,a(d),hG,10,hG,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biF=[0,a(d),hG,10,hG,15,[0,a(D),[0,a(A),[0,a(e),0]]]],biN=[0,a(V),[0,a(C5),0]],bi4=[0,a(d),hS,11,hS,36,[0,a(D),[0,a(A),[0,a(e),0]]]],biO=[0,a(d),hS,11,hS,36,[0,a(D),[0,a(A),[0,a(e),0]]]],bi5=[0,a(V),[0,a("plafond_mensualit\xc3\xa9_d842_6"),0]],bi8=[0,a(E),jv,14,jv,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bi9=[0,a(V),[0,a(mS),0]],bi6=[0,a(E),jv,14,jv,75,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bja=[0,a(E),hN,14,hN,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjb=[0,a(V),[0,a(oq),0]],bi_=[0,a(E),hN,14,hN,69,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bje=[0,a(E),hA,14,hA,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjf=[0,a(V),[0,a(mI),0]],bjc=[0,a(E),hA,14,hA,70,[0,a(bD),[0,a(an),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],bjg=[0,a(V),[0,a(fH),[0,a(dP),0]]],bjh=[0,a(V),[0,a(fH),[0,a(dP),0]]],bjl=[0,a(d),iZ,14,iZ,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bjm=[0,a(V),[0,a(x1),0]],bji=[0,a(d),iZ,14,iZ,59,[0,a(D),[0,a(A),[0,a(e),0]]]],bjp=[0,a(d),hV,14,hV,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjq=[0,a(V),[0,a(zF),0]],bjn=[0,a(d),hV,14,hV,61,[0,a(D),[0,a(A),[0,a(e),0]]]],bjt=[0,a(d),hF,14,hF,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bju=[0,a(V),[0,a(vM),0]],bjr=[0,a(d),hF,14,hF,67,[0,a(D),[0,a(A),[0,a(e),0]]]],bjx=[0,a(d),gA,14,gA,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjy=[0,a(V),[0,a(FI),0]],bjv=[0,a(d),gA,14,gA,65,[0,a(D),[0,a(A),[0,a(e),0]]]],bjB=[0,a(d),h5,14,h5,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjC=[0,a(V),[0,a(Cv),0]],bjz=[0,a(d),h5,14,h5,70,[0,a(D),[0,a(A),[0,a(e),0]]]],bjF=[0,a(d),hw,14,hw,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjG=[0,a(V),[0,a(CJ),0]],bjD=[0,a(d),hw,14,hw,44,[0,a(D),[0,a(A),[0,a(e),0]]]],bjJ=[0,a(d),iW,14,iW,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjK=[0,a(V),[0,a(Fk),0]],bjH=[0,a(d),iW,14,iW,53,[0,a(D),[0,a(A),[0,a(e),0]]]],bjO=[0,a(d),iT,14,iT,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjP=[0,a(V),[0,a(wr),0]],bjL=[0,a(d),iT,14,iT,49,[0,a(D),[0,a(A),[0,a(e),0]]]],bjW=[0,a(V),[0,a(nQ),[0,a(au),0]]],bjX=[0,a(V),[0,a(nQ),[0,a(au),0]]],bj2=[0,a(d),hu,11,hu,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bjY=[0,a(d),hu,11,hu,47,[0,a(D),[0,a(A),[0,a(e),0]]]],bj3=[0,a(V),[0,a("seuil_minimal_d\xc3\xa9pense_nette_minimale"),0]],bj6=[0,a(d),om,11,om,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bj4=[0,a(d),om,11,om,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bj7=[0,a(V),[0,a(su),0]],bj_=[0,a(d),nh,11,nh,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bj8=[0,a(d),nh,11,nh,30,[0,a(D),[0,a(A),[0,a(e),0]]]],bj$=[0,a(V),[0,a(re),0]],bkc=[0,a(d),oe,11,oe,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bka=[0,a(d),oe,11,oe,38,[0,a(D),[0,a(A),[0,a(e),0]]]],bkd=[0,a(V),[0,a(rb),0]],bkm=[0,a(V),[0,a(eG),0]],bkp=[0,a(d),op,12,op,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bkn=[0,a(d),op,12,op,31,[0,a(D),[0,a(A),[0,a(e),0]]]],bkq=[0,a(V),[0,a(cX),0]],bkD=[0,a(V),[0,a(eo),0]],bkS=[0,a(V),[0,a(bJ),0]],bk1=[0,a(V),[0,a(fk),0]],a1p=[0,a(E),xx,14,xx,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a1k=[0,a(ao),[0,a(bJ),[0,a(ai),0]]],a1l=[0,a(ao),[0,a(bJ),0]],a1m=[0,a(ao),[0,a(bJ),[0,a(ad),0]]],a1n=[0,a(ao),[0,a(bJ),0]],a1o=a(p),a1q=[0,a(d),nL,10,nL,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a1j=[0,a(d),nL,10,nL,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a1g=[0,a(E),wL,14,wL,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a07=[0,a(ao),[0,a(kN),[0,a(ai),0]]],a08=[0,a(ao),[0,a(kN),0]],a09=[0,a(ao),[0,a(kN),[0,a(ad),0]]],a0_=[0,a(ao),[0,a(kN),0]],a0$=[0,a(bk),[0,a(bQ),[0,a(ai),0]]],a1a=[0,a(bk),[0,a(bQ),0]],a1b=[0,a(bk),[0,a(bQ),[0,a(ad),0]]],a1c=[0,a(bk),[0,a(bQ),0]],a1d=a(k6),a1e=a(p),a1f=a(p),a1h=[0,a(d),kD,10,kD,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a06=[0,a(d),kD,10,kD,40,[0,a(N),[0,a(A),[0,a(e),0]]]],a03=[0,a(E),Dn,14,Dn,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0Z=[0,a(ao),[0,a(eo),[0,a(ai),0]]],a00=[0,a(ao),[0,a(eo),0]],a01=[0,a(ao),[0,a(eo),[0,a(ad),0]]],a02=[0,a(ao),[0,a(eo),0]],a04=[0,a(d),nP,10,nP,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0Y=[0,a(d),nP,10,nP,19,[0,a(N),[0,a(A),[0,a(e),0]]]],a0V=[0,a(E),yg,14,yg,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0L=[0,a(ao),[0,a(bI),[0,a(ai),0]]],a0M=[0,a(ao),[0,a(bI),0]],a0N=[0,a(ao),[0,a(bI),[0,a(ad),0]]],a0O=[0,a(ao),[0,a(bI),0]],a0P=[0,a(ao),[0,a(eG),[0,a(ai),0]]],a0Q=[0,a(ao),[0,a(eG),0]],a0R=[0,a(ao),[0,a(eG),[0,a(ad),0]]],a0S=[0,a(ao),[0,a(eG),0]],a0T=a(p),a0U=a(p),a0W=[0,a(d),kx,10,kx,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0K=[0,a(d),kx,10,kx,32,[0,a(N),[0,a(A),[0,a(e),0]]]],a0H=[0,a(E),FA,14,FA,33,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0D=[0,a(E),Cm,14,Cm,47,[0,a(CT),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0u=[0,a(ao),[0,a(dh),[0,a(ai),0]]],a0v=[0,a(ao),[0,a(dh),0]],a0w=[0,a(ao),[0,a(dh),[0,a(ad),0]]],a0x=[0,a(ao),[0,a(dh),0]],a0y=[0,a(ao),[0,a(dh),[0,a(ai),0]]],a0z=[0,a(ao),[0,a(dh),0]],a0A=[0,a(ao),[0,a(dh),[0,a(ad),0]]],a0B=[0,a(ao),[0,a(dh),0]],a0C=a(p),a0E=[0,a(d),od,11,od,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0t=[0,a(d),od,11,od,44,[0,a(N),[0,a(A),[0,a(e),0]]]],a0q=[0,a(E),Em,14,Em,27,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0m=[0,a(E),wz,14,wz,36,[0,a(CT),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0n=[0,a(d),ni,11,ni,33,[0,a(N),[0,a(A),[0,a(e),0]]]],a0l=[0,a(d),ni,11,ni,33,[0,a(N),[0,a(A),[0,a(e),0]]]],a0i=[0,a(E),ym,14,ym,41,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0c=[0,a(E),hI,14,hI,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ_=[0,a(E),h3,14,h3,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ6=[0,a(E),i_,14,i_,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ2=[0,a(E),DT,14,DT,36,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ0=a(p),aZ1=a(p),aZ3=[0,a(d),m0,10,m0,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZZ=[0,a(d),m0,10,m0,32,[0,a(N),[0,a(A),[0,a(e),0]]]],aZV=[0,a(Q),ys,6,ys,79,[0,a(fE),[0,a(fW),[0,a(L),0]]]],aZT=a("8708"),aZU=a("13559"),aZW=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZR=[0,a(Q),4153,6,4154,38,[0,a(fE),[0,a(fW),[0,a(L),0]]]],aZP=a("21362"),aZQ=a("33196"),aZS=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZM=[0,a(Q),rW,6,4172,24,[0,a(fE),[0,a(fW),[0,a(L),0]]]],aZK=a(Al),aZL=a(AG),aZN=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZJ=[0,a(Q),4135,6,4136,46,[0,a(fE),[0,a(fW),[0,a(L),0]]]],aZH=a(Al),aZI=a(AG),aZO=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZF=[0,a(aO),sy,6,sy,79,[0,a(fE),[0,a(bB),[0,a(aM),0]]]],aZD=a("8414"),aZE=a("13100"),aZG=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZB=[0,a(aO),j7,6,kc,38,[0,a(fE),[0,a(bB),[0,a(aM),0]]]],aZz=a("20640"),aZA=a("32073"),aZC=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZw=[0,a(aO),765,6,766,24,[0,a(fE),[0,a(bB),[0,a(aM),0]]]],aZu=a(Eb),aZv=a(zZ),aZx=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZt=[0,a(aO),727,6,728,46,[0,a(fE),[0,a(bB),[0,a(aM),0]]]],aZr=a(Eb),aZs=a(zZ),aZy=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZm=[0,a(Q),CZ,14,CZ,41,[0,a(B$),[0,a(fW),[0,a(L),0]]]],aZi=a(p),aZj=a(fn),aZk=a(gw),aZl=a(fn),aZn=[0,a(d),fD,12,fD,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZg=[0,a(aO),Y,14,Y,41,[0,a(B$),[0,a(bB),[0,a(aM),0]]]],aZc=a(p),aZd=a(fc),aZe=a(gQ),aZf=a(fc),aZh=[0,a(d),fD,12,fD,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aY8=[0,a(E),m6,14,m6,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aY9=[0,a(E),m6,14,m6,61,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aY_=[0,a(ao),[0,a(Er),0]],aY5=[0,a(d),hx,14,hx,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aY1=[0,a(d),ht,14,ht,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aYX=[0,a(d),gJ,14,gJ,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYT=[0,a(d),hX,14,hX,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYP=[0,a(d),fM,14,fM,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYL=[0,a(d),iR,14,iR,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYH=[0,a(d),iw,14,iw,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYD=[0,a(d),ik,14,ik,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYx=[0,a(d),iq,14,iq,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYr=[0,a(E),h7,14,h7,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYn=[0,a(E),jt,14,jt,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYj=[0,a(E),jg,14,jg,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYf=[0,a(Q),yJ,14,yJ,51,[0,a("Article 44"),[0,a(fW),[0,a(L),0]]]],aYe=a(qO),aYa=[0,a(Q),oO,14,oO,41,[0,a("Article 41"),[0,a(fW),[0,a(L),0]]]],aX$=a(kn),aX7=[0,a(Q),Dw,14,Dw,42,[0,a("Article 42"),[0,a(fW),[0,a(L),0]]]],aX6=a(ii),aX8=[0,a(d),o9,11,o9,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aX5=[0,a(d),o9,11,o9,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aX9=[0,a(ao),[0,a("montant_minimal_aide_d842_15"),0]],aYb=[0,a(d),mi,11,mi,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aX_=[0,a(d),mi,11,mi,38,[0,a(N),[0,a(A),[0,a(e),0]]]],aYc=[0,a(ao),[0,a("montant_forfaitaire_d842_15"),0]],aYg=[0,a(d),nJ,11,nJ,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aYd=[0,a(d),nJ,11,nJ,48,[0,a(N),[0,a(A),[0,a(e),0]]]],aYh=[0,a(ao),[0,a("montant_minimal_d\xc3\xa9pense_nette_d842_17"),0]],aYk=[0,a(E),jg,14,jg,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYl=[0,a(ao),[0,a(BL),0]],aYi=[0,a(E),jg,14,jg,55,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYo=[0,a(E),jt,14,jt,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYp=[0,a(ao),[0,a(nm),0]],aYm=[0,a(E),jt,14,jt,59,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYs=[0,a(E),h7,14,h7,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYt=[0,a(ao),[0,a(n8),0]],aYq=[0,a(E),h7,14,h7,64,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aYu=[0,a(ao),[0,a(f7),[0,a(kC),0]]],aYv=[0,a(ao),[0,a(f7),[0,a(kC),0]]],aYy=[0,a(d),iq,14,iq,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYz=[0,a(ao),[0,a(kE),0]],aYw=[0,a(d),iq,14,iq,50,[0,a(N),[0,a(A),[0,a(e),0]]]],aYA=[0,a(ao),[0,a(eE),[0,a(bk),0]]],aYB=[0,a(ao),[0,a(eE),[0,a(bk),0]]],aYE=[0,a(d),ik,14,ik,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYF=[0,a(ao),[0,a(x1),0]],aYC=[0,a(d),ik,14,ik,59,[0,a(N),[0,a(A),[0,a(e),0]]]],aYI=[0,a(d),iw,14,iw,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYJ=[0,a(ao),[0,a(zF),0]],aYG=[0,a(d),iw,14,iw,61,[0,a(N),[0,a(A),[0,a(e),0]]]],aYM=[0,a(d),iR,14,iR,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYN=[0,a(ao),[0,a(vM),0]],aYK=[0,a(d),iR,14,iR,67,[0,a(N),[0,a(A),[0,a(e),0]]]],aYQ=[0,a(d),fM,14,fM,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYR=[0,a(ao),[0,a(FI),0]],aYO=[0,a(d),fM,14,fM,65,[0,a(N),[0,a(A),[0,a(e),0]]]],aYU=[0,a(d),hX,14,hX,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYV=[0,a(ao),[0,a(Cv),0]],aYS=[0,a(d),hX,14,hX,70,[0,a(N),[0,a(A),[0,a(e),0]]]],aYY=[0,a(d),gJ,14,gJ,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aYZ=[0,a(ao),[0,a(CJ),0]],aYW=[0,a(d),gJ,14,gJ,44,[0,a(N),[0,a(A),[0,a(e),0]]]],aY2=[0,a(d),ht,14,ht,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aY3=[0,a(ao),[0,a(Fk),0]],aY0=[0,a(d),ht,14,ht,53,[0,a(N),[0,a(A),[0,a(e),0]]]],aY6=[0,a(d),hx,14,hx,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aY7=[0,a(ao),[0,a(wr),0]],aY4=[0,a(d),hx,14,hx,49,[0,a(N),[0,a(A),[0,a(e),0]]]],aY$=[0,a(ao),[0,a(nQ),[0,a(au),0]]],aZa=[0,a(ao),[0,a(nQ),[0,a(au),0]]],aZo=[0,a(d),fD,12,fD,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZb=[0,a(d),fD,12,fD,39,[0,a(N),[0,a(A),[0,a(e),0]]]],aZp=[0,a(ao),[0,a(qG),0]],aZX=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZq=[0,a(d),cl,12,cl,29,[0,a(N),[0,a(A),[0,a(e),0]]]],aZY=[0,a(ao),[0,a(vg),0]],aZ4=[0,a(ao),[0,a(bI),0]],aZ7=[0,a(E),i_,14,i_,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ8=[0,a(ao),[0,a(mS),0]],aZ5=[0,a(E),i_,14,i_,75,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aZ$=[0,a(E),h3,14,h3,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0a=[0,a(ao),[0,a(oq),0]],aZ9=[0,a(E),h3,14,h3,69,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0d=[0,a(E),hI,14,hI,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0e=[0,a(ao),[0,a(mI),0]],a0b=[0,a(E),hI,14,hI,70,[0,a(bz),[0,a(ap),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],a0f=[0,a(ao),[0,a(fH),[0,a(dP),0]]],a0g=[0,a(ao),[0,a(fH),[0,a(dP),0]]],a0j=[0,a(d),iM,12,iM,39,[0,a(N),[0,a(A),[0,a(e),0]]]],a0h=[0,a(d),iM,12,iM,39,[0,a(N),[0,a(A),[0,a(e),0]]]],a0k=[0,a(ao),[0,a(rb),0]],a0o=[0,a(ao),[0,a(dh),0]],a0r=[0,a(d),kG,12,kG,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0p=[0,a(d),kG,12,kG,25,[0,a(N),[0,a(A),[0,a(e),0]]]],a0s=[0,a(ao),[0,a(F2),0]],a0F=[0,a(ao),[0,a(eG),0]],a0I=[0,a(d),l7,12,l7,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0G=[0,a(d),l7,12,l7,31,[0,a(N),[0,a(A),[0,a(e),0]]]],a0J=[0,a(ao),[0,a(cX),0]],a0X=[0,a(ao),[0,a(eo),0]],a05=[0,a(ao),[0,a(kN),0]],a1i=[0,a(ao),[0,a(bJ),0]],a1r=[0,a(ao),[0,a(fk),0]],aX1=[0,a(E),wj,24,wj,43,[0,a(FD),[0,a(sw),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aX0=a(p),aX2=[0,a(d),hO,12,hO,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXZ=[0,a(d),rw,14,rw,33,[0,a(K),[0,a(A),[0,a(e),0]]]],aXU=[0,a(E),v1,24,v1,46,[0,a(FD),[0,a(sw),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aXV=[0,a(d),i4,12,i4,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXT=[0,a(d),rp,14,rp,36,[0,a(K),[0,a(A),[0,a(e),0]]]],aXP=[0,a(aD),[0,a(fk),[0,a(ai),0]]],aXQ=[0,a(aD),[0,a(fk),0]],aXR=[0,a(aD),[0,a(fk),[0,a(ad),0]]],aXS=[0,a(aD),[0,a(fk),0]],aXW=[0,a(d),i4,12,i4,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXO=[0,a(d),i4,12,i4,34,[0,a(K),[0,a(A),[0,a(e),0]]]],aXJ=[0,a(d),gB,14,gB,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXF=[0,a(d),hk,14,hk,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXB=[0,a(d),gI,14,gI,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXx=[0,a(d),gM,14,gM,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXt=[0,a(d),gS,5,mz,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXp=[0,a(d),gs,14,gs,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXl=[0,a(d),je,14,je,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aXh=[0,a(d),ia,14,ia,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXd=[0,a(d),h2,14,h2,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aW$=[0,a(d),gD,14,gD,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aW7=[0,a(d),i6,14,i6,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aW3=[0,a(d),ho,14,ho,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aWZ=[0,a(d),iI,14,iI,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aW0=[0,a(d),iI,14,iI,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aW1=[0,a(bh),[0,a("calcul_apl_locatif.loyer_principal_base"),0]],aWY=[0,a(d),iI,14,iI,48,[0,a(K),[0,a(A),[0,a(e),0]]]],aW4=[0,a(d),ho,14,ho,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aW5=[0,a(bh),[0,a("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"),0]],aW2=[0,a(d),ho,14,ho,60,[0,a(K),[0,a(A),[0,a(e),0]]]],aW8=[0,a(d),i6,14,i6,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aW9=[0,a(bh),[0,a("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),0]],aW6=[0,a(d),i6,14,i6,78,[0,a(K),[0,a(A),[0,a(e),0]]]],aXa=[0,a(d),gD,14,gD,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aXb=[0,a(bh),[0,a("calcul_apl_locatif.date_courante"),0]],aW_=[0,a(d),gD,14,gD,46,[0,a(K),[0,a(A),[0,a(e),0]]]],aXe=[0,a(d),h2,14,h2,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aXf=[0,a(bh),[0,a("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"),0]],aXc=[0,a(d),h2,14,h2,58,[0,a(K),[0,a(A),[0,a(e),0]]]],aXi=[0,a(d),ia,14,ia,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXj=[0,a(bh),[0,a("calcul_apl_locatif.situation_familiale_calcul_apl"),0]],aXg=[0,a(d),ia,14,ia,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXm=[0,a(d),je,14,je,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aXn=[0,a(bh),[0,a("calcul_apl_locatif.zone"),0]],aXk=[0,a(d),je,14,je,37,[0,a(K),[0,a(A),[0,a(e),0]]]],aXq=[0,a(d),gs,14,gs,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXr=[0,a(bh),[0,a("calcul_apl_locatif.logement_est_chambre"),0]],aXo=[0,a(d),gs,14,gs,53,[0,a(K),[0,a(A),[0,a(e),0]]]],aXu=[0,a(d),gS,5,mz,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXv=[0,a(bh),[0,a("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),0]],aXs=[0,a(d),gS,5,mz,63,[0,a(K),[0,a(A),[0,a(e),0]]]],aXy=[0,a(d),gM,14,gM,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXz=[0,a(bh),[0,a("calcul_apl_locatif.type_aide"),0]],aXw=[0,a(d),gM,14,gM,42,[0,a(K),[0,a(A),[0,a(e),0]]]],aXC=[0,a(d),gI,14,gI,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXD=[0,a(bh),[0,a("calcul_apl_locatif.colocation"),0]],aXA=[0,a(d),gI,14,gI,43,[0,a(K),[0,a(A),[0,a(e),0]]]],aXG=[0,a(d),hk,14,hk,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXH=[0,a(bh),[0,a("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"),0]],aXE=[0,a(d),hk,14,hk,59,[0,a(K),[0,a(A),[0,a(e),0]]]],aXK=[0,a(d),gB,14,gB,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXL=[0,a(bh),[0,a("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"),0]],aXI=[0,a(d),gB,14,gB,55,[0,a(K),[0,a(A),[0,a(e),0]]]],aXM=[0,a(bh),[0,a(Fh),[0,a(aD),0]]],aXN=[0,a(bh),[0,a(Fh),[0,a(aD),0]]],aXX=[0,a(bh),[0,a(aw),0]],aX3=[0,a(d),hO,12,hO,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aXY=[0,a(d),hO,12,hO,31,[0,a(K),[0,a(A),[0,a(e),0]]]],aX4=[0,a(bh),[0,a(cX),0]],aWS=[0,a(mC),67,5,71,21,[0,a(gy),[0,a(gt),[0,a(eb),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],aWT=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWR=[0,a(mC),56,5,57,50,[0,a(gy),[0,a(gt),[0,a(eb),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],aWU=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWV=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWQ=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWW=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWP=[0,a(bG),40,12,40,24,[0,a(bK),0]],aWL=[0,a(mC),77,5,81,24,[0,a(gy),[0,a(gt),[0,a(eb),[0,a(az),[0,a(ab),[0,a(ae),0]]]]]]],aWM=[0,a(bG),42,12,42,31,[0,a(bK),0]],aWK=[0,a(bG),42,12,42,31,[0,a(bK),0]],aWN=[0,a(bG),42,12,42,31,[0,a(bK),0]],aWJ=[0,a(bG),42,12,42,31,[0,a(bK),0]],aWF=[0,a(rd),62,18,62,41,[0,a(xK),[0,a(eX),[0,a(gK),[0,a(dZ),[0,a(c9),[0,a(ae),0]]]]]]],aWD=a(oT),aWE=a(n7),aWG=[0,a(bG),44,11,44,27,[0,a(bK),0]],aWC=[0,a(rd),31,14,31,30,[0,a(l6),[0,a(nX),[0,a(eb),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],aWA=a(oT),aWB=a(n7),aWp=[5,0],aWq=[4,0],aWr=[3,0],aWs=[2,0],aWt=[1,0],aWu=[0,0],aWv=[0,a(mC),dT,5,w_,30,[0,a(CS),[0,a(yF),[0,a(kg),[0,a(dZ),[0,a(ab),[0,a(ae),0]]]]]]],aWw=[0,a(bG),46,12,46,35,[0,a(bK),0]],aWo=[0,a(bG),46,12,46,35,[0,a(bK),0]],aWi=[0,a(bG),53,14,53,28,[0,a(bK),0]],aWe=[0,a(bG),54,14,54,32,[0,a(bK),0]],aWa=[0,a(rd),21,14,21,26,[0,a(l6),[0,a(nX),[0,a(eb),[0,a(az),[0,a(c9),[0,a(ae),0]]]]]]],aWb=[0,a(bG),45,12,45,24,[0,a(bK),0]],aV$=[0,a(bG),45,12,45,24,[0,a(bK),0]],aWc=[0,a(cq),[0,a(zd),0]],aWf=[0,a(bG),54,14,54,32,[0,a(bK),0]],aWg=[0,a(cq),[0,a(Fj),0]],aWd=[0,a(bG),54,14,54,32,[0,a(bK),0]],aWj=[0,a(bG),53,14,53,28,[0,a(bK),0]],aWk=[0,a(cq),[0,a(DN),0]],aWh=[0,a(bG),53,14,53,28,[0,a(bK),0]],aWl=[0,a(cq),[0,a(f8),[0,a(hp),0]]],aWm=[0,a(cq),[0,a(f8),[0,a(hp),0]]],aWx=[0,a(bG),46,12,46,35,[0,a(bK),0]],aWn=[0,a(bG),46,12,46,35,[0,a(bK),0]],aWy=[0,a(cq),[0,a(vn),0]],aWH=[0,a(bG),44,11,44,27,[0,a(bK),0]],aWz=[0,a(bG),44,11,44,27,[0,a(bK),0]],aWI=[0,a(cq),[0,a(Aq),0]],aWO=[0,a(cq),[0,a(iU),0]],aWX=[0,a(cq),[0,a(dl),0]],aV6=[0,a(E),r5,14,r5,32,[0,a(mK),[0,a(iB),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aV4=a(cI),aV5=a(p),aVZ=[0,a(E),854,6,c$,35,[0,a("Article R822-20"),[0,a("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aV0=[0,a(d),ib,12,ib,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVY=[0,a(E),kK,14,kK,41,[0,a(mb),[0,a(md),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVU=[0,a(E),Gi,14,Gi,32,[0,a("Article R822-8"),[0,a(iB),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVT=a(p),aVN=[0,a(E),ip,14,ip,65,[0,a(mK),[0,a(iB),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVJ=[0,a(E),y9,14,y9,33,[0,a("Article R822-10"),[0,a(iB),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVA=a(p),aVB=a(p),aVG=a(X),aVH=a("90100"),aVI=a("135000"),aVC=a(p),aVD=a(p),aVE=a(p),aVF=a(p),aVw=[0,a(E),BE,14,BE,62,[0,a(mb),[0,a(md),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVv=a(p),aVr=[0,a(d),i0,51,i0,57,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVn=[0,a(Q),11,14,11,41,[0,a("Article 3"),[0,a(xL),[0,a(L),0]]]],aVm=a("9500"),aVi=[0,a(Q),21,14,21,41,[0,a("Article 4"),[0,a(xL),[0,a(L),0]]]],aVh=a("258900"),aVd=[0,a(d),CK,46,CK,52,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVe=[0,a(d),oZ,10,oZ,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVc=[0,a(d),oZ,10,oZ,15,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVf=[0,a(dV),[0,a(C5),0]],aVj=[0,a(d),mF,11,mF,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVg=[0,a(d),mF,11,mF,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVk=[0,a(dV),[0,a("montant_forfaitaire_r_822_8"),0]],aVo=[0,a(d),n0,11,n0,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVl=[0,a(d),n0,11,n0,38,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVp=[0,a(dV),[0,a("montant_forfaitaire_r_822_7"),0]],aVs=[0,a(d),i0,11,i0,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVq=[0,a(d),i0,11,i0,42,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVt=[0,a(dV),[0,a("ressources_forfaitaires_r822_20"),0]],aVx=[0,a(d),nE,11,nE,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVu=[0,a(d),nE,11,nE,59,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVy=[0,a(dV),[0,a("ressources_personnes_vivant_habituellement_foyer"),0]],aVK=[0,a(d),iQ,11,iQ,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVz=[0,a(d),iQ,11,iQ,30,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVL=[0,a(dV),[0,a("abattement_r_822_10"),0]],aVO=[0,a(E),ip,14,ip,65,[0,a(mK),[0,a(iB),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVP=[0,a(dV),[0,a(D4),0]],aVM=[0,a(E),ip,14,ip,65,[0,a(mK),[0,a(iB),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aVQ=[0,a(dV),[0,a(mZ),[0,a(f4),0]]],aVR=[0,a(dV),[0,a(mZ),[0,a(f4),0]]],aVV=[0,a(d),l8,11,l8,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVS=[0,a(d),l8,11,l8,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVW=[0,a(dV),[0,a("abattement_r_822_8"),0]],aV1=[0,a(d),ib,12,ib,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aVX=[0,a(d),ib,12,ib,39,[0,a(cc),[0,a(i),[0,a(e),0]]]],aV2=[0,a(dV),[0,a("ressources_prises_en_compte"),0]],aV7=[0,a(d),mE,11,mE,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aV3=[0,a(d),mE,11,mE,29,[0,a(cc),[0,a(i),[0,a(e),0]]]],aV8=[0,a(dV),[0,a("abattement_r_822_7"),0]],aV9=[0,a(E),di,13,Dv,74,[0,a(mb),[0,a(md),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aV_=[0,a(E),di,13,Dv,74,[0,a(mb),[0,a(md),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aU4=[0,a(d),sq,14,sq,56,[0,a(Z),[0,a(i),[0,a(e),0]]]],aU0=[0,a(d),DX,14,DX,63,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUY=a(b4),aUZ=a(b4),aUU=[0,a(E),qC,14,qC,49,[0,a(ko),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUQ=[0,a(aU),[0,a(kW),[0,a(ai),0]]],aUR=[0,a(aU),[0,a(kW),0]],aUS=[0,a(aU),[0,a(kW),[0,a(ad),0]]],aUT=[0,a(aU),[0,a(kW),0]],aUK=a(Du),aUJ=[0,a(E),1213,4,1219,48,[0,a(ko),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUL=[0,a(d),dX,11,dX,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUE=[0,a(aU),[0,a(ff),[0,a(ai),0]]],aUF=[0,a(aU),[0,a(ff),0]],aUG=[0,a(aU),[0,a(ff),[0,a(ad),0]]],aUH=[0,a(aU),[0,a(ff),0]],aUI=[0,a(E),x_,5,x_,44,[0,a(ko),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUM=[0,a(d),dX,11,dX,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUC=[0,a(E),1149,5,fj,44,[0,a(ko),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUD=[0,a(d),dX,11,dX,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUB=[0,a(d),dX,11,dX,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUN=[0,a(d),dX,11,dX,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUA=[0,a(d),dX,11,dX,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUv=a(Du),aUw=[0,0],aUu=[0,a(E),1173,5,1189,10,[0,a(ko),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aUx=[0,a(d),fo,12,fo,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUt=[0,a(d),fo,12,fo,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUy=[0,a(d),fo,12,fo,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUs=[0,a(d),fo,12,fo,30,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUo=[0,a(d),rZ,5,vy,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUp=[0,a(d),fB,12,fB,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUn=[0,a(d),fB,12,fB,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUj=[0,a(c_),f9,14,f9,31,[0,a("Article L351-8"),[0,a("Section 5 : Taux et montant de la pension"),[0,a("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"),[0,a("Titre V : Assurance vieillesse - Assurance veuvage"),[0,a("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"),[0,a(ab),[0,a(ae),0]]]]]]]],aUd=[0,a(aG),72,5,73,52,[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],aUe=[0,a(d),dA,11,dA,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUc=[0,a(aG),65,5,68,52,[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]],aUf=[0,a(d),dA,11,dA,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUb=[0,a(d),dA,11,dA,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT6=[0,a(aG),hZ,18,hZ,75,[0,a(mJ),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aT5=a(p),aT7=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT2=[5,0],aT3=[4,0],aT4=[0,a(aG),vP,18,AE,45,[0,a(mJ),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aT1=a(p),aT8=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT0=[0,a(E),iM,5,iM,58,[0,a(E8),[0,a(Es),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aT9=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTZ=[0,a(aG),hm,33,hm,58,[0,a(mJ),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTY=a(p),aTU=[0,a(c_),fi,14,fi,32,[0,a(kp),[0,a(j9),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(jd),[0,a(ab),[0,a(ae),0]]]]]]]]]],aTP=[0,a(aG),F4,18,F4,44,[0,a("Article L822-10"),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTQ=[0,a(d),fp,11,fp,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTO=[0,a(d),fp,11,fp,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTH=a(b4),aTG=a(b4),aTF=[0,a(aG),171,5,rH,65,[0,a(gq),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTI=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTE=[0,a(aG),156,5,c6,30,[0,a(gq),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTJ=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTD=[0,a(aG),fi,5,w_,33,[0,a(Gf),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTK=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTC=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTw=[0,a(aG),203,5,208,39,[0,a(D0),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTx=[0,a(d),d9,11,d9,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTv=[0,a(aG),197,5,198,34,[0,a(D0),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aTy=[0,a(d),d9,11,d9,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTu=[0,a(d),d9,11,d9,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTp=[0,a(c_),329,5,330,34,[0,a(rY),[0,a(rG),[0,a(r6),[0,a(qQ),[0,a(rt),[0,a(a9),[0,a(ae),0]]]]]]]],aTo=a("999840"),aTq=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTm=[0,a(c_),qM,5,sq,34,[0,a(rY),[0,a(rG),[0,a(r6),[0,a(qQ),[0,a(rt),[0,a(a9),[0,a(ae),0]]]]]]]],aTl=a("1041840"),aTn=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTj=[0,a(c_),339,5,340,34,[0,a(rY),[0,a(rG),[0,a(r6),[0,a(qQ),[0,a(rt),[0,a(a9),[0,a(ae),0]]]]]]]],aTi=a("1083840"),aTk=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTg=[0,a(e$),58,5,59,33,[0,a('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'),[0,a(se),0]]],aTf=a("1153302"),aTh=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTd=[0,a(e$),90,5,91,33,[0,a('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'),[0,a(se),0]]],aTc=a("1100144"),aTe=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTa=[0,a(e$),dz,5,kK,33,[0,a('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'),[0,a(se),0]]],aS$=a("1088175"),aTb=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS6=[0,a(aG),c5,5,ig,67,[0,a(Gf),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aS7=[0,a(d),fX,11,fX,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS5=[0,a(d),fX,11,fX,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS1=[0,a(aG),mo,14,mo,40,[0,a(mJ),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aSV=[0,a(c_),dz,14,dz,61,[0,a(kp),[0,a(j9),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(jd),[0,a(ab),[0,a(ae),0]]]]]]]]]],aSP=[0,a(aG),46,5,46,41,[0,a("Article L821-2"),[0,a(Aa),[0,a(E$),[0,a(yw),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]]]],aSQ=[0,a(d),dm,12,dm,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSO=[0,a(d),dm,12,dm,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSR=[0,a(d),dm,12,dm,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSs=a(z),aSE=a(X),aSF=a(X),aSG=a(X),aSH=a(z),aSI=a(X),aSt=a(qI),aSu=a(qI),aSz=a(l$),aSA=a(l$),aSB=a(l$),aSC=a(qI),aSD=a(l$),aSv=a("8"),aSw=a(CR),aSx=a(CR),aSy=[0,a(E),1035,5,gR,65,[0,a("Article R822-25"),[0,a("Section 3 : Conditions relatives au logement"),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aSJ=[0,a(d),ee,12,ee,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSr=[0,a(d),ee,12,ee,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSK=[0,a(d),ee,12,ee,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSm=[0,a(aG),Fc,18,Fc,67,[0,a("Article L822-8"),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aSn=[0,a(d),fG,11,fG,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSl=[0,a(d),fG,11,fG,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSg=[0,a(aG),Ck,18,Ck,61,[0,a("Article L822-9"),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aSh=[0,a(d),fU,11,fU,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSf=[0,a(d),fU,11,fU,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSb=[0,a(aG),o_,14,o_,43,[0,a(gq),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aR9=[0,a(E),Ed,14,Ed,37,[0,a(E8),[0,a(Es),[0,a(dC),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aR8=a("3000000"),aR4=[0,a(E),a_,14,a_,41,[0,a(FN),[0,a(BG),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aR3=a(DY),aRZ=[0,a(E),be,14,be,42,[0,a(FN),[0,a(BG),[0,a(bd),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRY=a(DY),aRU=[0,a(d),h1,11,h1,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRQ=[0,a(d),hL,11,hL,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRR=[0,a(d),hL,11,hL,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRP=[0,a(d),hL,11,hL,25,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRS=[0,a(aU),[0,a("condition_pr\xc3\xaat"),0]],aRV=[0,a(d),h1,11,h1,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRT=[0,a(d),h1,11,h1,48,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRW=[0,a(aU),[0,a("condition_peuplement_logement_l822_10"),0]],aR0=[0,a(d),oz,11,oz,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aRX=[0,a(d),oz,11,oz,39,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR1=[0,a(aU),[0,a("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"),0]],aR5=[0,a(d),nK,11,nK,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR2=[0,a(d),nK,11,nK,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR6=[0,a(aU),[0,a("seuil_l822_3_parts_usufruit"),0]],aR_=[0,a(d),o4,11,o4,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR7=[0,a(d),o4,11,o4,34,[0,a(Z),[0,a(i),[0,a(e),0]]]],aR$=[0,a(aU),[0,a("seuil_l822_5_patrimoine"),0]],aSc=[0,a(d),mc,11,mc,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSa=[0,a(d),mc,11,mc,40,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSd=[0,a(aU),[0,a("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"),0]],aSi=[0,a(d),fU,11,fU,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSe=[0,a(d),fU,11,fU,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSj=[0,a(aU),[0,a("condition_non_ouverture_l822_9_decence_logement"),0]],aSo=[0,a(d),fG,11,fG,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSk=[0,a(d),fG,11,fG,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSp=[0,a(aU),[0,a("condition_non_ouverture_l822_8"),0]],aSL=[0,a(d),ee,12,ee,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSq=[0,a(d),ee,12,ee,38,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSM=[0,a(aU),[0,a("condition_logement_surface"),0]],aSS=[0,a(d),dm,12,dm,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aSN=[0,a(d),dm,12,dm,51,[0,a(Z),[0,a(i),[0,a(e),0]]]],aST=[0,a(aU),[0,a("condition_logement_r\xc3\xa9sidence_principale"),0]],aSW=[0,a(c_),dz,14,dz,61,[0,a(kp),[0,a(j9),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(jd),[0,a(ab),[0,a(ae),0]]]]]]]]]],aSX=[0,a(aU),[0,a("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"),0]],aSU=[0,a(c_),dz,14,dz,61,[0,a(kp),[0,a(j9),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(jd),[0,a(ab),[0,a(ae),0]]]]]]]]]],aSY=[0,a(aU),[0,a(CO),[0,a(rO),0]]],aSZ=[0,a(aU),[0,a(CO),[0,a(rO),0]]],aS2=[0,a(d),mq,11,mq,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS0=[0,a(d),mq,11,mq,37,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS3=[0,a(aU),[0,a("patrimoine_total_demandeur"),0]],aS8=[0,a(d),fX,11,fX,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS4=[0,a(d),fX,11,fX,32,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS9=[0,a(aU),[0,a("condition_nationalit\xc3\xa9"),0]],aTr=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aS_=[0,a(d),cV,11,cV,41,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTs=[0,a(aU),[0,a("plafond_individuel_l815_9_s\xc3\xa9cu"),0]],aTz=[0,a(d),d9,11,d9,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTt=[0,a(d),d9,11,d9,44,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTA=[0,a(aU),[0,a("condition_logement_location_tiers"),0]],aTL=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTB=[0,a(d),d1,11,d1,45,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTM=[0,a(aU),[0,a("condition_logement_mode_occupation"),0]],aTR=[0,a(d),fp,11,fp,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTN=[0,a(d),fp,11,fp,58,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTS=[0,a(aU),[0,a("condition_ouverture_l822_10_peuplement_logement"),0]],aTV=[0,a(d),mw,11,mw,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTT=[0,a(d),mw,11,mw,29,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTW=[0,a(aU),[0,a("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]],aT_=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aTX=[0,a(d),dF,11,dF,36,[0,a(Z),[0,a(i),[0,a(e),0]]]],aT$=[0,a(aU),[0,a("patrimoine_pris_en_compte"),0]],aUg=[0,a(d),dA,11,dA,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUa=[0,a(d),dA,11,dA,31,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUh=[0,a(aU),[0,a(Bk),0]],aUk=[0,a(d),id,11,id,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUi=[0,a(d),id,11,id,28,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUl=[0,a(aU),[0,a("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]],aUq=[0,a(d),fB,12,fB,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUm=[0,a(d),fB,12,fB,23,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUr=[0,a(aU),[0,a(ob),0]],aUz=[0,a(aU),[0,a(ff),0]],aUO=[0,a(aU),[0,a(kW),0]],aUV=[0,a(d),k5,11,k5,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUP=[0,a(d),k5,11,k5,46,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUW=[0,a(aU),[0,a("personnes_\xc3\xa0_charge_prises_en_compte"),0]],aU1=[0,a(d),oF,12,oF,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aUX=[0,a(d),oF,12,oF,61,[0,a(Z),[0,a(i),[0,a(e),0]]]],aU2=[0,a(aU),[0,a(kL),0]],aU5=[0,a(d),n9,12,n9,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aU3=[0,a(d),n9,12,n9,54,[0,a(Z),[0,a(i),[0,a(e),0]]]],aU6=[0,a(aU),[0,a(r_),0]],aU8=a(qE),aU7=[0,a(aG),mB,13,mB,47,[0,a(gq),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aVa=[0,a(aG),mB,13,mB,47,[0,a(gq),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aU_=a(qE),aU9=[0,a(aG),jw,13,jw,48,[0,a(gq),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aU$=[0,a(aG),jw,13,jw,48,[0,a(gq),[0,a(bd),[0,a(ac),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],aRM=[0,a(E),DB,14,DB,36,[0,a(iN),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRH=[0,a(aj),[0,a(bJ),[0,a(ai),0]]],aRI=[0,a(aj),[0,a(bJ),0]],aRJ=[0,a(aj),[0,a(bJ),[0,a(ad),0]]],aRK=[0,a(aj),[0,a(bJ),0]],aRL=a(p),aRN=[0,a(d),kT,10,kT,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRG=[0,a(d),kT,10,kT,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRD=[0,a(E),yV,14,yV,33,[0,a(iN),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRB=a(p),aRC=a(p),aRx=[0,a(E),w2,14,w2,36,[0,a(iN),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRm=[0,a(aj),[0,a(eK),[0,a(ai),0]]],aRn=[0,a(aj),[0,a(eK),0]],aRo=[0,a(aj),[0,a(eK),[0,a(ad),0]]],aRp=[0,a(aj),[0,a(eK),0]],aRq=[0,a(bk),[0,a(bQ),[0,a(ai),0]]],aRr=[0,a(bk),[0,a(bQ),0]],aRs=[0,a(bk),[0,a(bQ),[0,a(ad),0]]],aRt=[0,a(bk),[0,a(bQ),0]],aRu=a(k6),aRv=a(p),aRw=a(p),aRy=[0,a(d),nw,10,nw,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRl=[0,a(d),nw,10,nw,40,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRi=[0,a(E),Fx,14,Fx,49,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aRg=a(hf),aRh=a(hf),aRc=[0,a(E),u8,14,u8,33,[0,a(iN),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ_=[0,a(E),yQ,14,yQ,36,[0,a(iN),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQ0=[0,a(aj),[0,a(bI),[0,a(ai),0]]],aQ1=[0,a(aj),[0,a(bI),0]],aQ2=[0,a(aj),[0,a(bI),[0,a(ad),0]]],aQ3=[0,a(aj),[0,a(bI),0]],aQ4=[0,a(aj),[0,a(kX),[0,a(ai),0]]],aQ5=[0,a(aj),[0,a(kX),0]],aQ6=[0,a(aj),[0,a(kX),[0,a(ad),0]]],aQ7=[0,a(aj),[0,a(kX),0]],aQ8=a(p),aQ9=a(p),aQ$=[0,a(d),oa,10,oa,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQZ=[0,a(d),oa,10,oa,20,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQW=[0,a(E),yq,14,yq,49,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQT=a(c7),aQU=a(c7),aQV=a(l_),aQO=[0,a(E),3426,5,3438,77,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQM=a(cI),aQN=a(b4),aQP=[0,a(d),fP,12,fP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQK=[0,a(E),DD,5,DD,75,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQL=[0,a(d),fP,12,fP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQD=[0,a(aO),DO,14,DO,42,[0,a(i9),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],aQC=a(dj),aQE=[0,a(d),eA,10,eA,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQB=[0,a(aO),vF,14,vF,42,[0,a(i9),[0,a(bB),[0,a(aM),0]]]],aQA=a(dj),aQF=[0,a(d),eA,10,eA,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQz=[0,a(Q),xr,14,xr,42,[0,a(i9),[0,a(aQ),[0,a(L),0]]]],aQy=a(dj),aQG=[0,a(d),eA,10,eA,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQu=[0,a(E),EG,14,EG,55,[0,a(rR),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQp=[0,a(aj),[0,a(kB),[0,a(ai),0]]],aQq=[0,a(aj),[0,a(kB),0]],aQr=[0,a(aj),[0,a(kB),[0,a(ad),0]]],aQs=[0,a(aj),[0,a(kB),0]],aQt=a(p),aQv=[0,a(d),oN,11,oN,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQo=[0,a(d),oN,11,oN,52,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQl=[0,a(E),AA,14,AA,49,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQk=a(hf),aQe=[0,a(E),jp,14,jp,70,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQa=[0,a(E),jn,14,jn,69,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP8=[0,a(E),h9,14,h9,75,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP3=[0,a(E),z6,5,z6,44,[0,a(Bs),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPV=[0,a(aj),[0,a(dB),[0,a(ai),0]]],aPW=[0,a(aj),[0,a(dB),0]],aPX=[0,a(aj),[0,a(dB),[0,a(ad),0]]],aPY=[0,a(aj),[0,a(dB),0]],aPZ=[0,a(aj),[0,a(dB),[0,a(ai),0]]],aP0=[0,a(aj),[0,a(dB),0]],aP1=[0,a(aj),[0,a(dB),[0,a(ad),0]]],aP2=[0,a(aj),[0,a(dB),0]],aP4=[0,a(d),gG,10,gG,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPU=[0,a(E),Cz,14,Cz,42,[0,a(Bs),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPQ=[0,a(aj),[0,a(dB),[0,a(ai),0]]],aPR=[0,a(aj),[0,a(dB),0]],aPS=[0,a(aj),[0,a(dB),[0,a(ad),0]]],aPT=[0,a(aj),[0,a(dB),0]],aPL=[0,a(E),xE,5,xE,40,[0,a(rR),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPM=[0,a(d),jc,11,jc,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPK=[0,a(E),Ea,14,Ea,44,[0,a(rR),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPN=[0,a(d),jc,11,jc,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPJ=[0,a(d),jc,11,jc,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPG=[0,a(E),zN,14,zN,36,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aPA=[0,a(Q),gD,5,gM,36,[0,a(aQ),[0,a(L),0]]],aPu=a(p),aPv=a("86900"),aPw=a("97100"),aPx=a(z),aPy=a("10200"),aPz=a("107300"),aPB=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPr=[0,a(Q),1061,5,gu,36,[0,a(aQ),[0,a(L),0]]],aO$=a(p),aPa=a(xe),aPb=a(v0),aPc=a(z),aPd=a(Gn),aPe=a(yW),aPf=a(p),aPg=a(AQ),aPh=a(EC),aPi=a(z),aPj=a(wk),aPk=a(Ak),aPl=a(p),aPm=a(zn),aPn=a(E0),aPo=a(z),aPp=a("34600"),aPq=a(mt),aPs=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aO9=[0,a(Q),gv,5,gx,36,[0,a(aQ),[0,a(L),0]]],aOR=a(p),aOS=a(yC),aOT=a(rQ),aOU=a(z),aOV=a(Go),aOW=a(Cr),aOX=a(p),aOY=a(EQ),aOZ=a(rg),aO0=a(z),aO1=a(ot),aO2=a(Ax),aO3=a(p),aO4=a(D1),aO5=a(Fy),aO6=a(z),aO7=a(DC),aO8=a(x$),aO_=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOP=[0,a(Q),sA,5,1131,36,[0,a(aQ),[0,a(L),0]]],aOx=a(p),aOy=a("198100"),aOz=a("239000"),aOA=a(z),aOB=a("40900"),aOC=a("279900"),aOD=a(p),aOE=a("176800"),aOF=a("212800"),aOG=a(z),aOH=a("36000"),aOI=a("248800"),aOJ=a(p),aOK=a("165000"),aOL=a("197900"),aOM=a(z),aON=a("32900"),aOO=a("230800"),aOQ=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOv=[0,a(Q),1160,5,1164,36,[0,a(aQ),[0,a(L),0]]],aOd=a(p),aOe=a("159500"),aOf=a(wJ),aOg=a(z),aOh=a("33000"),aOi=a(yO),aOj=a(p),aOk=a("142200"),aOl=a("171200"),aOm=a(z),aOn=a("29000"),aOo=a("200200"),aOp=a(p),aOq=a("132800"),aOr=a("159300"),aOs=a(z),aOt=a("26500"),aOu=a(yz),aOw=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aOb=[0,a(Q),q6,5,Gp,36,[0,a(aQ),[0,a(L),0]]],aNV=a(p),aNW=a("200100"),aNX=a("141400"),aNY=a(z),aNZ=a("41300"),aN0=a("182700"),aN1=a(p),aN2=a("178600"),aN3=a("215000"),aN4=a(z),aN5=a("36400"),aN6=a("251400"),aN7=a(p),aN8=a("166700"),aN9=a(q5),aN_=a(z),aN$=a("33200"),aOa=a("233100"),aOc=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNT=[0,a(Q),1226,5,1230,36,[0,a(aQ),[0,a(L),0]]],aNB=a(p),aNC=a("161100"),aND=a("194400"),aNE=a(z),aNF=a("33300"),aNG=a("227700"),aNH=a(p),aNI=a("143600"),aNJ=a("172900"),aNK=a(z),aNL=a("29300"),aNM=a("202200"),aNN=a(p),aNO=a("134100"),aNP=a("160900"),aNQ=a(z),aNR=a("26800"),aNS=a("187700"),aNU=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNz=[0,a(Q),1259,5,1263,36,[0,a(aQ),[0,a(L),0]]],aNh=a(p),aNi=a(rQ),aNj=a("244300"),aNk=a(z),aNl=a("41800"),aNm=a("286100"),aNn=a(p),aNo=a("180700"),aNp=a("217500"),aNq=a(z),aNr=a("36800"),aNs=a("254300"),aNt=a(p),aNu=a("168700"),aNv=a("202300"),aNw=a(z),aNx=a("33600"),aNy=a("235900"),aNA=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aNf=[0,a(Q),1292,5,1296,36,[0,a(aQ),[0,a(L),0]]],aMZ=a(p),aM0=a("30871"),aM1=a("37243"),aM2=a(z),aM3=a("6372"),aM4=a("43615"),aM5=a(p),aM6=a("27548"),aM7=a("33148"),aM8=a(z),aM9=a("5610"),aM_=a("38768"),aM$=a(p),aNa=a("25718"),aNb=a("30840"),aNc=a(z),aNd=a("5122"),aNe=a("35962"),aNg=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMX=[0,a(Q),1325,5,1329,36,[0,a(aQ),[0,a(L),0]]],aMF=a(p),aMG=a(xW),aMH=a("196700"),aMI=a(z),aMJ=a("33700"),aMK=a("230400"),aML=a(p),aMM=a("145300"),aMN=a("175000"),aMO=a(z),aMP=a("29700"),aMQ=a(Dd),aMR=a(p),aMS=a("135700"),aMT=a("162800"),aMU=a(z),aMV=a("27100"),aMW=a("189900"),aMY=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMD=[0,a(Q),1358,5,1362,36,[0,a(aQ),[0,a(L),0]]],aMl=a(p),aMm=a("24849"),aMn=a("29987"),aMo=a(z),aMp=a("5138"),aMq=a("35125"),aMr=a(p),aMs=a("22151"),aMt=a("26679"),aMu=a(z),aMv=a("4528"),aMw=a("31207"),aMx=a(p),aMy=a("20687"),aMz=a("24818"),aMA=a(z),aMB=a("4131"),aMC=a("28949"),aME=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aMj=[0,a(Q),1391,5,ss,36,[0,a(aQ),[0,a(L),0]]],aL3=a(p),aL4=a("31241"),aL5=a("37689"),aL6=a(z),aL7=a("6448"),aL8=a("44137"),aL9=a(p),aL_=a("27879"),aL$=a("33556"),aMa=a(z),aMb=a("5677"),aMc=a("39233"),aMd=a(p),aMe=a("26027"),aMf=a("31210"),aMg=a(z),aMh=a("5183"),aMi=a("36393"),aMk=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aL1=[0,a(Q),q4,5,1428,36,[0,a(aQ),[0,a(L),0]]],aLJ=a(p),aLK=a("25147"),aLL=a("30347"),aLM=a(z),aLN=a("5200"),aLO=a("35547"),aLP=a(p),aLQ=a("22417"),aLR=a("26999"),aLS=a(z),aLT=a("4582"),aLU=a("31581"),aLV=a(p),aLW=a("20935"),aLX=a(Ct),aLY=a(z),aLZ=a("4181"),aL0=a("29297"),aL2=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLH=[0,a(Q),1457,5,1461,36,[0,a(aQ),[0,a(L),0]]],aLp=a(p),aLq=a("31616"),aLr=a("38141"),aLs=a(z),aLt=a("6525"),aLu=a("44666"),aLv=a(p),aLw=a("28214"),aLx=a("33959"),aLy=a(z),aLz=a("5745"),aLA=a("39704"),aLB=a(p),aLC=a("26339"),aLD=a("31584"),aLE=a(z),aLF=a("5245"),aLG=a("36829"),aLI=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aLn=[0,a(Q),1490,5,1494,36,[0,a(aQ),[0,a(L),0]]],aK7=a(p),aK8=a("25449"),aK9=a("30711"),aK_=a(z),aK$=a("5262"),aLa=a("35973"),aLb=a(p),aLc=a("22686"),aLd=a("27323"),aLe=a(z),aLf=a("4637"),aLg=a("31960"),aLh=a(p),aLi=a("21186"),aLj=a("25417"),aLk=a(z),aLl=a("4231"),aLm=a("29648"),aLo=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aK5=[0,a(Q),1523,5,1527,36,[0,a(aQ),[0,a(L),0]]],aKN=a(p),aKO=a("32185"),aKP=a("38827"),aKQ=a(z),aKR=a("6642"),aKS=a("45469"),aKT=a(p),aKU=a("28722"),aKV=a(yi),aKW=a(z),aKX=a("5848"),aKY=a("40418"),aKZ=a(p),aK0=a("26813"),aK1=a("32152"),aK2=a(z),aK3=a("5339"),aK4=a("37491"),aK6=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKL=[0,a(Q),zC,5,1560,36,[0,a(aQ),[0,a(L),0]]],aKt=a(p),aKu=a("25907"),aKv=a(xF),aKw=a(z),aKx=a("5357"),aKy=a("36621"),aKz=a(p),aKA=a("23094"),aKB=a("27814"),aKC=a(z),aKD=a("4720"),aKE=a("32534"),aKF=a(p),aKG=a("21567"),aKH=a("25874"),aKI=a(z),aKJ=a("4307"),aKK=a("30181"),aKM=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aKr=[0,a(Q),1589,5,1593,36,[0,a(aQ),[0,a(L),0]]],aJ$=a(p),aKa=a("33086"),aKb=a("39914"),aKc=a(z),aKd=a("6828"),aKe=a("46742"),aKf=a(p),aKg=a("29526"),aKh=a("35538"),aKi=a(z),aKj=a("6012"),aKk=a("41550"),aKl=a(p),aKm=a("27564"),aKn=a("33052"),aKo=a(z),aKp=a("5488"),aKq=a("38541"),aKs=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJ9=[0,a(Q),1622,5,Dr,36,[0,a(aQ),[0,a(L),0]]],aJR=a(p),aJS=a("26632"),aJT=a("32139"),aJU=a(z),aJV=a("5507"),aJW=a("37646"),aJX=a(p),aJY=a("23741"),aJZ=a("28593"),aJ0=a(z),aJ1=a("4852"),aJ2=a("33445"),aJ3=a(p),aJ4=a("22171"),aJ5=a("36598"),aJ6=a(z),aJ7=a("4428"),aJ8=a("31026"),aJ_=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJP=[0,a(Q),1655,5,1659,36,[0,a(aQ),[0,a(L),0]]],aJx=a(p),aJy=a("33999"),aJz=a("41016"),aJA=a(z),aJB=a("7016"),aJC=a("48032"),aJD=a(p),aJE=a("30341"),aJF=a("36519"),aJG=a(z),aJH=a("6178"),aJI=a("42697"),aJJ=a(p),aJK=a("28325"),aJL=a("33964"),aJM=a(z),aJN=a("5639"),aJO=a("39605"),aJQ=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJv=[0,a(Q),1688,5,1692,36,[0,a(aQ),[0,a(L),0]]],aJd=a(p),aJe=a("27367"),aJf=a("33026"),aJg=a(z),aJh=a("5659"),aJi=a("38685"),aJj=a(p),aJk=a("24396"),aJl=a("29382"),aJm=a(z),aJn=a(Cf),aJo=a("34368"),aJp=a(p),aJq=a("22783"),aJr=a("27332"),aJs=a(z),aJt=a("4550"),aJu=a("31882"),aJw=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aJb=[0,a(Q),1721,5,1725,36,[0,a(aQ),[0,a(L),0]]],aIV=a(p),aIW=a("35002"),aIX=a("42226"),aIY=a(z),aIZ=a("7223"),aI0=a("49449"),aI1=a(p),aI2=a("31236"),aI3=a("37596"),aI4=a(z),aI5=a("6360"),aI6=a("43957"),aI7=a(p),aI8=a("29161"),aI9=a("34966"),aI_=a(z),aI$=a("5805"),aJa=a("40773"),aJc=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIT=[0,a(Q),1754,5,1758,36,[0,a(aQ),[0,a(L),0]]],aIB=a(p),aIC=a("28174"),aID=a("34000"),aIE=a(z),aIF=a("5826"),aIG=a("39826"),aIH=a(p),aII=a(Ct),aIJ=a("30249"),aIK=a(z),aIL=a("5133"),aIM=a("35382"),aIN=a(p),aIO=a("23455"),aIP=a("28138"),aIQ=a(z),aIR=a("4684"),aIS=a("32823"),aIU=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIz=[0,a(Q),1787,5,1791,36,[0,a(aQ),[0,a(L),0]]],aIh=a(p),aIi=a("35114"),aIj=a("42361"),aIk=a(z),aIl=a("7246"),aIm=a("49607"),aIn=a(p),aIo=a("31336"),aIp=a("37716"),aIq=a(z),aIr=a("6380"),aIs=a("44098"),aIt=a(p),aIu=a("29254"),aIv=a("35078"),aIw=a(z),aIx=a("5824"),aIy=a("40903"),aIA=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aIf=[0,a(Q),1820,5,1824,36,[0,a(aQ),[0,a(L),0]]],aHZ=a(p),aH0=a("28264"),aH1=a("34109"),aH2=a(z),aH3=a("5845"),aH4=a("39953"),aH5=a(p),aH6=a("25196"),aH7=a("30346"),aH8=a(z),aH9=a("5149"),aH_=a("35495"),aH$=a(p),aIa=a("23530"),aIb=a("28228"),aIc=a(z),aId=a("4699"),aIe=a("32928"),aIg=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHX=[0,a(Q),1853,5,1857,36,[0,a(aQ),[0,a(L),0]]],aHF=a(p),aHG=a("35500"),aHH=a("42827"),aHI=a(z),aHJ=a("7326"),aHK=a("50153"),aHL=a(p),aHM=a("31681"),aHN=a("38131"),aHO=a(z),aHP=a("6450"),aHQ=a("44583"),aHR=a(p),aHS=a("29576"),aHT=a("35464"),aHU=a(z),aHV=a("5888"),aHW=a("41353"),aHY=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHD=[0,a(Q),1886,5,1890,36,[0,a(aQ),[0,a(L),0]]],aHl=a(p),aHm=a("28575"),aHn=a("34484"),aHo=a(z),aHp=a("5909"),aHq=a("40392"),aHr=a(p),aHs=a("25473"),aHt=a("30680"),aHu=a(z),aHv=a("5206"),aHw=a("35885"),aHx=a(p),aHy=a("23789"),aHz=a("28539"),aHA=a(z),aHB=a("4751"),aHC=a("33290"),aHE=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aHj=[0,a(Q),1919,5,1923,36,[0,a(aQ),[0,a(L),0]]],aG3=a(p),aG4=a("35855"),aG5=a("43255"),aG6=a(z),aG7=a("7399"),aG8=a("50655"),aG9=a(p),aG_=a("31998"),aG$=a("38512"),aHa=a(z),aHb=a("6515"),aHc=a("45029"),aHd=a(p),aHe=a("29872"),aHf=a("35819"),aHg=a(z),aHh=a("5947"),aHi=a("41767"),aHk=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aG1=[0,a(Q),1952,5,1956,36,[0,a(aQ),[0,a(L),0]]],aGJ=a(p),aGK=a("28861"),aGL=a(ES),aGM=a(z),aGN=a("5968"),aGO=a("40796"),aGP=a(p),aGQ=a("25728"),aGR=a("30987"),aGS=a(z),aGT=a("5258"),aGU=a("36244"),aGV=a(p),aGW=a("24027"),aGX=a("28824"),aGY=a(z),aGZ=a("4799"),aG0=a(zP),aG2=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGH=[0,a(Q),1985,5,1989,36,[0,a(aQ),[0,a(L),0]]],aGp=a(p),aGq=a("36626"),aGr=a("44185"),aGs=a(z),aGt=a("7558"),aGu=a("51744"),aGv=a(p),aGw=a("32686"),aGx=a(yv),aGy=a(z),aGz=a("6655"),aGA=a("45997"),aGB=a(p),aGC=a("30514"),aGD=a("36589"),aGE=a(z),aGF=a("6075"),aGG=a("42665"),aGI=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aGn=[0,a(Q),c8,5,$,36,[0,a(aQ),[0,a(L),0]]],aF7=a(p),aF8=a("29482"),aF9=a("35578"),aF_=a(z),aF$=a("6096"),aGa=a("41673"),aGb=a(p),aGc=a("26281"),aGd=a("31653"),aGe=a(z),aGf=a("5371"),aGg=a("37023"),aGh=a(p),aGi=a("24544"),aGj=a("29444"),aGk=a(z),aGl=a("4902"),aGm=a("34346"),aGo=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aF5=[0,a(Q),2051,5,2055,36,[0,a(aQ),[0,a(L),0]]],aFN=a(p),aFO=a("36835"),aFP=a("44437"),aFQ=a(z),aFR=a("7601"),aFS=a("52039"),aFT=a(p),aFU=a("32872"),aFV=a("39564"),aFW=a(z),aFX=a("6693"),aFY=a("46259"),aFZ=a(p),aF0=a("30688"),aF1=a("36798"),aF2=a(z),aF3=a("6110"),aF4=a("42908"),aF6=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFL=[0,a(Q),2084,5,2088,36,[0,a(aQ),[0,a(L),0]]],aFt=a(p),aFu=a("29650"),aFv=a("35781"),aFw=a(z),aFx=a("6131"),aFy=a("41911"),aFz=a(p),aFA=a("26431"),aFB=a("31833"),aFC=a(z),aFD=a("5402"),aFE=a("37234"),aFF=a(p),aFG=a("24684"),aFH=a("29612"),aFI=a(z),aFJ=a("4930"),aFK=a("34542"),aFM=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aFr=[0,a(Q),2117,5,2121,36,[0,a(aQ),[0,a(L),0]]],aE$=a(p),aFa=a("36864"),aFb=a("44473"),aFc=a(z),aFd=a("7607"),aFe=a("52081"),aFf=a(p),aFg=a("32898"),aFh=a("39596"),aFi=a(z),aFj=a("6698"),aFk=a("46296"),aFl=a(p),aFm=a("30713"),aFn=a("36827"),aFo=a(z),aFp=a("6115"),aFq=a("42942"),aFs=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aE9=[0,a(Q),2150,5,2154,36,[0,a(aQ),[0,a(L),0]]],aER=a(p),aES=a("29674"),aET=a("35810"),aEU=a(z),aEV=a("6136"),aEW=a("41945"),aEX=a(p),aEY=a("26452"),aEZ=a("31858"),aE0=a(z),aE1=a("5406"),aE2=a("37264"),aE3=a(p),aE4=a("24704"),aE5=a("29636"),aE6=a(z),aE7=a("4934"),aE8=a(yi),aE_=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEP=[0,a(Q),2183,5,q7,36,[0,a(aQ),[0,a(L),0]]],aEx=a(p),aEy=a("37140"),aEz=a("44807"),aEA=a(z),aEB=a("7664"),aEC=a("52472"),aED=a(p),aEE=a("33145"),aEF=a("39893"),aEG=a(z),aEH=a("6748"),aEI=a("46643"),aEJ=a(p),aEK=a("30943"),aEL=a("37103"),aEM=a(z),aEN=a("6161"),aEO=a("43264"),aEQ=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEv=[0,a(Q),2216,5,2220,36,[0,a(aQ),[0,a(L),0]]],aEd=a(p),aEe=a("29897"),aEf=a("36079"),aEg=a(z),aEh=a("6182"),aEi=a("42260"),aEj=a(p),aEk=a("26650"),aEl=a("32097"),aEm=a(z),aEn=a("5447"),aEo=a("37543"),aEp=a(p),aEq=a("24889"),aEr=a("29858"),aEs=a(z),aEt=a("4971"),aEu=a(ES),aEw=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aEb=[0,a(Q),2249,5,2252,36,[0,a(aQ),[0,a(L),0]]],aDV=a(p),aDW=a("37252"),aDX=a("44941"),aDY=a(z),aDZ=a("7687"),aD0=a("52629"),aD1=a(p),aD2=a("33244"),aD3=a("40013"),aD4=a(z),aD5=a("6768"),aD6=a("46783"),aD7=a(p),aD8=a("31036"),aD9=a("37215"),aD_=a(z),aD$=a("6179"),aEa=a("43394"),aEc=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDT=[0,a(Q),2281,5,2284,36,[0,a(aQ),[0,a(L),0]]],aDB=a(p),aDC=a("29986"),aDD=a("36187"),aDE=a(z),aDF=a("6201"),aDG=a("42386"),aDH=a(p),aDI=a("26730"),aDJ=a("32193"),aDK=a(z),aDL=a("5463"),aDM=a("37656"),aDN=a(p),aDO=a("24964"),aDP=a("29948"),aDQ=a(z),aDR=a(Cf),aDS=a("34934"),aDU=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPt=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPC=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDy=[0,a(Q),kO,5,kF,33,[0,a(o7),[0,a(mm),[0,a(L),0]]]],aDg=a(p),aDh=a(xe),aDi=a(v0),aDj=a(z),aDk=a(Gn),aDl=a(yW),aDm=a(p),aDn=a(AQ),aDo=a(EC),aDp=a(z),aDq=a(wk),aDr=a(Ak),aDs=a(p),aDt=a(zn),aDu=a(E0),aDv=a(z),aDw=a("35600"),aDx=a(mt),aDz=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDe=[0,a(Q),662,5,665,33,[0,a(o7),[0,a(mm),[0,a(L),0]]]],aCY=a(p),aCZ=a(yC),aC0=a(rQ),aC1=a(z),aC2=a(Go),aC3=a(Cr),aC4=a(p),aC5=a(EQ),aC6=a(rg),aC7=a(z),aC8=a(ot),aC9=a(Ax),aC_=a(p),aC$=a(D1),aDa=a(Fy),aDb=a(z),aDc=a(DC),aDd=a(x$),aDf=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCW=[0,a(Q),kA,5,sy,33,[0,a(o7),[0,a(mm),[0,a(L),0]]]],aCE=a(p),aCF=a(rM),aCG=a("220000"),aCH=a(z),aCI=a("38000"),aCJ=a("260000"),aCK=a(p),aCL=a("164200"),aCM=a(zv),aCN=a(z),aCO=a(F_),aCP=a("231200"),aCQ=a(p),aCR=a("153200"),aCS=a("183700"),aCT=a(z),aCU=a(ot),aCV=a("214200"),aCX=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCC=[0,a(Q),750,5,kj,33,[0,a(o7),[0,a(mm),[0,a(L),0]]]],aCk=a(p),aCl=a("148100"),aCm=a("178700"),aCn=a(z),aCo=a("30600"),aCp=a("209300"),aCq=a(p),aCr=a(Bz),aCs=a("158900"),aCt=a(z),aCu=a("26900"),aCv=a(yz),aCw=a(p),aCx=a("123300"),aCy=a("147900"),aCz=a(z),aCA=a("24600"),aCB=a(D7),aCD=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aDA=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCj=[0,a(d),Y,55,Y,61,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPD=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCi=[0,a(d),Y,11,Y,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCe=[0,a(E),ou,5,ou,28,[0,a(DM),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aCf=[0,a(d),iP,11,iP,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCd=[0,a(E),Ek,14,Ek,44,[0,a(DM),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aB$=[0,a(E),vY,14,vY,36,[0,a(iN),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aB9=a(p),aB_=a(p),aCa=[0,a(d),m$,10,m$,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB8=[0,a(d),m$,10,m$,32,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB3=[0,a(Q),EW,7,EW,18,[0,a(i9),[0,a(aQ),[0,a(L),0]]]],aB0=a(gw),aB1=a(q2),aB2=a(fn),aB4=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBY=[0,a(aO),zA,7,zA,18,[0,a(i9),[0,a(bB),[0,a(aM),0]]]],aBV=a(gQ),aBW=a(qF),aBX=a(fc),aBZ=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBT=[0,a(aO),xz,7,xz,18,[0,a(i9),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],aBQ=a(oL),aBR=a(B5),aBS=a(mV),aBU=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB5=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBN=[0,a(Q),CI,29,CI,64,[0,a(nA),[0,a(aQ),[0,a(L),0]]]],aBL=a(gw),aBM=a(fn),aBO=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBJ=[0,a(aO),BD,29,BD,64,[0,a(nA),[0,a(bB),[0,a(aM),0]]]],aBH=a(gQ),aBI=a(fc),aBK=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBF=[0,a(aO),yN,29,yN,64,[0,a(nA),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],aBD=a(oL),aBE=a(mV),aBG=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBP=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBx=[0,a(d),it,14,it,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBt=[0,a(Q),Ec,14,Ec,50,[0,a("Article 25"),[0,a(aQ),[0,a(L),0]]]],aBo=a(wK),aBp=a(sk),aBq=a("0.0172"),aBr=a(wK),aBs=a(sk),aBi=[0,a(E),iH,14,iH,64,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBe=[0,a(E),iE,14,iE,59,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBa=[0,a(e$),y2,14,y2,36,[0,a(Db),[0,a(zj),0]]],aA_=a(vI),aA$=a(ep),aA6=[0,a(Q),Fd,14,Fd,47,[0,a(sm),[0,a(aQ),[0,a(L),0]]]],aA5=a("0.416"),aA1=[0,a(Q),yh,14,yh,47,[0,a(sm),[0,a(aQ),[0,a(L),0]]]],aA0=a(vs),aAW=[0,a(Q),DE,14,DE,47,[0,a(sm),[0,a(aQ),[0,a(L),0]]]],aAV=a("560085"),aAR=[0,a(Q),F6,14,F6,48,[0,a("Article 26"),[0,a(aQ),[0,a(L),0]]]],aAQ=a(AP),aAM=[0,a(Q),B9,15,B9,49,[0,a("Article 22"),[0,a(aQ),[0,a(L),0]]]],aAL=a("2211133"),aAH=[0,a(Q),vd,14,vd,42,[0,a("Article 21"),[0,a(aQ),[0,a(L),0]]]],aAG=a(ii),aAC=[0,a(Q),Ep,14,Ep,41,[0,a("Article 20"),[0,a(aQ),[0,a(L),0]]]],aAB=a(kn),aAD=[0,a(d),oW,11,oW,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAA=[0,a(d),oW,11,oW,38,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAE=[0,a(aj),[0,a("montant_forfaitaire_d832_10"),0]],aAI=[0,a(d),mA,11,mA,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAF=[0,a(d),mA,11,mA,39,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAJ=[0,a(aj),[0,a("montant_minimal_aide_d832_10"),0]],aAN=[0,a(d),nl,11,nl,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAK=[0,a(d),nl,11,nl,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAO=[0,a(aj),[0,a("coefficient_multiplicateur_d832_11"),0]],aAS=[0,a(d),m5,11,m5,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAP=[0,a(d),m5,11,m5,45,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAT=[0,a(aj),[0,a("coefficient_multiplicateur_d832_18"),0]],aAX=[0,a(d),kh,11,kh,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAU=[0,a(d),kh,11,kh,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAY=[0,a(aj),[0,a("montant_limite_tranches_d832_15_1"),0]],aA2=[0,a(d),nZ,11,nZ,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAZ=[0,a(d),nZ,11,nZ,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA3=[0,a(aj),[0,a("taux_tranche_inf\xc3\xa9rieure_d832_15_1"),0]],aA7=[0,a(d),mX,11,mX,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA4=[0,a(d),mX,11,mX,44,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA8=[0,a(aj),[0,a("taux_tranche_sup\xc3\xa9rieure_d832_15_1"),0]],aBb=[0,a(d),kA,11,kA,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aA9=[0,a(d),kA,11,kA,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBc=[0,a(aj),[0,a(FM),0]],aBf=[0,a(E),iE,14,iE,59,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBg=[0,a(aj),[0,a(nm),0]],aBd=[0,a(E),iE,14,iE,59,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBj=[0,a(E),iH,14,iH,64,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBk=[0,a(aj),[0,a(n8),0]],aBh=[0,a(E),iH,14,iH,64,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aBl=[0,a(aj),[0,a(f7),[0,a(kt),0]]],aBm=[0,a(aj),[0,a(f7),[0,a(kt),0]]],aBu=[0,a(d),k1,11,k1,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBn=[0,a(d),k1,11,k1,47,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBv=[0,a(aj),[0,a("coefficient_multiplicateur_d832_17_3"),0]],aBy=[0,a(d),it,14,it,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBz=[0,a(aj),[0,a(kE),0]],aBw=[0,a(d),it,14,it,50,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBA=[0,a(aj),[0,a(eE),[0,a(bk),0]]],aBB=[0,a(aj),[0,a(eE),[0,a(bk),0]]],aB6=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aBC=[0,a(d),ck,11,ck,46,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aB7=[0,a(aj),[0,a("montant_forfaitaire_charges_d832_10"),0]],aCb=[0,a(aj),[0,a(bI),0]],aCg=[0,a(d),iP,11,iP,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCc=[0,a(d),iP,11,iP,41,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aCh=[0,a(aj),[0,a("ressources_m\xc3\xa9nage_avec_d832_18"),0]],aPE=[0,a(aj),[0,a(dB),0]],aPH=[0,a(d),ms,11,ms,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPF=[0,a(d),ms,11,ms,33,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPI=[0,a(aj),[0,a(wa),0]],aPO=[0,a(aj),[0,a(kB),0]],aP5=[0,a(d),gG,10,gG,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aPP=[0,a(d),gG,10,gG,14,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aP6=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_base"),0]],aP9=[0,a(E),h9,14,h9,75,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aP_=[0,a(aj),[0,a(mS),0]],aP7=[0,a(E),h9,14,h9,75,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQb=[0,a(E),jn,14,jn,69,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQc=[0,a(aj),[0,a(oq),0]],aP$=[0,a(E),jn,14,jn,69,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQf=[0,a(E),jp,14,jp,70,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQg=[0,a(aj),[0,a(mI),0]],aQd=[0,a(E),jp,14,jp,70,[0,a(d_),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aQh=[0,a(aj),[0,a(fH),[0,a(dP),0]]],aQi=[0,a(aj),[0,a(fH),[0,a(dP),0]]],aQm=[0,a(d),oP,10,oP,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQj=[0,a(d),oP,10,oP,17,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQn=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_formule"),0]],aQw=[0,a(aj),[0,a(kX),0]],aQH=[0,a(d),eA,10,eA,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQx=[0,a(d),eA,10,eA,25,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQI=[0,a(aj),[0,a("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"),0]],aQQ=[0,a(d),fP,12,fP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQJ=[0,a(d),fP,12,fP,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQR=[0,a(aj),[0,a(re),0]],aQX=[0,a(d),nb,10,nb,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQS=[0,a(d),nb,10,nb,23,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aQY=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_coeff_arrondi"),0]],aRa=[0,a(aj),[0,a(eK),0]],aRd=[0,a(d),oU,12,oU,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRb=[0,a(d),oU,12,oU,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRe=[0,a(aj),[0,a(su),0]],aRj=[0,a(d),o3,10,o3,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRf=[0,a(d),o3,10,o3,15,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRk=[0,a(aj),[0,a("coefficient_prise_en_charge_d832_10_seuil"),0]],aRz=[0,a(aj),[0,a(bJ),0]],aRE=[0,a(d),m7,12,m7,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRA=[0,a(d),m7,12,m7,31,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],aRF=[0,a(aj),[0,a(cX),0]],aRO=[0,a(aj),[0,a(fk),0]],aAx=[0,a(E),Bf,14,Bf,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aAs=[0,a(au),[0,a(bJ),[0,a(ai),0]]],aAt=[0,a(au),[0,a(bJ),0]],aAu=[0,a(au),[0,a(bJ),[0,a(ad),0]]],aAv=[0,a(au),[0,a(bJ),0]],aAw=a(p),aAy=[0,a(d),m2,10,m2,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAr=[0,a(d),m2,10,m2,25,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAo=[0,a(E),u$,14,u$,33,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aAm=a(p),aAn=a(p),aAi=[0,a(E),yG,14,yG,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],az9=[0,a(au),[0,a(eK),[0,a(ai),0]]],az_=[0,a(au),[0,a(eK),0]],az$=[0,a(au),[0,a(eK),[0,a(ad),0]]],aAa=[0,a(au),[0,a(eK),0]],aAb=[0,a(bk),[0,a(bQ),[0,a(ai),0]]],aAc=[0,a(bk),[0,a(bQ),0]],aAd=[0,a(bk),[0,a(bQ),[0,a(ad),0]]],aAe=[0,a(bk),[0,a(bQ),0]],aAf=a(k6),aAg=a(p),aAh=a(p),aAj=[0,a(d),oV,10,oV,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],az8=[0,a(d),oV,10,oV,40,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],az4=[0,a(E),C0,5,C0,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],az2=a(oG),az3=a(oG),az5=[0,a(d),gC,10,gC,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],az1=[0,a(E),Ei,14,Ei,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azZ=a(hf),az0=a(hf),azV=[0,a(E),CV,14,CV,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azL=[0,a(au),[0,a(bI),[0,a(ai),0]]],azM=[0,a(au),[0,a(bI),0]],azN=[0,a(au),[0,a(bI),[0,a(ad),0]]],azO=[0,a(au),[0,a(bI),0]],azP=[0,a(au),[0,a(kz),[0,a(ai),0]]],azQ=[0,a(au),[0,a(kz),0]],azR=[0,a(au),[0,a(kz),[0,a(ad),0]]],azS=[0,a(au),[0,a(kz),0]],azT=a(p),azU=a(p),azW=[0,a(d),m9,10,m9,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azK=[0,a(d),m9,10,m9,20,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azG=[0,a(E),Fn,5,Fn,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azD=a(c7),azE=a(c7),azF=a(l_),azH=[0,a(d),i1,10,i1,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azC=[0,a(E),xG,14,xG,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azz=a(c7),azA=a(c7),azB=a(l_),azv=[0,a(E),Cd,14,Cd,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azr=[0,a(E),vC,14,vC,55,[0,a(yU),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azm=[0,a(au),[0,a(kH),[0,a(ai),0]]],azn=[0,a(au),[0,a(kH),0]],azo=[0,a(au),[0,a(kH),[0,a(ad),0]]],azp=[0,a(au),[0,a(kH),0]],azq=a(p),azs=[0,a(d),k4,11,k4,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azl=[0,a(d),k4,11,k4,52,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azh=[0,a(E),F5,5,F5,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azg=a(oG),azi=[0,a(d),jq,10,jq,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azf=[0,a(E),nG,14,nG,49,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],azc=a(p),azd=a(p),aze=a(hf),ay8=[0,a(E),f6,14,f6,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay4=[0,a(E),hK,14,hK,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay0=[0,a(E),iV,14,iV,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayW=[0,a(E),z1,14,z1,44,[0,a(yU),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayX=[0,a(d),mk,11,mk,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayV=[0,a(d),mk,11,mk,41,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayR=[0,a(E),zq,14,zq,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayS=[0,a(d),gE,21,gE,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayN=[0,a(E),wn,14,wn,40,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayJ=[0,a(Q),xw,14,xw,48,[0,a(wg),[0,a(fd),[0,a(L),0]]]],ayH=a("2142091"),ayI=a("1339340"),ayD=[0,a(Q),wW,14,wW,41,[0,a("Article 32"),[0,a(fd),[0,a(L),0]]]],ayB=a(qO),ayC=a("2668"),ayv=[0,a(E),ir,14,ir,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayr=[0,a(E),ic,14,ic,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayn=[0,a(E),iF,14,iF,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayj=[0,a(E),zp,14,zp,36,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayh=a(p),ayi=a(p),ayk=[0,a(d),nF,10,nF,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayg=[0,a(d),nF,10,nF,32,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayc=[0,a(Q),Cx,14,Cx,48,[0,a(sz),[0,a(fd),[0,a(L),0]]]],axE=a(p),axF=a("46192"),axG=a("54152"),axH=a(z),axI=a("57741"),axJ=a(X),axK=a("61794"),axL=a(_),axM=a("65862"),axN=a(ag),axO=a("7368"),axP=a("71039"),axQ=a(p),axR=a("42242"),axS=a("49299"),axT=a(z),axU=a("52565"),axV=a(X),axW=a("56268"),axX=a(_),axY=a("59957"),axZ=a(ag),ax0=a("6659"),ax1=a("63887"),ax2=a(p),ax3=a("40096"),ax4=a("46634"),ax5=a(z),ax6=a("49475"),ax7=a(X),ax8=a("52740"),ax9=a(_),ax_=a("56004"),ax$=a(ag),aya=a("6180"),ayb=a("59675"),ayd=[0,a(d),eU,12,eU,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],axC=[0,a(aO),dL,14,dL,48,[0,a(sz),[0,a(bB),[0,a(aM),0]]]],aw4=a(p),aw5=a("44630"),aw6=a("52321"),aw7=a(z),aw8=a("55788"),aw9=a(X),aw_=a("59704"),aw$=a(_),axa=a("63635"),axb=a(ag),axc=a("7119"),axd=a("68637"),axe=a(p),axf=a("40814"),axg=a("47632"),axh=a(z),axi=a("50787"),axj=a(X),axk=a("54365"),axl=a(_),axm=a("57929"),axn=a(ag),axo=a("6434"),axp=a("61727"),axq=a(p),axr=a("38740"),axs=a("45057"),axt=a(z),axu=a("47802"),axv=a(X),axw=a("50957"),axx=a(_),axy=a("54110"),axz=a(ag),axA=a("5971"),axB=a("57657"),axD=[0,a(d),eU,12,eU,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aw2=[0,a(aO),Eo,14,Eo,48,[0,a(sz),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],aws=a(p),awt=a("44443"),awu=a("52101"),awv=a(z),aww=a("55555"),awx=a(X),awy=a("59454"),awz=a(_),awA=a("63369"),awB=a(ag),awC=a("7089"),awD=a("68350"),awE=a(p),awF=a("40643"),awG=a("47433"),awH=a(z),awI=a("50575"),awJ=a(X),awK=a("54138"),awL=a(_),awM=a("57687"),awN=a(ag),awO=a("6407"),awP=a("61469"),awQ=a(p),awR=a("38578"),awS=a("44869"),awT=a(z),awU=a("47602"),awV=a(X),awW=a("50744"),awX=a(_),awY=a("53884"),awZ=a(ag),aw0=a("5946"),aw1=a("57416"),aw3=[0,a(d),eU,12,eU,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awm=[0,a(d),ji,14,ji,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awh=[0,a(E),yl,14,yl,35,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],awi=[0,a(d),hT,12,hT,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awd=[0,a(Q),BU,14,BU,42,[0,a("Article 29"),[0,a(fd),[0,a(L),0]]]],awc=a(ii),av_=[0,a(Q),Ad,14,Ad,41,[0,a("Article 28"),[0,a(fd),[0,a(L),0]]]],av9=a(kn),av5=[0,a(Q),Fw,14,Fw,35,[0,a(wg),[0,a(fd),[0,a(L),0]]]],av4=a("121726"),av6=[0,a(d),o2,12,o2,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av3=[0,a(d),o2,12,o2,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av7=[0,a(au),[0,a(Et),0]],av$=[0,a(d),mG,11,mG,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],av8=[0,a(d),mG,11,mG,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awa=[0,a(au),[0,a("montant_forfaitaire_d832_24"),0]],awe=[0,a(d),ol,11,ol,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awb=[0,a(d),ol,11,ol,39,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awf=[0,a(au),[0,a("montant_minimal_aide_d823_24"),0]],awj=[0,a(d),hT,12,hT,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awg=[0,a(d),hT,12,hT,33,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awk=[0,a(au),[0,a("condition_2_du_832_25"),0]],awn=[0,a(d),ji,14,ji,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awo=[0,a(au),[0,a(kE),0]],awl=[0,a(d),ji,14,ji,50,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awp=[0,a(au),[0,a(eE),[0,a(bk),0]]],awq=[0,a(au),[0,a(eE),[0,a(bk),0]]],aye=[0,a(d),eU,12,eU,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],awr=[0,a(d),eU,12,eU,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayf=[0,a(au),[0,a(z4),0]],ayl=[0,a(au),[0,a(bI),0]],ayo=[0,a(E),iF,14,iF,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayp=[0,a(au),[0,a(BL),0]],aym=[0,a(E),iF,14,iF,55,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ays=[0,a(E),ic,14,ic,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayt=[0,a(au),[0,a(nm),0]],ayq=[0,a(E),ic,14,ic,59,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayw=[0,a(E),ir,14,ir,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayx=[0,a(au),[0,a(n8),0]],ayu=[0,a(E),ir,14,ir,64,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ayy=[0,a(au),[0,a(f7),[0,a(kC),0]]],ayz=[0,a(au),[0,a(f7),[0,a(kC),0]]],ayE=[0,a(d),oh,11,oh,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayA=[0,a(d),oh,11,oh,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayF=[0,a(au),[0,a("montant_forfaitaire_d832_27"),0]],ayK=[0,a(d),kO,12,kO,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayG=[0,a(d),kO,12,kO,46,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayL=[0,a(au),[0,a(Bb),0]],ayO=[0,a(d),kF,12,kF,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayM=[0,a(d),kF,12,kF,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayP=[0,a(au),[0,a(xQ),0]],ayT=[0,a(d),gE,21,gE,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayQ=[0,a(d),gE,21,gE,43,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ayU=[0,a(au),[0,a(r8),0]],ayY=[0,a(au),[0,a(kH),0]],ay1=[0,a(E),iV,14,iV,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay2=[0,a(au),[0,a(mS),0]],ayZ=[0,a(E),iV,14,iV,75,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay5=[0,a(E),hK,14,hK,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay6=[0,a(au),[0,a(oq),0]],ay3=[0,a(E),hK,14,hK,69,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay9=[0,a(E),f6,14,f6,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay_=[0,a(au),[0,a(mI),0]],ay7=[0,a(E),f6,14,f6,70,[0,a(cT),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ay$=[0,a(au),[0,a(fH),[0,a(dP),0]]],aza=[0,a(au),[0,a(fH),[0,a(dP),0]]],azj=[0,a(d),jq,10,jq,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azb=[0,a(d),jq,10,jq,17,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azk=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_formule"),0]],azt=[0,a(au),[0,a(kz),0]],azw=[0,a(d),ox,12,ox,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azu=[0,a(d),ox,12,ox,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azx=[0,a(au),[0,a(vv),0]],azI=[0,a(d),i1,10,i1,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azy=[0,a(d),i1,10,i1,23,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azJ=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_coeff_arrondi"),0]],azX=[0,a(au),[0,a(eK),0]],az6=[0,a(d),gC,10,gC,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],azY=[0,a(d),gC,10,gC,15,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],az7=[0,a(au),[0,a("coefficient_prise_en_charge_d832_25_seuil"),0]],aAk=[0,a(au),[0,a(bJ),0]],aAp=[0,a(d),lZ,12,lZ,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAl=[0,a(d),lZ,12,lZ,31,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aAq=[0,a(au),[0,a(cX),0]],aAz=[0,a(au),[0,a(fk),0]],avT=[0,a(E),Da,14,Da,33,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avR=a(p),avS=a(p),avN=[0,a(E),Ba,14,Ba,39,[0,a(rT),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avL=a(p),avM=a(p),avH=[0,a(E),Bl,14,Bl,36,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avC=[0,a(aD),[0,a(kl),[0,a(ai),0]]],avD=[0,a(aD),[0,a(kl),0]],avE=[0,a(aD),[0,a(kl),[0,a(ad),0]]],avF=[0,a(aD),[0,a(kl),0]],avG=a(p),avI=[0,a(d),na,10,na,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avB=[0,a(d),na,10,na,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avy=[0,a(E),xB,14,xB,42,[0,a(rT),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avu=[0,a(aG),Cn,14,Cn,36,[0,a(qY),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],avo=[0,a(aD),[0,a(bJ),[0,a(ai),0]]],avp=[0,a(aD),[0,a(bJ),0]],avq=[0,a(aD),[0,a(bJ),[0,a(ad),0]]],avr=[0,a(aD),[0,a(bJ),0]],avs=a(p),avt=a(p),avv=[0,a(d),mU,10,mU,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avn=[0,a(d),mU,10,mU,36,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avh=[0,a(aO),AB,14,AB,33,[0,a(cF),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],avf=a(hD),avg=a(hD),avi=[0,a(d),eB,10,eB,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ave=[0,a(aO),ng,14,ng,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],avc=a(hD),avd=a(hD),avj=[0,a(d),eB,10,eB,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avb=[0,a(Q),fY,14,fY,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],au$=a(hD),ava=a(hD),avk=[0,a(d),eB,10,eB,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au7=[0,a(E),wm,14,wm,36,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],auW=[0,a(aD),[0,a(bI),[0,a(ai),0]]],auX=[0,a(aD),[0,a(bI),0]],auY=[0,a(aD),[0,a(bI),[0,a(ad),0]]],auZ=[0,a(aD),[0,a(bI),0]],au0=[0,a(bk),[0,a(bQ),[0,a(ai),0]]],au1=[0,a(bk),[0,a(bQ),0]],au2=[0,a(bk),[0,a(bQ),[0,a(ad),0]]],au3=[0,a(bk),[0,a(bQ),0]],au4=a(k6),au5=a(p),au6=a(p),au8=[0,a(d),of,10,of,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auV=[0,a(d),of,10,of,40,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auP=[0,a(aO),sA,14,sA,33,[0,a(cF),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],auD=a(hl),auE=a(b4),auF=a(dj),auG=a(hl),auH=a(fa),auI=a(fa),auJ=a(dj),auK=a(dj),auL=a(sb),auM=a(qP),auN=a(fa),auO=a(b4),auQ=[0,a(d),eC,10,eC,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auC=[0,a(aO),qM,14,qM,33,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],auq=a(hl),aur=a(b4),aus=a(dj),aut=a(hl),auu=a(fa),auv=a(fa),auw=a(dj),aux=a(dj),auy=a(sb),auz=a(qP),auA=a(fa),auB=a(b4),auR=[0,a(d),eC,10,eC,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aup=[0,a(Q),qX,14,qX,33,[0,a(cF),[0,a(bX),[0,a(L),0]]]],aud=a(hl),aue=a(b4),auf=a(dj),aug=a(hl),auh=a(fa),aui=a(fa),auj=a(dj),auk=a(dj),aul=a(sb),aum=a(qP),aun=a(fa),auo=a(b4),auS=[0,a(d),eC,10,eC,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],at$=[0,a(E),En,14,En,36,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],at5=[0,a(aD),[0,a(ku),[0,a(ai),0]]],at6=[0,a(aD),[0,a(ku),0]],at7=[0,a(aD),[0,a(ku),[0,a(ad),0]]],at8=[0,a(aD),[0,a(ku),0]],at9=a(p),at_=a(p),aua=[0,a(d),o8,10,o8,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],at4=[0,a(d),o8,10,o8,32,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atY=[0,a(aO),Av,14,Av,28,[0,a(cF),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],atW=a(c7),atX=a(c7),atZ=[0,a(d),dL,11,dL,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atV=[0,a(aO),ws,14,ws,28,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],atT=a(c7),atU=a(c7),at0=[0,a(d),dL,11,dL,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atS=[0,a(Q),z0,14,z0,28,[0,a(cF),[0,a(bX),[0,a(L),0]]]],atQ=a(c7),atR=a(c7),at1=[0,a(d),dL,11,dL,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atL=[0,a(Q),dA,14,dA,36,[0,a(sr),[0,a(bX),[0,a(L),0]]]],atH=a(F7),atI=a(iA),atJ=a(iA),atK=a(F7),atM=[0,a(d),eW,12,eW,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atF=[0,a(aO),vu,14,vu,36,[0,a(sr),[0,a(bB),[0,a(aM),0]]]],atB=a(C_),atC=a(iA),atD=a(iA),atE=a(C_),atG=[0,a(d),eW,12,eW,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atz=[0,a(aO),gH,14,gH,36,[0,a(sr),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],atv=a(EH),atw=a(iA),atx=a(iA),aty=a(EH),atA=[0,a(d),eW,12,eW,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atq=[0,a(E),F8,5,F8,50,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atr=[0,a(d),hM,10,hM,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atp=[0,a(E),zQ,14,zQ,36,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],ato=a(p),ats=[0,a(d),hM,10,hM,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atn=[0,a(d),hM,10,hM,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atk=[0,a(E),xC,14,xC,28,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],atg=[0,a(Q),rn,14,rn,42,[0,a(Cg),[0,a(bX),[0,a(L),0]]]],atd=a("3.4"),ate=a(ij),atf=a(ij),as$=[0,a(Q),rr,14,rr,41,[0,a(Cg),[0,a(bX),[0,a(L),0]]]],as8=a("4."),as9=a(zb),as_=a(zb),as4=[0,a(E),zG,14,zG,29,[0,a("Article D842-2"),[0,a(sw),[0,a(al),[0,a(ak),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],as2=a(ow),as3=a(kR),asW=[0,a(Q),EY,29,EY,64,[0,a(dQ),[0,a(bX),[0,a(L),0]]]],asT=a(gw),asU=a(q2),asV=a(fn),asX=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asR=[0,a(aO),wp,29,wp,64,[0,a(dQ),[0,a(bB),[0,a(aM),0]]]],asO=a(gQ),asP=a(qF),asQ=a(fc),asS=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asM=[0,a(aO),vU,29,vU,64,[0,a(dQ),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],asJ=a(oL),asK=a(B5),asL=a(mV),asN=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asY=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asG=[0,a(Q),z5,29,z5,64,[0,a(sh),[0,a(bX),[0,a(L),0]]]],asE=a(gw),asF=a(fn),asH=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asC=[0,a(aO),Cs,29,Cs,64,[0,a(sh),[0,a(bB),[0,a(aM),0]]]],asA=a(gQ),asB=a(fc),asD=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asy=[0,a(aO),Cb,29,Cb,64,[0,a(sh),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],asw=a(oL),asx=a(mV),asz=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asI=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asp=a(p),asq=[0,a(Q),529,5,530,34,[0,a(dQ),[0,a(bX),[0,a(L),0]]]],asm=a(Br),asn=a(v_),aso=a(DH),asr=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asj=a(p),ask=[0,a(Q),538,5,539,34,[0,a(dQ),[0,a(bX),[0,a(L),0]]]],asg=a("27905"),ash=a("24683"),asi=a("22911"),asl=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asd=a(z),ase=[0,a(Q),z$,5,z$,35,[0,a(dQ),[0,a(bX),[0,a(L),0]]]],ar6=a(z),ar7=a("4576"),ar8=a("31539"),ar9=a(z),ar_=a("4043"),ar$=a("27774"),asa=a(z),asb=a("3682"),asc=a("25689"),asf=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ar3=a(p),ar4=[0,a(aO),qZ,5,qX,34,[0,a(dQ),[0,a(bB),[0,a(aM),0]]]],ar0=a(DS),ar1=a(yp),ar2=a(wU),ar5=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arX=a(p),arY=[0,a(aO),ky,5,416,34,[0,a(dQ),[0,a(bB),[0,a(aM),0]]]],arU=a("26962"),arV=a("23848"),arW=a("22136"),arZ=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arR=a(z),arS=[0,a(aO),rC,5,rC,35,[0,a(dQ),[0,a(bB),[0,a(aM),0]]]],arI=a(z),arJ=a("4421"),arK=a("30473"),arL=a(z),arM=a("3906"),arN=a("26835"),arO=a(z),arP=a("3557"),arQ=a("24821"),arT=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arF=a(p),arG=[0,a(aO),Gp,5,1198,34,[0,a(dQ),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],arC=a(CU),arD=a(wi),arE=a(Dj),arH=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arz=a(p),arA=[0,a(aO),1206,5,1207,34,[0,a(dQ),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],arw=a("26849"),arx=a("23748"),ary=a("22044"),arB=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],art=a(z),aru=[0,a(aO),EV,5,EV,35,[0,a(dQ),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],ark=a(z),arl=a("4403"),arm=a("30345"),arn=a(z),aro=a("3890"),arp=a("26723"),arq=a(z),arr=a("3542"),ars=a("24717"),arv=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ass=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arg=[0,a(Q),iK,5,iK,61,[0,a(iy),[0,a(bX),[0,a(L),0]]]],ard=a(Br),are=a(v_),arf=a(DH),arh=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arb=[0,a(aO),BR,5,BR,61,[0,a(iy),[0,a(bB),[0,a(aM),0]]]],aq_=a(DS),aq$=a(yp),ara=a(wU),arc=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq8=[0,a(aO),fM,5,fM,61,[0,a(iy),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],aq5=a(CU),aq6=a(wi),aq7=a(Dj),aq9=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ari=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq2=[0,a(Q),wN,14,wN,37,[0,a(iy),[0,a(bX),[0,a(L),0]]]],aqZ=a("27765"),aq0=a("24198"),aq1=a("22680"),aq3=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqX=[0,a(aO),Ab,14,Ab,37,[0,a(iy),[0,a(bB),[0,a(aM),0]]]],aqU=a("26826"),aqV=a("23380"),aqW=a("21913"),aqY=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqS=[0,a(aO),Dm,14,Dm,37,[0,a(iy),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],aqP=a(Gq),aqQ=a("23282"),aqR=a("21821"),aqT=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aq4=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],arj=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqL=a(p),aqM=[0,a(Q),dR,5,be,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqI=a("30850"),aqJ=a("26887"),aqK=a("25200"),aqN=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqF=a(p),aqG=[0,a(Q),zw,5,115,34,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqC=a("37207"),aqD=a("32910"),aqE=a("30548"),aqH=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqz=a(z),aqA=[0,a(Q),kK,5,kK,35,[0,a(cG),[0,a(bX),[0,a(L),0]]]],aqq=a(z),aqr=a("6101"),aqs=a("42052"),aqt=a(z),aqu=a("5390"),aqv=a("37032"),aqw=a(z),aqx=a("4909"),aqy=a("34252"),aqB=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqn=a(p),aqo=[0,a(aO),87,5,88,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],aqk=a("29807"),aql=a(sj),aqm=a("24348"),aqp=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqh=a(p),aqi=[0,a(aO),97,5,98,34,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],aqe=a("35949"),aqf=a(m3),aqg=a("29515"),aqj=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqb=a(z),aqc=[0,a(aO),c5,5,c5,35,[0,a(cG),[0,a(bB),[0,a(aM),0]]]],ap4=a(z),ap5=a("5895"),ap6=a("40630"),ap7=a(z),ap8=a(rS),ap9=a(sg),ap_=a(z),ap$=a("4743"),aqa=a("33094"),aqd=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ap1=a(p),ap2=[0,a(aO),884,5,885,34,[0,a(cG),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],apY=a("29682"),apZ=a("25859"),ap0=a("24246"),ap3=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apV=a(p),apW=[0,a(aO),kq,5,895,34,[0,a(cG),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],apS=a("35799"),apT=a(Bn),apU=a("29392"),apX=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apP=a(z),apQ=[0,a(aO),Cj,5,Cj,35,[0,a(cG),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],apG=a(z),apH=a("5870"),apI=a("40460"),apJ=a(z),apK=a(wC),apL=a(AV),apM=a(z),apN=a("4723"),apO=a(yX),apR=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aqO=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apC=[0,a(Q),hZ,14,hZ,42,[0,a("Article 12"),[0,a(bX),[0,a(L),0]]]],apz=a(p),apA=a(ii),apB=a(ii),apt=[0,a(aO),ya,14,ya,29,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],apn=a(p),apo=a(sj),app=a(m3),apq=a(z),apr=a(rS),aps=a(sg),apu=[0,a(d),eT,11,eT,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apm=[0,a(Q),mf,14,mf,29,[0,a(cF),[0,a(bX),[0,a(L),0]]]],apg=a(p),aph=a(sj),api=a(m3),apj=a(z),apk=a(rS),apl=a(sg),apv=[0,a(d),eT,11,eT,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ape=[0,a(aO),fj,14,fj,29,[0,a(cF),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],ao_=a(p),ao$=a("25869"),apa=a(Bn),apb=a(z),apc=a(wC),apd=a(AV),apf=[0,a(d),eT,11,eT,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao5=[0,a(Q),yb,14,yb,44,[0,a(mQ),[0,a(bX),[0,a(L),0]]]],aoN=a(p),aoO=a("494900"),aoP=a("709000"),aoQ=a(z),aoR=a("845600"),aoS=a(X),aoT=a("864600"),aoU=a(_),aoV=a("897700"),aoW=a(ag),aoX=a("931100"),aoY=a(P),aoZ=a("964200"),ao0=a(dq),ao1=a(CN),ao2=a(dq),ao3=a("32800"),ao4=a(CN),ao6=[0,a(d),dW,11,dW,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aoL=[0,a(aO),27,14,27,44,[0,a(mQ),[0,a("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"),[0,a(aM),0]]]],aot=a(p),aou=a("487000"),aov=a("697700"),aow=a(z),aox=a(B1),aoy=a(X),aoz=a("850900"),aoA=a(_),aoB=a("883400"),aoC=a(ag),aoD=a("916300"),aoE=a(P),aoF=a("948800"),aoG=a(dq),aoH=a(Dy),aoI=a(dq),aoJ=a("32300"),aoK=a(Dy),aoM=[0,a(d),dW,11,dW,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],aor=[0,a(aO),rF,14,rF,44,[0,a(mQ),[0,a("Articles valables du 1er janvier 2022 au 30 juin 2022"),[0,a(aM),0]]]],an$=a(p),aoa=a("468300"),aob=a("670900"),aoc=a(z),aod=a("800200"),aoe=a(X),aof=a("819200"),aog=a(_),aoh=a("849500"),aoi=a(ag),aoj=a("881100"),aok=a(P),aol=a("912400"),aom=a(dq),aon=a(A$),aoo=a(dq),aop=a("31100"),aoq=a(A$),aos=[0,a(d),dW,11,dW,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],an9=[0,a(aO),zo,14,zo,44,[0,a(mQ),[0,a("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"),[0,a(aM),0]]]],anR=a(p),anS=a("458800"),anT=a("657200"),anU=a(z),anV=a("783900"),anW=a(X),anX=a("801500"),anY=a(_),anZ=a(B1),an0=a(ag),an1=a("863100"),an2=a(P),an3=a("893800"),an4=a(dq),an5=a(vB),an6=a(dq),an7=a(ot),an8=a(vB),an_=[0,a(d),dW,11,dW,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anK=[0,a(aO),jl,14,jl,40,[0,a(cF),[0,a(L),[0,a(ch),[0,a(aM),0]]]]],ans=a(p),ant=a(rE),anu=a(ry),anv=a(z),anw=a(qK),anx=a(X),any=a(ri),anz=a(_),anA=a(r$),anB=a(ag),anC=a(qH),anD=a(P),anE=a(ro),anF=a(dq),anG=a(hP),anH=a(dq),anI=a(rs),anJ=a(hP),anL=[0,a(d),eI,12,eI,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anr=[0,a(aO),yL,14,yL,40,[0,a(cF),[0,a(bB),[0,a(aM),0]]]],am$=a(p),ana=a(rE),anb=a(ry),anc=a(z),and=a(qK),ane=a(X),anf=a(ri),ang=a(_),anh=a(r$),ani=a(ag),anj=a(qH),ank=a(P),anl=a(ro),anm=a(dq),ann=a(hP),ano=a(dq),anp=a(rs),anq=a(hP),anM=[0,a(d),eI,12,eI,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],am_=[0,a(Q),Ap,14,Ap,40,[0,a(cF),[0,a(bX),[0,a(L),0]]]],amS=a(p),amT=a(rE),amU=a(ry),amV=a(z),amW=a(qK),amX=a(X),amY=a(ri),amZ=a(_),am0=a(r$),am1=a(ag),am2=a(qH),am3=a(P),am4=a(ro),am5=a(dq),am6=a(hP),am7=a(dq),am8=a(rs),am9=a(hP),anN=[0,a(d),eI,12,eI,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amM=[0,a(d),ja,14,ja,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amI=[0,a(Q),nY,14,nY,41,[0,a("Article 11"),[0,a(bX),[0,a(L),0]]]],amH=a(kn),amD=[0,a(E),zl,14,zl,29,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],amC=a(xu),amE=[0,a(d),o1,11,o1,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amB=[0,a(d),o1,11,o1,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amF=[0,a(aD),[0,a("fraction_l832_3"),0]],amJ=[0,a(d),mv,11,mv,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amG=[0,a(d),mv,11,mv,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amK=[0,a(aD),[0,a("montant_forfaitaire_d823_16"),0]],amN=[0,a(d),ja,14,ja,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amO=[0,a(aD),[0,a(kE),0]],amL=[0,a(d),ja,14,ja,50,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amP=[0,a(aD),[0,a(eE),[0,a(bk),0]]],amQ=[0,a(aD),[0,a(eE),[0,a(bk),0]]],anO=[0,a(d),eI,12,eI,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],amR=[0,a(d),eI,12,eI,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anP=[0,a(aD),[0,a(Fe),0]],ao7=[0,a(d),dW,11,dW,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],anQ=[0,a(d),dW,11,dW,41,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao8=[0,a(aD),[0,a("abattement_forfaitaire_d823_17"),0]],apw=[0,a(d),eT,11,eT,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ao9=[0,a(d),eT,11,eT,26,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apx=[0,a(aD),[0,a("loyer_r\xc3\xa9f\xc3\xa9rence"),0]],apD=[0,a(d),ns,11,ns,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apy=[0,a(d),ns,11,ns,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apE=[0,a(aD),[0,a("montant_minimal_aide_d823_16"),0]],ast=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],apF=[0,a(d),ax,12,ax,35,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asu=[0,a(aD),[0,a(C4),0]],asZ=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],asv=[0,a(d),cg,12,cg,47,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as0=[0,a(aD),[0,a(zm),0]],as5=[0,a(d),mx,10,mx,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as1=[0,a(d),mx,10,mx,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as6=[0,a(aD),[0,a("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"),0]],ata=[0,a(d),no,11,no,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],as7=[0,a(d),no,11,no,38,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atb=[0,a(aD),[0,a("plafond_suppression_d823_16"),0]],ath=[0,a(d),nf,11,nf,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atc=[0,a(d),nf,11,nf,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],ati=[0,a(aD),[0,a("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"),0]],atl=[0,a(d),mp,11,mp,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atj=[0,a(d),mp,11,mp,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atm=[0,a(aD),[0,a("loyer_\xc3\xa9ligible"),0]],att=[0,a(aD),[0,a(ku),0]],atN=[0,a(d),eW,12,eW,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atu=[0,a(d),eW,12,eW,34,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atO=[0,a(aD),[0,a(Ff),0]],at2=[0,a(d),dL,11,dL,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],atP=[0,a(d),dL,11,dL,25,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],at3=[0,a(aD),[0,a("rapport_loyers"),0]],aub=[0,a(aD),[0,a(bI),0]],auT=[0,a(d),eC,10,eC,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auc=[0,a(d),eC,10,eC,17,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],auU=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_formule"),0]],au9=[0,a(aD),[0,a(bJ),0]],avl=[0,a(d),eB,10,eB,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],au_=[0,a(d),eB,10,eB,22,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avm=[0,a(aD),[0,a("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]],avw=[0,a(aD),[0,a(kl),0]],avz=[0,a(d),oB,11,oB,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avx=[0,a(d),oB,11,oB,39,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avA=[0,a(aD),[0,a("taux_prise_compte_ressources"),0]],avJ=[0,a(aD),[0,a(fk),0]],avO=[0,a(d),kI,12,kI,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avK=[0,a(d),kI,12,kI,37,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avP=[0,a(aD),[0,a(CM),0]],avU=[0,a(d),oR,12,oR,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avQ=[0,a(d),oR,12,oR,31,[0,a(K),[0,a(t),[0,a(i),[0,a(e),0]]]]],avV=[0,a(aD),[0,a(cX),0]],avX=a(ij),avW=[0,a(E),ma,13,ma,74,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],av2=[0,a(E),ma,13,ma,74,[0,a(eu),[0,a(dD),[0,a(bb),[0,a(a4),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],avZ=a(xu),av0=a(oG),avY=[0,a(aG),gS,13,gS,61,[0,a(qY),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],av1=[0,a(aG),gS,13,gS,61,[0,a(qY),[0,a(bj),[0,a(af),[0,a(x),[0,a(ab),[0,a(w),0]]]]]]],amp=[7,0],amq=[5,0],amr=[4,0],ams=[3,0],amt=[2,0],amu=[1,0],amv=[0,0],amw=[6,0],amx=[0,a(bw),29,5,38,6,[0,a(b5),[0,a(l4),[0,a(aC),0]]]],amo=a(wR),amy=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],aml=[8,0],amm=[0,a(bw),47,5,49,6,[0,a(b5),[0,a(l4),[0,a(aC),0]]]],amk=a(xO),amn=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],ama=[7,0],amb=[5,0],amc=[4,0],amd=[3,0],ame=[2,0],amf=[1,0],amg=[0,0],amh=[6,0],ami=[0,a(bw),68,5,77,6,[0,a(b5),[0,a(nU),[0,a(aC),0]]]],al$=a(AX),amj=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],al8=[8,0],al9=[0,a(bw),86,5,88,6,[0,a(b5),[0,a(nU),[0,a(aC),0]]]],al7=a(ve),al_=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alX=[7,0],alY=[5,0],alZ=[4,0],al0=[3,0],al1=[2,0],al2=[1,0],al3=[0,0],al4=[6,0],al5=[0,a(bw),c5,5,bq,6,[0,a(b5),[0,a(l9),[0,a(aC),0]]]],alW=a(BA),al6=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alT=[8,0],alU=[0,a(bw),fi,5,hv,6,[0,a(b5),[0,a(l9),[0,a(aC),0]]]],alS=a(EO),alV=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alI=[7,0],alJ=[5,0],alK=[4,0],alL=[3,0],alM=[2,0],alN=[1,0],alO=[0,0],alP=[6,0],alQ=[0,a(bw),o_,5,hy,6,[0,a(b5),[0,a(nq),[0,a(aC),0]]]],alH=a(BT),alR=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alE=[8,0],alF=[0,a(bw),fb,5,eH,6,[0,a(b5),[0,a(nq),[0,a(aC),0]]]],alD=a(w5),alG=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alt=[7,0],alu=[5,0],alv=[4,0],alw=[3,0],alx=[2,0],aly=[1,0],alz=[0,0],alA=[6,0],alB=[0,a(bw),h6,5,iK,6,[0,a(fS),[0,a(mT),[0,a(aC),0]]]],als=a(zU),alC=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],alp=[8,0],alq=[0,a(bw),w9,5,yI,6,[0,a(fS),[0,a(mT),[0,a(aC),0]]]],alo=a(EN),alr=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],ale=[7,0],alf=[5,0],alg=[4,0],alh=[3,0],ali=[2,0],alj=[1,0],alk=[0,0],all=[6,0],alm=[0,a(bw),vN,5,Fa,6,[0,a(fS),[0,a(or),[0,a(aC),0]]]],ald=a(Ev),aln=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],ala=[8,0],alb=[0,a(bw),Fi,5,vJ,6,[0,a(fS),[0,a(or),[0,a(aC),0]]]],ak$=a(Ft),alc=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],ak1=[7,0],ak2=[5,0],ak3=[4,0],ak4=[3,0],ak5=[2,0],ak6=[1,0],ak7=[0,0],ak8=[6,0],ak9=[0,a(bw),rv,5,nY,6,[0,a(b5),[0,a(ne),[0,a(aC),0]]]],ak0=a(v$),ak_=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akX=[8,0],akY=[0,a(bw),Bi,5,nn,6,[0,a(b5),[0,a(ne),[0,a(aC),0]]]],akW=a(zT),akZ=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],amz=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],akV=[0,a(bw),11,12,11,24,[0,a(B),[0,a(aC),0]]],amA=[0,a(hp),[0,a(Ac),0]],akR=[0,a(eJ),28,5,29,33,[0,a(Cw),[0,a(cf),0]]],akQ=a(xR),akS=[0,a(eJ),6,12,6,19,[0,a(cf),0]],akO=[0,a(eJ),48,5,49,33,[0,a(AR),[0,a(cf),0]]],akN=a(xs),akP=[0,a(eJ),6,12,6,19,[0,a(cf),0]],akL=[0,a(eJ),64,5,65,33,[0,a(Ci),[0,a(cf),0]]],akK=a(B8),akM=[0,a(eJ),6,12,6,19,[0,a(cf),0]],akI=[0,a(eJ),82,5,83,33,[0,a(w0),[0,a(cf),0]]],akH=a(B2),akJ=[0,a(eJ),6,12,6,19,[0,a(cf),0]],akT=[0,a(eJ),6,12,6,19,[0,a(cf),0]],akG=[0,a(eJ),6,12,6,19,[0,a(cf),0]],akU=[0,a(f4),[0,a(bQ),0]],akB=[0,a(E),zi,14,zi,28,[0,a(kY),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akA=a(p),akC=[0,a(d),fZ,12,fZ,26,[0,a(cj),[0,a(A),[0,a(e),0]]]],akz=[0,a(E),Dq,14,Dq,28,[0,a(kS),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aky=a(p),akD=[0,a(d),fZ,12,fZ,26,[0,a(cj),[0,a(A),[0,a(e),0]]]],akt=[0,a(E),q7,20,q7,55,[0,a(kS),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akq=a(p),akr=a(p),aks=a(kR),aku=[0,a(d),d0,11,d0,43,[0,a(cj),[0,a(A),[0,a(e),0]]]],ako=[0,a(E),DP,20,DP,51,[0,a(kS),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akl=a(p),akm=a(p),akn=a(kR),akp=[0,a(d),d0,11,d0,43,[0,a(cj),[0,a(A),[0,a(e),0]]]],akj=[0,a(E),yf,7,yf,42,[0,a(kY),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],akf=a(CH),akg=a(ep),akh=a(kR),aki=a(p),akk=[0,a(d),d0,11,d0,43,[0,a(cj),[0,a(A),[0,a(e),0]]]],akd=[0,a(E),wM,7,wM,51,[0,a(kY),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj$=a(CH),aka=a(ep),akb=a(kR),akc=a(p),ake=[0,a(d),d0,11,d0,43,[0,a(cj),[0,a(A),[0,a(e),0]]]],aj6=[0,a(E),wE,14,wE,36,[0,a(kS),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj7=[0,a(d),fO,11,fO,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],aj4=[0,a(E),B4,14,B4,36,[0,a(kY),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],aj3=a(cI),aj5=[0,a(d),fO,11,fO,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],ajX=[0,a(E),vS,14,vS,36,[0,a(kY),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajY=[0,a(d),fR,11,fR,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],ajW=[0,a(E),xY,14,xY,36,[0,a(kS),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajZ=[0,a(d),fR,11,fR,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],ajS=[0,a(E),vW,14,vW,36,[0,a("Article R824-3"),[0,a(ea),[0,a(ed),[0,a(ac),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajN=[0,0],ajO=[1,0],ajP=[1,0],ajQ=[0,0],ajR=[0,0],ajT=[0,a(d),oH,11,oH,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],ajM=[0,a(d),oH,11,oH,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],ajU=[0,a(kQ),[0,a("mode_occupation_impay\xc3\xa9"),0]],aj0=[0,a(d),fR,11,fR,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],ajV=[0,a(d),fR,11,fR,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],aj1=[0,a(kQ),[0,a("d\xc3\xa9pense_logement_brute"),0]],aj8=[0,a(d),fO,11,fO,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],aj2=[0,a(d),fO,11,fO,33,[0,a(cj),[0,a(A),[0,a(e),0]]]],aj9=[0,a(kQ),[0,a("d\xc3\xa9pense_logement_nette"),0]],akv=[0,a(d),d0,11,d0,43,[0,a(cj),[0,a(A),[0,a(e),0]]]],aj_=[0,a(d),d0,11,d0,43,[0,a(cj),[0,a(A),[0,a(e),0]]]],akw=[0,a(kQ),[0,a("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"),0]],akE=[0,a(d),fZ,12,fZ,26,[0,a(cj),[0,a(A),[0,a(e),0]]]],akx=[0,a(d),fZ,12,fZ,26,[0,a(cj),[0,a(A),[0,a(e),0]]]],akF=[0,a(kQ),[0,a("montant_impay\xc3\xa9"),0]],ajH=[0,a(c_),rV,5,rV,42,[0,a(kp),[0,a(j9),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(jd),[0,a(ab),[0,a(ae),0]]]]]]]]]],ajI=[0,a(d),cW,12,cW,31,[0,a(fF),[0,a(A),[0,a(e),0]]]],ajF=[0,a(c_),ey,5,ey,41,[0,a(kP),[0,a(kw),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(j_),[0,a(a9),[0,a(ae),0]]]]]]]]]],ajG=[0,a(d),cW,12,cW,31,[0,a(fF),[0,a(A),[0,a(e),0]]]],ajD=[0,a(c_),266,5,vP,42,[0,a(kP),[0,a(kw),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(j_),[0,a(a9),[0,a(ae),0]]]]]]]]]],ajE=[0,a(d),cW,12,cW,31,[0,a(fF),[0,a(A),[0,a(e),0]]]],ajA=a("1952"),ajB=[0,a(c_),xp,5,xp,48,[0,a(kP),[0,a(kw),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(j_),[0,a(a9),[0,a(ae),0]]]]]]]]]],ajC=[0,a(d),cW,12,cW,31,[0,a(fF),[0,a(A),[0,a(e),0]]]],ajx=a("1953"),ajy=[0,a(c_),nn,5,nn,48,[0,a(kP),[0,a(kw),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(j_),[0,a(a9),[0,a(ae),0]]]]]]]]]],ajz=[0,a(d),cW,12,cW,31,[0,a(fF),[0,a(A),[0,a(e),0]]]],aju=a("1954"),ajv=[0,a(c_),dm,5,dm,48,[0,a(kP),[0,a(kw),[0,a(ew),[0,a(eR),[0,a(eS),[0,a(eq),[0,a(j_),[0,a(a9),[0,a(ae),0]]]]]]]]]],ajw=[0,a(d),cW,12,cW,31,[0,a(fF),[0,a(A),[0,a(e),0]]]],ajJ=[0,a(d),cW,12,cW,31,[0,a(fF),[0,a(A),[0,a(e),0]]]],ajt=[0,a(d),cW,12,cW,31,[0,a(fF),[0,a(A),[0,a(e),0]]]],ajK=[0,a(rO),[0,a("\xc3\xa2ge_ouverture_droit"),0]],ajq=[0,a(E),xM,14,xM,36,[0,a(d8),[0,a(an),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]],ajc=a(p),ajd=a(Ef),aje=a(wt),ajf=a(z),ajg=a(ij),ajh=a(X),aji=a(ow),ajj=a(_),ajk=a(qJ),ajl=a(ag),ajm=a(hU),ajn=a(ag),ajo=a(kf),ajp=a(hU),ajr=[0,a(d),l3,12,l3,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],ajb=[0,a(d),l3,12,l3,34,[0,a(D),[0,a(t),[0,a(i),[0,a(e),0]]]]],ajs=[0,a(kt),[0,a(wa),0]],ai9=[0,a(E),yy,5,yy,26,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aiV=a(p),aiW=a("1.2"),aiX=a("1.5"),aiY=a(z),aiZ=a(ij),ai0=a(X),ai1=a(ow),ai2=a(_),ai3=a(qJ),ai4=a(ag),ai5=a(hU),ai6=a(ag),ai7=a(kf),ai8=a(hU),ai_=[0,a(d),jj,12,jj,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiU=[0,a(E),vT,14,vT,36,[0,a(cr),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aiG=a(p),aiH=a(Ef),aiI=a(wt),aiJ=a(z),aiK=a(ij),aiL=a(X),aiM=a(ow),aiN=a(_),aiO=a(qJ),aiP=a(ag),aiQ=a(hU),aiR=a(ag),aiS=a(kf),aiT=a(hU),ai$=[0,a(d),jj,12,jj,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiF=[0,a(d),jj,12,jj,34,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aja=[0,a(kC),[0,a(r8),0]],aiB=[0,a(E),oO,5,oO,26,[0,a(rA),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aiz=a(b4),aiy=a(cI),aiA=a(b4),aiC=[0,a(d),jk,12,jk,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aix=[0,a(E),xi,14,xi,21,[0,a(rA),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aiv=a(b4),aiu=a(cI),aiw=a(b4),aiq=[0,a(E),EM,14,EM,50,[0,a(rA),[0,a(a7),[0,a(ap),[0,a(am),[0,a(af),[0,a(x),[0,a(F),[0,a(w),0]]]]]]]]],aip=[1,0],aik=[0,a(Q),BJ,5,BJ,26,[0,a(sB),[0,a(fd),[0,a(L),0]]]],ah7=a("0.328"),ah8=a(x4),ah9=[1,0],ah_=a(we),ah$=a(D2),aia=a(x4),aib=a(vs),aic=a(za),aid=a(D2),aie=a("0.024"),aif=a(wA),aig=a(za),aih=a(b4),aii=a(p),aij=a(wA),ail=[0,a(d),is,11,is,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ah6=[0,a(Q),FW,14,FW,38,[0,a(sB),[0,a(fd),[0,a(L),0]]]],ahO=a("0.48"),ahP=a(xt),ahQ=[1,0],ahR=a(sv),ahS=a(zf),ahT=a(xt),ahU=a("0.264"),ahV=a(yA),ahW=a(zf),ahX=a("0.216"),ahY=a(Eq),ahZ=a(yA),ah0=a("0.104"),ah1=a(yx),ah2=a(Eq),ah3=a(CE),ah4=a(p),ah5=a(yx),ahK=[0,a(Q),Ah,14,Ah,41,[0,a(sB),[0,a(fd),[0,a(L),0]]]],ahI=a("7632"),ahJ=a("4557"),ahL=[0,a(d),ml,11,ml,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahH=[0,a(d),ml,11,ml,38,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahM=[0,a(dP),[0,a("montant_forfaitaire_d832_26"),0]],aim=[0,a(d),is,11,is,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ahN=[0,a(d),is,11,is,35,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ain=[0,a(dP),[0,a("tranches_revenus_d832_26"),0]],air=[0,a(d),kM,11,kM,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aio=[0,a(d),kM,11,kM,47,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ais=[0,a(dP),[0,a("tranches_revenus_d832_26_multipli\xc3\xa9es"),0]],aiD=[0,a(d),jk,12,jk,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],ait=[0,a(d),jk,12,jk,19,[0,a(N),[0,a(t),[0,a(i),[0,a(e),0]]]]],aiE=[0,a(dP),[0,a(bQ),0]],ahD=[0,a(e$),Gl,5,Gl,34,[0,a(cF),[0,a(ru),[0,a(sx),0]]]],ahE=[0,a(d),mW,12,mW,19,[0,a(fI),[0,a(i),[0,a(e),0]]]],ahC=[0,a(d),mW,12,mW,19,[0,a(fI),[0,a(i),[0,a(e),0]]]],ahz=[0,a(e$),xX,39,xX,68,[0,a(nA),[0,a(ru),[0,a(sx),0]]]],ahy=a(l_),aht=[0,a(c_),37,9,37,20,[0,a("Article L136-1-3"),[0,a("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"),[0,a("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"),[0,a(jd),[0,a(ab),[0,a(ae),0]]]]]]],ahu=[0,a(d),f1,11,f1,22,[0,a(fI),[0,a(i),[0,a(e),0]]]],ahs=[0,a(d),f1,11,f1,22,[0,a(fI),[0,a(i),[0,a(e),0]]]],ahv=[0,a(d),f1,11,f1,22,[0,a(fI),[0,a(i),[0,a(e),0]]]],ahr=[0,a(d),f1,11,f1,22,[0,a(fI),[0,a(i),[0,a(e),0]]]],ahw=[0,a(bk),[0,a("exon\xc3\xa9r\xc3\xa9_csg"),0]],ahA=[0,a(d),n3,11,n3,20,[0,a(fI),[0,a(i),[0,a(e),0]]]],ahx=[0,a(d),n3,11,n3,20,[0,a(fI),[0,a(i),[0,a(e),0]]]],ahB=[0,a(bk),[0,a("taux_crds"),0]],ahF=[0,a(bk),[0,a(bQ),0]],ahG=[0,a(e$),cP,13,cP,24,[0,a(cF),[0,a(ru),[0,a(sx),0]]]],ahh=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"),ahi=a(hE),ahj=a(h4),ahk=a(iC),ahl=a(iD),ahm=a(kJ),ahn=a(AY),aho=a(vq),ahp=a(Dg),ahq=[0,a("CalculAllocationLogementFoyer_in"),0],ag4=a(Af),ag5=a("charges_mensuelles_pr\xc3\xaat_in"),ag6=a(y0),ag7=a(AT),ag8=a(yo),ag9=a(u_),ag_=a(Ay),ag$=a(wV),aha=a(hE),ahb=a(h4),ahc=a(iC),ahd=a(iD),ahe=a("ressources_m\xc3\xa9nage_arrondies_base_in"),ahf=[0,a("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],agP=a("changement_logement_d842_4_in"),agQ=a(vR),agR=a(Bx),agS=a(BO),agT=a(B_),agU=a(BH),agV=a(FB),agW=a(h4),agX=a(iC),agY=a(iD),agZ=a(hE),ag0=a(Gk),ag1=a(kJ),ag2=a("loyer_principal_in"),ag3=[0,a("CalculAllocationLogementLocatif_in"),0],agA=a(hE),agB=a("anciennet\xc3\xa9_logement_in"),agC=a("type_pr\xc3\xaat_in"),agD=a(h4),agE=a(Ay),agF=a(Af),agG=a(y0),agH=a(AT),agI=a(u_),agJ=a(yo),agK=a(iC),agL=a(iD),agM=a(kJ),agN=a(wV),agO=[0,a("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"),0],ago=a("n_nombre_parts_d832_25_in"),agp=a("condition_2_du_832_25_in"),agq=a(AY),agr=a(hE),ags=a(h4),agt=a(iC),agu=a(iD),agv=a(kJ),agw=a(vq),agx=a(Dg),agy=[0,a("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"),0],af$=a(vR),aga=a(Bx),agb=a(BO),agc=a(B_),agd=a(BH),age=a(FB),agf=a(h4),agg=a(iC),agh=a(iD),agi=a(hE),agj=a(Gk),agk=a(kJ),agl=a("loyer_principal_base_in"),agm=[0,a("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"),0],af2=a("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"),af3=a("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"),af4=a("situation_familiale"),af5=a("nombre_autres_occupants_logement"),af6=a("personnes_\xc3\xa0_charge"),af7=a("logement"),af8=a("prestations_re\xc3\xa7ues"),af9=[0,a("M\xc3\xa9nage"),0],afS=a("zone"),afT=a("surface_m_carr\xc3\xa9s"),afU=a("logement_decent_l89_462"),afV=a("usufruit"),afW=a("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"),afX=a("propri\xc3\xa9taire"),afY=a("mode_occupation"),afZ=a("est_ehpad_ou_maison_autonomie_l313_12_asf"),af0=a("r\xc3\xa9sidence_principale"),af1=[0,a("Logement"),0],afM=a(zh),afO=a("R\xc3\xa9sidentLogementFoyer"),afP=a("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"),afQ=a(Dt),afR=a(xZ),afN=[0,a("ModeOccupation"),0],afI=a(Ga),afK=a("AccessionPropri\xc3\xa9t\xc3\xa9"),afL=a(x3),afJ=[0,a("Cat\xc3\xa9gorieCalculAPL"),0],afz=a("changement_logement_d842_4"),afA=a("logement_meubl\xc3\xa9_d842_2"),afB=a("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"),afC=a("colocation"),afD=a("logement_est_chambre"),afE=a("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"),afF=a("loyer_principal"),afG=a("bailleur"),afH=[0,a(Ga),0],afu=a("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"),afv=a("patrimoine"),afw=a("nationalit\xc3\xa9"),afx=a(By),afy=[0,a(qB),0],afr=a(D8),aft=a(CX),afs=[0,a("Personne\xc3\x80Charge"),0],aff=a("pr\xc3\xaat"),afg=a("anciennet\xc3\xa9_logement"),afh=a("situation_r822_11_13_17"),afi=a("copropri\xc3\xa9t\xc3\xa9"),afj=a("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"),afk=a("type_travaux_logement_r842_5"),afl=a("type_travaux_logement_d832_15"),afm=a("date_entr\xc3\xa9e_logement"),afn=a("charges_mensuelles_pr\xc3\xaat"),afo=a("mensualit\xc3\xa9_principale"),afp=a("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"),afq=[0,a("Propri\xc3\xa9taire"),0],afc=a(AZ),afe=a(zI),afd=[0,a("ChangementLogementD842_4"),0],ae$=a("Fran\xc3\xa7aise"),afb=a("\xc3\x89trang\xc3\xa8re"),afa=[0,a("Nationalit\xc3\xa9"),0],ae8=a(kZ),ae_=a(o$),ae9=[0,a("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"),0],ae4=a(C2),ae6=a("BailleurPriv\xc3\xa9AvecConventionnementSocial"),ae7=a("BailleurPriv\xc3\xa9"),ae5=[0,a("TypeBailleur"),0],aeW=a("situation_garde_altern\xc3\xa9e"),aeX=a(rI),aeY=a(q_),aeZ=a(q9),ae0=a(q1),ae1=a(qN),ae2=a(rB),ae3=[0,a(D8),0],aeO=a(qN),aeP=a(q1),aeQ=a(E9),aeR=a(q9),aeS=a(q_),aeT=a(rI),aeU=a(rB),aeV=[0,a("EnfantPrestationsFamiliales"),0],aeG=a("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"),aeH=a("redevance"),aeI=a("construit_application_loi_1957_12_III"),aeJ=a("date_conventionnement"),aeK=a(Fq),aeL=a("remplit_conditions_r832_21"),aeM=a("type"),aeN=[0,a(x3),0],aey=a("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"),aez=a("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"),aeA=a("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"),aeB=a("parent\xc3\xa9"),aeC=a("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"),aeD=a("ressources"),aeE=a(By),aeF=[0,a(CX),0],aeu=a(vc),aev=a(vr),aew=a(EU),aex=[0,a("TrancheRevenuD\xc3\xa9cimal"),0],aep=a(vc),aeq=a(vr),aer=a(EU),aes=[0,a("TrancheRevenu"),0],ael=a(AK),aen=a(Dc),aem=[0,a("NeufOuAncien"),0],aeh=a("titulaire_pr\xc3\xaat"),aei=a("date_signature"),aej=a("type_pr\xc3\xaat"),aek=[0,a("Pr\xc3\xaat"),0],aea=a(aw),aeb=a(cX),aec=a(F2),aed=a(qG),aee=a(vg),aef=a(rb),aeg=[0,a(ao),0],ad8=a(aw),ad9=a(cX),ad_=[0,a(V),0],ad5=a(aw),ad6=a(cX),ad7=[0,a(bh),0],ad2=a("ancienne_allocation_logement"),ad3=a("ancien_loyer_principal"),ad4=[0,a("InfosChangementLogementD842_4"),0],adZ=a(aw),ad0=a(cX),ad1=[0,a("Traitement_formule_aide_finale"),0],adT=a(aw),adU=a(cX),adV=a("coefficient_prise_en_charge_d832_10"),adW=a(re),adX=a(su),adY=[0,a(aj),0],adI=a(aw),adJ=a(cX),adK=a("coefficient_prise_en_charge_d832_25"),adL=a(vv),adM=a(z4),adN=a(xQ),adO=a(r8),adP=a(Et),adQ=a(Bb),adR=[0,a(au),0],adz=a(aw),adA=a(cX),adB=a(CM),adC=a(Fe),adD=a(Ff),adE=a(C4),adF=a(zm),adG=[0,a(aD),0],adw=a("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"),adx=[0,a("Conditions\xc3\x89trangers"),0],adt=a("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adu=a("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"),adv=[0,a("Patrimoine"),0],adq=a("conforme_article_l442_1"),adr=a("date_naissance_personne_sous_location"),ads=[0,a("PersonneSousLocation"),0],ado=a("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"),adp=[0,a("ConventionANHA"),0],adl=a("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"),adm=a(Fq),adn=[0,a("ConventionBailleurSocial"),0],adc=a(on),ade=a(U),adf=a(q0),adg=a(n4),adh=a(DZ),adi=a(iX),adj=a(B0),adk=a(y4),add=[0,a(F1),0],ac9=a(kv),ac$=a(kk),ada=a(Cp),ac_=[0,a(C1),0],ac3=a(Bc),ac5=a(D_),ac6=a(j8),ac7=a(FC),ac8=a(yP),ac4=[0,a("PriseEnChargeEnfant"),0],acT=a(mH),acV=a(oA),acW=a(mj),acX=a(Dz),acY=a(yZ),acZ=a(pb),ac0=a(C9),ac1=a(nv),ac2=a(oM),acU=[0,a(B3),0],acQ=a(E5),acS=a(Aw),acR=[0,a("SituationFamilialeCalculAPL"),0],acL=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"),acN=a("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"),acO=a("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"),acP=a(E2),acM=[0,a("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"),0],acG=a("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"),acI=a("R\xc3\xa9sidenceSociale"),acJ=a("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"),acK=a(im),acH=[0,a("TypeLogementFoyer"),0],acz=a("C\xc3\xa9libataire"),acB=a("Mari\xc3\xa9s"),acC=a("Pacs\xc3\xa9s"),acD=a(y1),acE=a("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"),acF=a("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"),acA=[0,a("SituationFamiliale"),0],acv=a("AidePersonnalis\xc3\xa9eLogement"),acx=a(o0),acy=a(nt),acw=[0,a("TypeAidesPersonnelleLogement"),0],acr=a("Pas\xc3\x89ligible"),act=a(o0),acu=a(nt),acs=[0,a("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"),0],aco=a("Impay\xc3\xa9Loyer"),acq=a("Impay\xc3\xa9Pr\xc3\xaat"),acp=[0,a("ModeOccupationImpay\xc3\xa9"),0],acj=a("TotalAnnuel\xc3\x89ch\xc3\xa9ances"),acl=a("Mensualit\xc3\xa9"),acm=a(FG),ack=[0,a("D\xc3\xa9penseLogement"),0],acf=a(zg),ach=a(wc),aci=a(yT),acg=[0,a("ZoneDHabitation"),0],acb=a(Bq),acd=a(Bg),ace=a("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"),acc=[0,a("Parent\xc3\xa9"),0],ab_=a("PasDeGardeAltern\xc3\xa9e"),aca=a("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"),ab$=[0,a("SituationGardeAltern\xc3\xa9e"),0],ab7=a("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"),ab9=a(im),ab8=[0,a("ParentOuAutre"),0],ab0=a(U),ab2=a(q0),ab3=a(CW),ab4=a(iX),ab5=a("AllocationSoutienEnfantHandicap\xc3\xa9"),ab6=a("AllocationAdulteHandicap\xc3\xa9"),ab1=[0,a("PrestationRe\xc3\xa7ue"),0],abW=a(Eu),abY=a(v8),abX=[0,a("LimiteTrancheD\xc3\xa9cimal"),0],abT=a(Eu),abV=a(v8),abU=[0,a("LimiteTranche"),0],abQ=a(o$),abS=a(kZ),abR=[0,a("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0],abL=a("ObjectifD\xc3\xa9cenceLogement"),abN=a("Pr\xc3\xa9vuDansListeR321_15"),abO=a(Cu),abP=a(oy),abM=[0,a("TypeTravauxLogementR842_5"),0],abH=a(xk),abJ=a("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"),abK=a(oy),abI=[0,a("TypeTravauxLogementD832_15"),0],abE=a(qB),abG=a(xJ),abF=[0,a("TitulairePr\xc3\xaat"),0],aby=a(BI),abA=a(xH),abB=a(Ae),abC=a(Am),abD=a(im),abz=[0,a("TypePr\xc3\xaat"),0],byd=a(aa),bxP=a("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."),bxQ=a("The function 'condition_2_du_832_25_in' translation isn't yet supported..."),bxN=a("The function 'condition_logement_surface_in' translation isn't yet supported..."),bxO=a("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."),bxH=a("AccessionProprieteLocalUsageExclusifHabitation"),bxI=a(zh),bxJ=a(xZ),bxK=a("ResidentLogementFoyer"),bxL=a(Dt),bxM=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ModeOccupation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")],bxE=a("AutrePersonneACharge"),bxF=a("EnfantACharge"),bxG=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PersonneACharge.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")],bxA=a(AZ),bxB=a(zI),bxD=[1,0],bxC=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ChangementLogementD8424.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")],bxw=a("Etrangere"),bxx=a("Francaise"),bxz=[0,0],bxy=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Nationalite.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Nationalite.t'")],bxs=a(kZ),bxt=a(o$),bxv=[0,0],bxu=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")],bxn=a("BailleurPrive"),bxo=a("BailleurPriveAvecConventionnementSocial"),bxp=a(C2),bxr=[2,0],bxq=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeBailleur.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")],bxj=a("MoinsDeTroisEnfants"),bxk=a("PlusDeTroisEnfants"),bxm=[0,0],bxl=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")],bxf=a(Dc),bxg=a(AK),bxi=[0,0],bxh=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'NeufOuAncien.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")],bw0=a(v3),bw1=a(yc),bw2=a(n4),bw3=a(EK),bw4=a(iX),bw5=a(U),bw6=a(qA),bw7=a(on),bw9=[0,0],bw_=[2,0],bw$=[1,0],bxa=[5,0],bxb=[6,0],bxc=[3,0],bxd=[7,0],bxe=[4,0],bw8=[0,[11,a(bg),[2,0,[11,a(D$),0]]],a(F3)],bwT=a(r7),bwU=a(kv),bwV=a(kk),bwX=[1,0],bwY=[0,0],bwZ=[2,0],bwW=[0,[11,a(bg),[2,0,[11,a(x7),0]]],a(wD)],bwI=a(j8),bwJ=a(rh),bwK=a(qV),bwL=a(rz),bwM=a(qS),bwO=[4,0],bwP=[3,0],bwQ=[0,0],bwR=[1,0],bwS=[2,0],bwN=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PriseEnChargeEnfant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")],bwp=a(mH),bwq=a(oA),bwr=a(wy),bws=a(mj),bwt=a(oM),bwu=a(Fu),bwv=a(xm),bww=a(pb),bwx=a(nv),bwz=[7,0],bwA=[5,0],bwB=[4,0],bwC=[6,0],bwD=[8,0],bwE=[2,0],bwF=[3,0],bwG=[1,0],bwH=[0,0],bwy=[0,[11,a(bg),[2,0,[11,a(BY),0]]],a(wT)],bwk=a(Aw),bwl=a(E5),bwn=[0,0],bwo=[1,0],bwm=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")],bwb=a(E2),bwc=a("EtudiantLogeEnChambreCROUS"),bwd=a("EtudiantLogeEnChambreCROUSRehabilitee"),bwe=a("PersonnesAgeesSelon3DeD842_16"),bwg=[2,0],bwh=[1,0],bwi=[0,0],bwj=[3,0],bwf=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")],bv4=a(im),bv5=a("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"),bv6=a("LogementPersonnesAgeesOuHandicapees"),bv7=a("ResidenceSociale"),bv9=[1,0],bv_=[0,0],bv$=[2,0],bwa=[3,0],bv8=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeLogementFoyer.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")],bvS=a("Celibataire"),bvT=a("CelibataireSepareDeFait"),bvU=a("ConcubinageDontSepareDeFait"),bvV=a(y1),bvW=a("Maries"),bvX=a("Pacses"),bvZ=[2,0],bv0=[3,0],bv1=[5,0],bv2=[4,0],bv3=[0,0],bvY=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationFamiliale.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")],bvL=a("AidePersonnaliseeLogement"),bvM=a(o0),bvN=a(nt),bvP=[2,0],bvQ=[1,0],bvR=[0,0],bvO=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")],bvH=a(FG),bvI=a("Mensualite"),bvJ=a("TotalAnnuelEcheances"),bvK=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DepenseLogement.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")],bvA=a("Bailleur"),bvB=a("Beneficiaire"),bvC=a("EtablissementHabilite"),bvE=[2,0],bvF=[1,0],bvG=[0,0],bvD=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'VersementA.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'VersementA.t'")],bvw=a(kZ),bvx=a("OuiAvecLoyerOuCharges"),bvz=[1,0],bvy=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")],bvp=a(zg),bvq=a(wc),bvr=a(yT),bvt=[2,0],bvu=[1,0],bvv=[0,0],bvs=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ZoneDHabitation.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")],bvj=a("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bvk=a("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"),bvl=a("DateDeNaissance"),bvn=[1,0],bvo=[2,0],bvm=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")],bvc=a(Bq),bvd=a("CollateralDeuxiemeTroisiemeDegre"),bve=a(Bg),bvg=[1,0],bvh=[2,0],bvi=[0,0],bvf=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'Parente.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'Parente.t'")],bu_=a("GardeAlterneeCoefficientPriseEnCharge"),bu$=a("PasDeGardeAlternee"),bvb=[0,0],bva=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'SituationGardeAlternee.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")],bu6=a(im),bu7=a("DemandeurOuConjointOuParentOuViaPartsSocietes"),bu9=[1,0],bu8=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'ParentOuAutre.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")],buT=a("AllocationAdulteHandicape"),buU=a(CW),buV=a("AllocationSoutienEnfantHandicape"),buW=a(iX),buX=a(U),buY=a(qA),bu0=[1,0],bu1=[0,0],bu2=[3,0],bu3=[4,0],bu4=[2,0],bu5=[5,0],buZ=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'PrestationRecue.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")],buO=a(kZ),buP=a(o$),buR=[0,0],buS=[1,0],buQ=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'AmelioreParOccupant.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")],buF=a(Cu),buG=a("ObjectifDecenceLogement"),buH=a(oy),buI=a("PrevuDansListeR321_15"),buK=[1,0],buL=[3,0],buM=[0,0],buN=[2,0],buJ=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementR8425.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")],buy=a(oy),buz=a(xk),buA=a("TravauxSurLogementDejaAcquisD832_15_2"),buC=[1,0],buD=[0,0],buE=[2,0],buB=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypeTravauxLogementD83215.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")],but=a(qB),buu=a(xJ),buw=[1,0],bux=[0,0],buv=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TitulairePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")],bui=a(im),buj=a(BI),buk=a(Ae),bul=a(xH),bum=a(Am),buo=[3,0],bup=[1,0],buq=[2,0],bur=[0,0],bus=[4,0],bun=[0,[11,a(bg),[2,0,[11,a("' kind for the enumeration 'TypePret.t'"),0]]],a("Unexpected '%s' kind for the enumeration 'TypePret.t'")],bug=[0,a(FE),a(zJ),a(E1),a(A8),a(xq),a(o6),a(f8),a(A7),a(y_),a(vH),a(DK),a(yD),a(Bh),a(yM),a(Fm),a(De),a(BM),a(zz),a(Gd),a(B7),a(vw),a(w$),a(A9),a(vh)],buh=[0,a(f8),a(A8),a(De),a(BM),a(zz),a(xq),a(vw),a(E1),a(vH),a(A7),a(Gd),a(Bh),a(DK),a(yM),a(A9),a(zJ),a(yD),a(B7),a(vh),a(w$),a(y_),a(FE),a(Fm),a(o6)],byC=a("AidesLogementLib"),byE=a(aa);function -bM(a){if(typeof -a==="number")return 0;else -switch(a[0]){case -0:return[0,bM(a[1])];case -1:return[1,bM(a[1])];case -2:return[2,bM(a[1])];case -3:return[3,bM(a[1])];case -4:return[4,bM(a[1])];case -5:return[5,bM(a[1])];case -6:return[6,bM(a[1])];case -7:return[7,bM(a[1])];case -8:var -c=a[1];return[8,c,bM(a[2])];case -9:var -b=a[1];return[9,b,b,bM(a[3])];case -10:return[10,bM(a[1])];case -11:return[11,bM(a[1])];case -12:return[12,bM(a[1])];case -13:return[13,bM(a[1])];default:return[14,bM(a[1])]}}function -cM(a,b){if(typeof -a==="number")return b;else -switch(a[0]){case -0:return[0,cM(a[1],b)];case -1:return[1,cM(a[1],b)];case -2:return[2,cM(a[1],b)];case -3:return[3,cM(a[1],b)];case -4:return[4,cM(a[1],b)];case -5:return[5,cM(a[1],b)];case -6:return[6,cM(a[1],b)];case -7:return[7,cM(a[1],b)];case -8:var -c=a[1];return[8,c,cM(a[2],b)];case -9:var -d=a[2],e=a[1];return[9,e,d,cM(a[3],b)];case -10:return[10,cM(a[1],b)];case -11:return[11,cM(a[1],b)];case -12:return[12,cM(a[1],b)];case -13:return[13,cM(a[1],b)];default:return[14,cM(a[1],b)]}}function -bF(a,b){if(typeof -a==="number")return b;else -switch(a[0]){case -0:return[0,bF(a[1],b)];case -1:return[1,bF(a[1],b)];case -2:var -c=a[1];return[2,c,bF(a[2],b)];case -3:var -d=a[1];return[3,d,bF(a[2],b)];case -4:var -e=a[3],f=a[2],g=a[1];return[4,g,f,e,bF(a[4],b)];case -5:var -h=a[3],i=a[2],j=a[1];return[5,j,i,h,bF(a[4],b)];case -6:var -k=a[3],l=a[2],m=a[1];return[6,m,l,k,bF(a[4],b)];case -7:var -n=a[3],o=a[2],p=a[1];return[7,p,o,n,bF(a[4],b)];case -8:var -q=a[3],r=a[2],s=a[1];return[8,s,r,q,bF(a[4],b)];case -9:var -t=a[1];return[9,t,bF(a[2],b)];case -10:return[10,bF(a[1],b)];case -11:var -u=a[1];return[11,u,bF(a[2],b)];case -12:var -v=a[1];return[12,v,bF(a[2],b)];case -13:var -w=a[2],x=a[1];return[13,x,w,bF(a[3],b)];case -14:var -y=a[2],z=a[1];return[14,z,y,bF(a[3],b)];case -15:return[15,bF(a[1],b)];case -16:return[16,bF(a[1],b)];case -17:var -A=a[1];return[17,A,bF(a[2],b)];case -18:var -B=a[1];return[18,B,bF(a[2],b)];case -19:return[19,bF(a[1],b)];case -20:var -C=a[2],D=a[1];return[20,D,C,bF(a[3],b)];case -21:var -E=a[1];return[21,E,bF(a[2],b)];case -22:return[22,bF(a[1],b)];case -23:var -F=a[1];return[23,F,bF(a[2],b)];default:var -G=a[2],H=a[1];return[24,H,G,bF(a[3],b)]}}function -pr(a,c,b){return a[1]===c?(a[1]=b,1):0}function -aI(a){throw[0,lg,a]}function -b0(a){throw[0,sZ,a]}var -s0=[bm,G8,cZ(0)];function -s5(b,a){return GK(b,a)?b:a}function -ge(a){return 0<=a?a:-a|0}var -s6=jz(G_),s7=jz(G$),G9=sf,Hb=jz(Ha);function -bS(d,c){var -a=aH(d),e=aH(c),b=bZ(a+e|0);ef(d,0,b,0,a);ef(c,0,b,a,e);return cK(b)}function -Hc(a){return a?Hd:He}bzr(0);var -Hh=GP(1),ei=GP(2);function -Hi(b){function -a(b){var -a=b;for(;;){if(a){var -c=a[2],d=a[1];try{gW(d)}catch(a){a=o(a);if(a[1]!==s3)throw a;var -e=a}var -a=c;continue}return 0}}return a(bzs(0))}function -jE(b,a){return sN(b,a,0,aH(a))}function -s8(a){jE(ei,a);GQ(ei,10);return gW(ei)}var -pu=[0,Hi];function -Hk(c){for(;;){var -a=pu[1],d=[0,1],b=1-pr(pu,a,function(a,b){return function(d){if(pr(a,1,0))r(c,0);return r(b,0)}}(d,a));if(b)continue;return b}}function -pv(a){return r(pu[1],0)}sQ(a(va),pv);var -pw=bzF(0),fr=(4*pw|0)-1|0,Hm=[bm,Hl,cZ(0)];function -Hn(a){throw Hm}function -Ho(a){var -c=a[1];a[1]=Hn;try{var -b=r(c,0);bzw(a,b);return b}catch(b){b=o(b);a[1]=function(a){throw b};throw b}}function -px(b,c,g){var -a=r(c,0);if(a){var -d=a[2],e=a[1],f=function(a){return px(b,d,a)};return[0,r(b,e),f]}return 0}function -s9(d,c){var -b=c;for(;;){var -a=r(b,0);if(a){var -e=a[2];r(d,a[1]);var -b=e;continue}return 0}}function -s_(a){if(0<=a&&!(m8>>0))e=1}else -if(65<=d)e=1}else{var -f=0;if(32!==d)if(43<=d)switch(d+AJ|0){case -5:if(a<(c+2|0)&&1>>0){if(33>>0)p=1}else -if(2===n)p=1;if(!p){var -j=j+1|0;continue}var -e=fq(k),a=[0,0],t=ds(e)-1|0,y=0;if(!(t<0)){var -i=y;for(;;){var -f=k8(e,i),g=0;if(32<=f){var -l=f-34|0,q=0;if(58>>0){if(93<=l)q=1}else -if(56>>0){g=1;q=1}if(!q){var -m=1;g=2}}else -if(11<=f){if(13===f)g=1}else -if(8<=f)g=1;switch(g){case -0:var -m=4;break;case -1:var -m=2;break}a[1]=a[1]+m|0;var -B=i+1|0;if(t!==i){var -i=B;continue}break}}if(a[1]===ds(e)){var -r=ds(e),s=bZ(r);f$(e,0,s,0,r);var -v=s}else{var -b=bZ(a[1]);a[1]=0;var -u=ds(e)-1|0,z=0;if(!(u<0)){var -h=z;for(;;){var -c=k8(e,h),d=0;if(35<=c)if(92===c)d=2;else -if(hv<=c)d=1;else -d=3;else -if(32<=c)if(34<=c)d=2;else -d=3;else -if(14<=c)d=1;else -switch(c){case -8:bY(b,a[1],92);a[1]++;bY(b,a[1],98);break;case -9:bY(b,a[1],92);a[1]++;bY(b,a[1],bq);break;case -10:bY(b,a[1],92);a[1]++;bY(b,a[1],ig);break;case -13:bY(b,a[1],92);a[1]++;bY(b,a[1],zw);break;default:d=1}switch(d){case -1:bY(b,a[1],92);a[1]++;bY(b,a[1],48+(c/cd|0)|0);a[1]++;bY(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;bY(b,a[1],48+(c%10|0)|0);break;case -2:bY(b,a[1],92);a[1]++;bY(b,a[1],c);break;case -3:bY(b,a[1],c);break}a[1]++;var -A=h+1|0;if(u!==h){var -h=A;continue}break}}var -v=b}var -o=cK(v)}var -w=aH(o),x=gf(w+2|0,34);ef(o,0,x,1,w);return cK(x)}}function -ti(d,f){var -g=ge(f),e=Jt[1];switch(d[2]){case -0:var -b=CP;break;case -1:var -b=fJ;break;case -2:var -b=69;break;case -3:var -b=cJ;break;case -4:var -b=71;break;case -5:var -b=e;break;case -6:var -b=dR;break;case -7:var -b=72;break;default:var -b=70}var -c=te(16);g4(c,37);switch(d[1]){case -0:break;case -1:g4(c,43);break;default:g4(c,32)}if(8<=d[2])g4(c,35);g4(c,46);cx(c,a(aa+g));g4(c,b);return tg(c)}function -ln(m,a){if(13<=m){var -g=[0,0],h=aH(a)-1|0,n=0;if(!(h<0)){var -c=n;for(;;){if(!(9>>0))g[1]++;var -q=c+1|0;if(h!==c){var -c=q;continue}break}}var -i=g[1],j=bZ(aH(a)+((i-1|0)/3|0)|0),k=[0,0],d=function(a){d3(j,k[1],a);k[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],l=aH(a)-1|0,o=0;if(!(l<0)){var -b=o;for(;;){var -f=dt(a,b);if(9>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var -p=b+1|0;if(l!==b){var -b=p;continue}break}}return cK(j)}return a}function -Ju(b,c){switch(b){case -1:var -a=IG;break;case -2:var -a=IH;break;case -4:var -a=IJ;break;case -5:var -a=IK;break;case -6:var -a=IL;break;case -7:var -a=IM;break;case -8:var -a=IN;break;case -9:var -a=IO;break;case -10:var -a=IP;break;case -11:var -a=IQ;break;case -0:case -13:var -a=IF;break;case -3:case -14:var -a=II;break;default:var -a=IR}return ln(b,pf(a,c))}function -Jv(b,c){switch(b){case -1:var -a=I6;break;case -2:var -a=I7;break;case -4:var -a=I9;break;case -5:var -a=I_;break;case -6:var -a=I$;break;case -7:var -a=Ja;break;case -8:var -a=Jb;break;case -9:var -a=Jc;break;case -10:var -a=Jd;break;case -11:var -a=Je;break;case -0:case -13:var -a=I5;break;case -3:case -14:var -a=I8;break;default:var -a=Jf}return ln(b,pf(a,c))}function -Jw(b,c){switch(b){case -1:var -a=Jh;break;case -2:var -a=Ji;break;case -4:var -a=Jk;break;case -5:var -a=Jl;break;case -6:var -a=Jm;break;case -7:var -a=Jn;break;case -8:var -a=Jo;break;case -9:var -a=Jp;break;case -10:var -a=Jq;break;case -11:var -a=Jr;break;case -0:case -13:var -a=Jg;break;case -3:case -14:var -a=Jj;break;default:var -a=Js}return ln(b,pf(a,c))}function -Jx(b,c){switch(b){case -1:var -a=IT;break;case -2:var -a=IU;break;case -4:var -a=IW;break;case -5:var -a=IX;break;case -6:var -a=IY;break;case -7:var -a=IZ;break;case -8:var -a=I0;break;case -9:var -a=I1;break;case -10:var -a=I2;break;case -11:var -a=I3;break;case -0:case -13:var -a=IS;break;case -3:case -14:var -a=IV;break;default:var -a=I4}return ln(b,bzc(a,c))}function -e4(c,i,b){function -j(d){switch(c[1]){case -0:var -a=45;break;case -1:var -a=43;break;default:var -a=32}return by$(b,i,a)}function -q(c){var -a=pc(b);return 3===a?b<0.?Jz:JA:4<=a?JB:c}switch(c[2]){case -5:var -e=sF(ti(c,i),b),d=0,u=aH(e);for(;;){if(d===u)var -p=0;else{var -k=bA(e,d)-46|0,l=0;if(23>>0){if(55===k)l=1}else -if(21>>0)l=1;if(!l){var -d=d+1|0;continue}var -p=1}var -v=p?e:bS(e,Jy);return q(v)}case -6:return j(0);case -7:var -h=fq(j(0)),f=ds(h);if(0===f)var -o=h;else{var -m=bZ(f),n=f-1|0,r=0;if(!(n<0)){var -a=r;for(;;){var -g=k8(h,a),s=25>>0?g:g+At|0;bY(m,a,s);var -t=a+1|0;if(n!==a){var -a=t;continue}break}}var -o=m}return cK(o);case -8:return q(j(0));default:return sF(ti(c,i),b)}}function -j3(d,x,w,v){var -b=x,a=w,c=v;for(;;)if(typeof -c==="number")return r(b,a);else -switch(c[0]){case -0:var -y=c[1];return function(c){return a$(b,[5,a,c],y)};case -1:var -z=c[1];return function(c){var -e=0;if(40<=c)if(92===c)var -d=Hq;else -if(hv<=c)e=1;else -e=2;else -if(32<=c)if(39<=c)var -d=Hr;else -e=2;else -if(14<=c)e=1;else -switch(c){case -8:var -d=Hs;break;case -9:var -d=Ht;break;case -10:var -d=Hu;break;case -13:var -d=Hv;break;default:e=1}switch(e){case -1:var -f=bZ(4);bY(f,0,92);bY(f,1,48+(c/cd|0)|0);bY(f,2,48+((c/10|0)%10|0)|0);bY(f,3,48+(c%10|0)|0);var -d=cK(f);break;case -2:var -g=bZ(1);bY(g,0,c);var -d=cK(g);break}var -h=aH(d),i=gf(h+2|0,39);ef(d,0,i,1,h);return a$(b,[4,a,cK(i)],z)};case -2:var -A=c[2],B=c[1];return pH(b,a,A,B,function(a){return a});case -3:return pH(b,a,c[2],c[1],IE);case -4:return lo(b,a,c[4],c[2],c[3],Ju,c[1]);case -5:return lo(b,a,c[4],c[2],c[3],Jv,c[1]);case -6:return lo(b,a,c[4],c[2],c[3],Jw,c[1]);case -7:return lo(b,a,c[4],c[2],c[3],Jx,c[1]);case -8:var -g=c[4],h=c[3],i=c[2],f=c[1];if(typeof -i==="number"){if(typeof -h==="number")return h?function(d,c){return a$(b,[4,a,e4(f,d,c)],g)}:function(c){return a$(b,[4,a,e4(f,pF(f),c)],g)};var -S=h[1];return function(c){return a$(b,[4,a,e4(f,S,c)],g)}}else{if(0===i[0]){var -l=i[2],m=i[1];if(typeof -h==="number")return h?function(d,c){return a$(b,[4,a,dc(m,l,e4(f,d,c))],g)}:function(c){return a$(b,[4,a,dc(m,l,e4(f,pF(f),c))],g)};var -T=h[1];return function(c){return a$(b,[4,a,dc(m,l,e4(f,T,c))],g)}}var -n=i[1];if(typeof -h==="number")return h?function(e,d,c){return a$(b,[4,a,dc(n,e,e4(f,d,c))],g)}:function(d,c){return a$(b,[4,a,dc(n,d,e4(f,pF(f),c))],g)};var -U=h[1];return function(d,c){return a$(b,[4,a,dc(n,d,e4(f,U,c))],g)}}case -9:return pH(b,a,c[2],c[1],Hc);case -10:var -a=[7,a],c=c[1];continue;case -11:var -a=[2,a,c[1]],c=c[2];continue;case -12:var -a=[3,a,c[1]],c=c[2];continue;case -13:var -C=c[3],D=c[2],o=te(16);pG(o,D);var -u=tg(o);return function(c){return a$(b,[4,a,u],C)};case -14:var -E=c[3],F=c[2];return function(d){var -e=d[1],c=by(e,bM(b9(F)));if(typeof -c[2]==="number")return a$(b,a,bF(c[1],E));throw cm};case -15:var -G=c[1];return function(d,c){return a$(b,[6,a,function(a){return aq(d,a,c)}],G)};case -16:var -H=c[1];return function(c){return a$(b,[6,a,c],H)};case -17:var -a=[0,a,c[1]],c=c[2];continue;case -18:var -k=c[1];if(0===k[0]){var -I=c[2],J=k[1][1],K=0,b=function(b,c,d){return function(a){return a$(c,[1,b,[0,a]],d)}}(a,b,I),a=K,c=J;continue}var -L=c[2],M=k[1][1],N=0,b=function(b,c,d){return function(a){return a$(c,[1,b,[1,a]],d)}}(a,b,L),a=N,c=M;continue;case -19:throw[0,bp,JD];case -20:var -O=c[3],P=[8,a,JE];return function(a){return a$(b,P,O)};case -21:var -Q=c[2];return function(c){return a$(b,[4,a,pf(JF,c)],Q)};case -22:var -R=c[1];return function(c){return a$(b,[5,a,c],R)};case -23:var -e=c[2],j=c[1];if(typeof -j==="number")switch(j){case -0:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -1:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -2:throw[0,bp,JG];default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}else -switch(j[0]){case -0:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -1:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -2:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -3:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -4:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -5:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -6:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -7:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -8:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);case -9:var -t=j[2];return d<50?qz(d+1|0,b,a,t,e):cw(qz,[0,b,a,t,e]);case -10:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e]);default:return d<50?bt(d+1|0,b,a,e):cw(bt,[0,b,a,e])}default:var -p=c[3],q=c[1],s=r(c[2],0);return d<50?qy(d+1|0,b,a,p,q,s):cw(qy,[0,b,a,p,q,s])}}function -qz(e,d,c,a,b){if(typeof -a==="number")return e<50?bt(e+1|0,d,c,b):cw(bt,[0,d,c,b]);else -switch(a[0]){case -0:var -f=a[1];return function(a){return du(d,c,f,b)};case -1:var -g=a[1];return function(a){return du(d,c,g,b)};case -2:var -h=a[1];return function(a){return du(d,c,h,b)};case -3:var -i=a[1];return function(a){return du(d,c,i,b)};case -4:var -j=a[1];return function(a){return du(d,c,j,b)};case -5:var -k=a[1];return function(a){return du(d,c,k,b)};case -6:var -l=a[1];return function(a){return du(d,c,l,b)};case -7:var -m=a[1];return function(a){return du(d,c,m,b)};case -8:var -n=a[2];return function(a){return du(d,c,n,b)};case -9:var -o=a[3],p=a[2],q=ce(b9(a[1]),p);return function(a){return du(d,c,cM(q,o),b)};case -10:var -r=a[1];return function(e,a){return du(d,c,r,b)};case -11:var -s=a[1];return function(a){return du(d,c,s,b)};case -12:var -t=a[1];return function(a){return du(d,c,t,b)};case -13:throw[0,bp,JH];default:throw[0,bp,JI]}}function -bt(d,b,e,a){var -c=[8,e,JJ];return d<50?j3(d+1|0,b,c,a):cw(j3,[0,b,c,a])}function -qy(g,b,e,a,d,c){if(d){var -h=d[1];return function(d){return JC(b,e,a,h,r(c,d))}}var -f=[4,e,c];return g<50?j3(g+1|0,b,f,a):cw(j3,[0,b,f,a])}function -a$(a,b,c){return sT(j3(0,a,b,c))}function -du(a,b,c,d){return sT(qz(0,a,b,c,d))}function -JC(a,b,c,d,e){return sT(qy(0,a,b,c,d,e))}function -pH(e,d,c,a,b){if(typeof -a==="number")return function(a){return a$(e,[4,d,r(b,a)],c)};else{if(0===a[0]){var -f=a[2],g=a[1];return function(a){return a$(e,[4,d,dc(g,f,r(b,a))],c)}}var -h=a[1];return function(f,a){return a$(e,[4,d,dc(h,f,r(b,a))],c)}}}function -lo(f,e,d,g,c,b,a){if(typeof -g==="number"){if(typeof -c==="number")return c?function(g,c){return a$(f,[4,e,g5(g,aq(b,a,c))],d)}:function(c){return a$(f,[4,e,aq(b,a,c)],d)};var -k=c[1];return function(c){return a$(f,[4,e,g5(k,aq(b,a,c))],d)}}else{if(0===g[0]){var -h=g[2],i=g[1];if(typeof -c==="number")return c?function(g,c){return a$(f,[4,e,dc(i,h,g5(g,aq(b,a,c)))],d)}:function(c){return a$(f,[4,e,dc(i,h,aq(b,a,c))],d)};var -l=c[1];return function(c){return a$(f,[4,e,dc(i,h,g5(l,aq(b,a,c)))],d)}}var -j=g[1];if(typeof -c==="number")return c?function(h,g,c){return a$(f,[4,e,dc(j,h,g5(g,aq(b,a,c)))],d)}:function(g,c){return a$(f,[4,e,dc(j,g,aq(b,a,c))],d)};var -m=c[1];return function(g,c){return a$(f,[4,e,dc(j,g,g5(m,aq(b,a,c)))],d)}}}function -e5(b,e){var -a=e;for(;;)if(typeof -a==="number")return 0;else -switch(a[0]){case -0:var -f=a[1],g=th(a[2]);e5(b,f);return jE(b,g);case -1:var -c=a[2],d=a[1];if(0===c[0]){var -h=c[1];e5(b,d);jE(b,JK);var -a=h;continue}var -i=c[1];e5(b,d);jE(b,JL);var -a=i;continue;case -6:var -l=a[2];e5(b,a[1]);return r(l,b);case -7:e5(b,a[1]);return gW(b);case -8:var -m=a[2];e5(b,a[1]);return b0(m);case -2:case -4:var -j=a[2];e5(b,a[1]);return jE(b,j);default:var -k=a[2];e5(b,a[1]);return GQ(b,k)}}function -e6(b,f){var -a=f;for(;;)if(typeof -a==="number")return 0;else -switch(a[0]){case -0:var -g=a[1],h=th(a[2]);e6(b,g);return jL(b,h);case -1:var -d=a[2],e=a[1];if(0===d[0]){var -i=d[1];e6(b,e);jL(b,JM);var -a=i;continue}var -j=d[1];e6(b,e);jL(b,JN);var -a=j;continue;case -6:var -m=a[2];e6(b,a[1]);return jL(b,r(m,0));case -7:var -a=a[1];continue;case -8:var -n=a[2];e6(b,a[1]);return b0(n);case -2:case -4:var -k=a[2];e6(b,a[1]);return jL(b,k);default:var -l=a[2];e6(b,a[1]);var -c=b[2];if(b[3]<=c)pE(b,1);bY(b[1],c,l);b[2]=c+1|0;return 0}}function -JO(a){if(sS(a,JP))return JQ;var -d=aH(a);function -f(d){var -c=JR[1],b=lk(ey);return r(a$(function(a){e6(b,a);return aI(ll(b))},0,c),a)}function -g(e){var -b=e;for(;;){if(b===d)return b;var -c=bA(a,b);if(9!==c&&32!==c)return b;var -b=b+1|0;continue}}function -m(e,c){var -b=c;for(;;){if(b===d)return b;if(25>>0)return b;var -b=b+1|0;continue}}function -n(g,f){var -b=f;for(;;){if(b===d)return b;var -c=bA(a,b),e=0;if(48<=c){if(!(58<=c))e=1}else -if(45===c)e=1;if(e){var -b=b+1|0;continue}return b}}var -e=g(0),j=m(e,e),b=g1(a,e,j-e|0),c=g(j),h=n(c,c);if(c===h)var -i=0;else -try{var -p=pj(g1(a,c,h-c|0)),i=p}catch(a){a=o(a);if(a[1]!==lg)throw a;var -i=f(0)}if(g(h)!==d)f(0);var -l=0;if(M(b,JS)&&M(b,JT))var -k=M(b,JU)?M(b,JV)?M(b,JW)?M(b,JX)?f(0):1:2:3:0;else -l=1;if(l)var -k=4;return[0,i,k]}function -tj(d,c){var -a=c[1],b=0;return a$(function(a){e5(d,a);return 0},b,a)}function -jN(a){return tj(ei,a)}function -aJ(b){var -a=b[1];return a$(function(b){var -a=lk(64);e6(a,b);return ll(a)},0,a)}var -pI=[0,0];function -pK(h,g){var -a=h[1+g];if(1-(typeof -a==="number"?1:0)){if(ld(a)===kd)return r(aJ(JY),a);if(ld(a)===rn){var -c=sF(Hg,a),b=0,f=aH(c);for(;;){if(f<=b)return bS(c,Hf);var -d=bA(c,b),e=0;if(48<=d){if(!(58<=d))e=1}else -if(45===d)e=1;if(e){var -b=b+1|0;continue}return c}}return JZ}return r(aJ(J0),a)}function -tk(b,a){if(b.length-1<=a)return J1;var -c=tk(b,a+1|0),d=pK(b,a);return aq(aJ(J2),d,c)}function -pL(a){function -n(e){var -b=e;for(;;){if(b){var -f=b[2],g=b[1];try{var -d=0,c=r(g,a);d=1}catch(a){}if(d&&c)return[0,c[1]];var -b=f;continue}return 0}}var -g=n(pI[1]);if(g)return g[1];if(a===ps)return J7;if(a===s2)return J8;if(a[1]===s1){var -c=a[2],h=c[3],o=c[2],p=c[1];return lY(aJ(pJ),p,o,h,h+5|0,J9)}if(a[1]===bp){var -d=a[2],i=d[3],q=d[2],s=d[1];return lY(aJ(pJ),s,q,i,i+6|0,J_)}if(a[1]===s4){var -e=a[2],j=e[3],t=e[2],u=e[1];return lY(aJ(pJ),u,t,j,j+6|0,J$)}if(0===ld(a)){var -f=a.length-1,v=a[1][1];if(2>>0)var -k=tk(a,2),l=pK(a,1),b=aq(aJ(J3),l,k);else -switch(f){case -0:var -b=J4;break;case -1:var -b=J5;break;default:var -m=pK(a,1),b=r(aJ(J6),m)}return bS(v,b)}return a[1]}function -pM(t,s){var -d=byZ(s),f=d.length-1-1|0,o=0;if(!(f<0)){var -b=o;for(;;){var -a=aY(d,b)[1+b],e=function(a){return function(b){return b?0===a?Ka:Kb:0===a?Kc:Kd}}(b);if(0===a[0])var -g=a[5],h=a[4],i=a[3],j=a[6]?Ke:Kg,k=a[2],l=a[7],m=e(a[1]),c=[0,byO(aJ(Kf),m,l,k,j,i,h,g)];else -if(a[1])var -c=0;else -var -n=e(0),c=[0,r(aJ(Kh),n)];if(c){var -p=c[1];r(tj(t,Ki),p)}var -q=b+1|0;if(f!==b){var -b=q;continue}break}}return 0}function -tl(c){for(;;){var -a=pI[1],b=1-pr(pI,a,[0,c,a]);if(b)continue;return b}}var -Kk=Kj.slice();function -Kl(d,c){var -e=pL(d);r(jN(Km),e);pM(ei,c);var -a=bzq(0);if(a<0){var -b=ge(a);s8(aY(Kk,b)[1+b])}return gW(ei)}var -Kn=[0];sQ(a(Ej),function(d,h){try{try{var -b=h?Kn:GI(0);try{pv(0)}catch(a){}try{var -a=Kl(d,b),c=a}catch(a){a=o(a);var -f=pL(d);r(jN(Kp),f);pM(ei,b);var -g=pL(a);r(jN(Kq),g);pM(ei,GI(0));var -c=gW(ei)}var -e=c}catch(a){a=o(a);if(a!==ps)throw a;var -e=s8(Ko)}return e}catch(a){return 0}});function -lp(a){var -b=a.length-1<4?1:0,c=b||(a[4]<0?1:0);return c}function -e7(a){a[4]=-a[4]|0;return 0}try{var -byK=GX(byJ),tn=byK}catch(a){a=o(a);if(a!==cD)throw a;try{var -byI=GX(byH),tm=byI}catch(a){a=o(a);if(a!==cD)throw a;var -tm=Ks}var -tn=tm}pA(tn,82);var -lq=[mo,function(w){var -m=bzG(0),c=[0,e0(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){aY(c[1],b)[1+b]=b;var -v=b+1|0;if(54!==b){var -b=v;continue}var -g=[0,Kr],k=54+py(55,j)|0,r=0;if(!(k<0)){var -d=r;for(;;){var -e=d%55|0,l=bzu(d,j),s=aY(i,l)[1+l],h=bS(g[1],a(aa+s));g[1]=bzp(h,0,aH(h));var -f=g[1],n=bA(f,3)<<24,o=bA(f,2)<<16,p=bA(f,1)<<8,q=((bA(f,0)+p|0)+o|0)+n|0,t=(aY(c[1],e)[1+e]^q)≻aY(c[1],e)[1+e]=t;var -u=d+1|0;if(k!==d){var -d=u;continue}break}}c[2]=0;return c}}];function -to(a){var -c=0>>25|0)&31)|0)&sc,g=a[2];aY(a[1],g)[1+g]=f;var -i=f}else -var -i=0;return[0,0,e0(b,0),i,b]}}return[0,g,to,Kt,Kv,c,h,i,j,k,d,l,Kx,Kz,KA,Kw,KB,pN,KC,KD,m,e,function(b){var -a=g(16);e(a,b);return a}]}var -pO=[bm,KH,cZ(0)];function -KG(a){return by5(10,cd,0,a)}var -lr=0,tr=-1;function -jO(a,b){a[13]=a[13]+b[3]|0;return td(b,a[28])}var -ts=1000000010;function -pP(b,a){return cB(b[17],a,0,aH(a))}function -ls(a){return r(a[19],0)}function -tt(a,c,b){a[9]=a[9]-c|0;pP(a,b);a[11]=0;return 0}function -lt(c,a){var -b=M(a,KI);return b?tt(c,aH(a),a):b}function -gh(a,b,e){var -f=b[3],g=b[2];lt(a,b[1]);ls(a);a[11]=1;var -c=(a[6]-e|0)+g|0,d=a[8],h=d<=c?d:c;a[10]=h;a[9]=a[6]-a[10]|0;r(a[21],a[10]);return lt(a,f)}function -tu(b,a){return gh(b,KJ,a)}function -g6(a,b){var -c=b[2],d=b[3];lt(a,b[1]);a[9]=a[9]-c|0;r(a[20],c);return lt(a,d)}function -KK(a,i,b){if(typeof -b==="number")switch(b){case -0:var -s=g3(a[3]);if(s){var -t=s[1][1],u=function(b,a){if(a){var -c=a[1],d=a[2];return GN(b,c)?[0,b,a]:[0,c,u(b,d)]}return[0,b,0]};t[1]=u(a[6]-a[9]|0,t[1]);return 0}return 0;case -1:g2(a[2]);return 0;case -2:g2(a[3]);return 0;case -3:var -v=g3(a[2]);return v?tu(a,v[1][2]):ls(a);case -4:var -w=a[10]!==(a[6]-a[9]|0)?1:0;if(w){var -e=a[28],g=e[2];if(g){var -m=g[1];if(g[2]){var -J=g[2];e[1]=e[1]-1|0;e[2]=J;var -h=[0,m]}else{pD(e);var -h=[0,m]}}else -var -h=0;if(h){var -q=h[1],L=q[1];a[12]=a[12]-q[3]|0;a[9]=a[9]+L|0;return 0}return 0}return w;default:var -x=g2(a[5]);return x?pP(a,r(a[25],x[1])):0}else -switch(b[0]){case -0:return tt(a,i,b[1]);case -1:var -c=b[2],f=b[1],y=c[1],M=c[2],z=g3(a[2]);if(z){var -A=z[1],d=A[2];switch(A[1]){case -0:return g6(a,f);case -1:return gh(a,c,d);case -2:return gh(a,c,d);case -3:return a[9]<(i+aH(y)|0)?gh(a,c,d):g6(a,f);case -4:return a[11]?g6(a,f):a[9]<(i+aH(y)|0)?gh(a,c,d):((a[6]-d|0)+M|0)>>0))tu(a,p)}else -ls(a)}var -S=a[9]-R|0,T=1===H?1:a[9]>>0)throw pZ;switch(a){case -1:return b?29:28;case -3:case -5:case -8:case -10:return 30;default:return 31}}function -p1(a){try{var -b=1<=a[3]?1:0;if(b)var -d=lD(a[1]),e=lE(a[2],d),c=a[3]<=e?1:0;else -var -c=b;return c}catch(a){a=o(a);if(a===pZ)return 0;throw a}}function -tQ(d,c,b){var -a=[0,d,c,b];if(p1(a))return a;throw pZ}function -lF(f,e,d){var -b=f,a=d;for(;;){var -c=e+a|0;if(1<=c&&!(12>a===b?c:G6(b,a)}return G6(b,a)}function -tS(a){return typeof -a==="number"?a:bz6(a)}var -e8=0,lJ=1,Lp=-1;function -tT(a){return gZ(0,a,0,aH(a))}function -Lq(b,a){return gZ(b,a,0,aH(a))}function -p2(a){if(typeof -a==="number")return a;var -e=sW(a);if(63>g;f=1}if(!f)var -c=bz4(a,b);var -i=bzR(a,fu(c,b)),d=pq(c),h=i?d:bzj(d,Lr);return pl(pi(h),b)}return pi(pq(a))}function -g8(a,b){if(a!==0&&b!==1){var -c=bzU(a,b);if(c===1)return[0,a,b];var -d=tR(b,c);return[0,tR(a,c),d]}return[0,a,lJ]}function -tU(b,a){var -c=da(a);if(0===c)return[0,da(b),e8];if(0>>0))switch(b){case -0:return 2;case -1:break;default:return 1}return 3}return a[1]===0?0:4}function -p3(d,c){var -e=gj(d),b=gj(c),a=0;switch(e){case -1:var -j=b-1|0;if(!(2>>0))switch(j){case -0:a=2;break;case -1:break;default:a=1}break;case -2:if(1===b)a=1;else -if(b)switch(b-2|0){case -1:a=1;break;case -2:break;default:a=2}break;case -3:if(3!==b)return-1;a=2;break;default:a=1}var -k=0;switch(a){case -1:var -i=b-1|0;if(!(2>>0))switch(i){case -0:k=1;break;case -1:break;default:return 1}break;case -0:break;default:return 0}if(!k){var -g=0;if(!(4<=e))switch(e){case -0:break;case -2:g=1;break;default:g=2}var -h=0;switch(g){case -0:if(2!==b){if(f(d[2],c[2]))return eh(d[1],c[1]);var -l=cN(c[1],d[2]);return eh(cN(d[1],c[2]),l)}h=1;break;case -1:break;default:h=1}if(h)return 1}return-1}function -tX(a){var -b=a[2];return[0,gi(a[1]),b]}function -tY(c,a,b){if(a[2]===b[2]){var -d=a[2];return g8(aq(c,a[1],b[1]),d)}var -e=cN(a[2],b[2]),f=cN(b[1],a[2]);return g8(aq(c,cN(a[1],b[2]),f),e)}function -jS(b,a){if(b[2]!==0&&a[2]!==0){var -c=cN(b[2],a[2]);return g8(cN(b[1],a[1]),c)}return[0,gd(da(b[1]),da(a[1])),e8]}function -p4(b,a){if(0<=da(a[1]))return jS(b,[0,a[2],a[1]]);var -c=gi(a[1]);return jS(b,[0,gi(a[2]),c])}function -p5(a){switch(a){case -0:return 2;case -1:return 8;case -2:return 10;default:return 16}}function -p6(e,d,c,b){var -a=d;for(;;){if(c<=a)return 0;if(r(b,bA(e,a)))return[0,a];var -a=a+1|0;continue}}var -p7=[0,-1];function -Lu(a){if(M(a,Lv)){if(M(a,Lw)){if(!M(a,Lx))return lL;if(M(a,Ly)){if(M(a,Lz))try{var -k=HF(a,47),X=gZ(0,a,k+1|0,(aH(a)-k|0)-1|0),Y=tU(gZ(0,a,0,k),X);return Y}catch(k){k=o(k);if(k===cD){var -i=aH(a),x=0;if(i<1)var -s=[0,0,x];else{var -N=bA(a,0)+AJ|0,Q=0;if(!(2>>0)){var -R=0;switch(N){case -0:var -P=[0,0,1];break;case -1:R=1;break;default:var -P=[0,1,1]}if(!R){var -O=P;Q=1}}if(!Q)var -O=[0,0,x];var -s=O}var -c=s[2];if(i<(c+2|0))var -t=[0,2,c];else{var -W=bA(a,c),g=bA(a,c+1|0),r=0;if(48===W){var -h=0;if(89<=g){if(98===g)h=2;else -if(k3===g)h=1;else -if(dw!==g){r=1;h=3}}else -if(66===g)h=2;else -if(79===g)h=1;else -if(!(88<=g)){r=1;h=3}switch(h){case -3:break;case -0:var -q=[0,3,c+2|0];break;case -1:var -q=[0,1,c+2|0];break;default:var -q=[0,0,c+2|0]}}else -r=1;if(r)var -q=[0,2,c];var -t=q}var -d=t[2],b=t[1],S=2===b?function(a){if(69!==a&&fJ!==a)return 0;return 1}:3<=b?function(a){if(80!==a&&k2!==a)return 0;return 1}:function(a){return 0},y=p6(a,d,i,S);if(y)var -z=y[1],A=z+1|0,e=z,B=tS(gZ(10,a,A,i-A|0));else -var -e=i,B=0;if(2<=b){var -C=p6(a,d,e,function(a){return 46===a?1:0});if(C){var -u=C[1];if(2===b)var -D=1;else{if(!(3<=b))throw[0,bp,LB];var -D=4}var -F=u+1|0,G=e-1|0,E=0;if(G>>4|0));d3(h,g+5|0,t1(e&15));c[1]=a+1|0;break}}var -l=a+1|0;if(i!==a){var -a=l;continue}break}}LM(d,c,b);return bN(b,34)},t2=function(a,b){return d7(a,LV)},t3=function(b,a){var -c=a?LW:LX;return d7(b,c)},LY=s5(10,11),p$=function(c,b,a){if(0===a)return b;var -d=p$(c,b,a/10|0);d3(c,d,s_(ge(a%10|0)+48|0));return d+1|0},t4=function(a,b){p9(a,LY);if(0>>1|0;LC[1]++;continue}}(globalThis)); +(function(Object) + {typeof globalThis + !== + "object" + && + (this + ?get() + :(Object.defineProperty + (Object.prototype,"_T_",{configurable:true,get:get}), + _T_)); + function get() + {var global=this || self; + global.globalThis = global; + delete Object.prototype._T_}} + (Object)); +(function(globalThis) + {"use strict"; + var joo_global_object=globalThis; + function caml_int64_is_zero(x){return + x.isZero()} + function caml_str_repeat(n,s) + {if(n == 0)return ""; + if(s.repeat)return s.repeat(n); + var r="",l=0; + for(;;) + {if(n & 1)r += s; + n >>= 1; + if(n == 0)return r; + s += s; + l++; + if(l == 9)s.slice(0,1)}} + var caml_int64_offset=Math.pow(2,- 24); + function caml_raise_constant(tag){throw tag} + var caml_global_data=[0]; + function caml_raise_zero_divide() + {caml_raise_constant(caml_global_data.Division_by_zero)} + function MlInt64(lo,mi,hi) + {this.lo = lo & 0xffffff;this.mi = mi & 0xffffff;this.hi = hi & 0xffff} + MlInt64.prototype.caml_custom = "_j"; + MlInt64.prototype.copy + = + function(){return new MlInt64(this.lo,this.mi,this.hi)}; + MlInt64.prototype.ucompare + = + function(x) + {if(this.hi > x.hi)return 1; + if(this.hi < x.hi)return - 1; + if(this.mi > x.mi)return 1; + if(this.mi < x.mi)return - 1; + if(this.lo > x.lo)return 1; + if(this.lo < x.lo)return - 1; + return 0}; + MlInt64.prototype.compare + = + function(x) + {var hi=this.hi << 16,xhi=x.hi << 16; + if(hi > xhi)return 1; + if(hi < xhi)return - 1; + if(this.mi > x.mi)return 1; + if(this.mi < x.mi)return - 1; + if(this.lo > x.lo)return 1; + if(this.lo < x.lo)return - 1; + return 0}; + MlInt64.prototype.neg + = + function() + {var lo=- this.lo,mi=- this.mi + (lo >> 24),hi=- this.hi + (mi >> 24); + return new MlInt64(lo,mi,hi)}; + MlInt64.prototype.add + = + function(x) + {var + lo=this.lo + x.lo, + mi=this.mi + x.mi + (lo >> 24), + hi=this.hi + x.hi + (mi >> 24); + return new MlInt64(lo,mi,hi)}; + MlInt64.prototype.sub + = + function(x) + {var + lo=this.lo - x.lo, + mi=this.mi - x.mi + (lo >> 24), + hi=this.hi - x.hi + (mi >> 24); + return new MlInt64(lo,mi,hi)}; + MlInt64.prototype.mul + = + function(x) + {var + lo=this.lo * x.lo, + mi=(lo * caml_int64_offset | 0) + this.mi * x.lo + this.lo * x.mi, + hi= + (mi * caml_int64_offset | 0) + + + this.hi + * + x.lo + + + this.mi + * + x.mi + + + this.lo + * + x.hi; + return new MlInt64(lo,mi,hi)}; + MlInt64.prototype.isZero + = + function(){return (this.lo | this.mi | this.hi) == 0}; + MlInt64.prototype.isNeg = function(){return this.hi << 16 < 0}; + MlInt64.prototype.and + = + function(x) + {return new MlInt64(this.lo & x.lo,this.mi & x.mi,this.hi & x.hi)}; + MlInt64.prototype.or + = + function(x) + {return new MlInt64(this.lo | x.lo,this.mi | x.mi,this.hi | x.hi)}; + MlInt64.prototype.xor + = + function(x) + {return new MlInt64(this.lo ^ x.lo,this.mi ^ x.mi,this.hi ^ x.hi)}; + MlInt64.prototype.shift_left + = + function(s) + {s = s & 63; + if(s == 0)return this; + if(s < 24) + return new + MlInt64 + (this.lo << s, + this.mi << s | this.lo >> 24 - s, + this.hi << s | this.mi >> 24 - s); + if(s < 48) + return new + MlInt64 + (0,this.lo << s - 24,this.mi << s - 24 | this.lo >> 48 - s); + return new MlInt64(0,0,this.lo << s - 48)}; + MlInt64.prototype.shift_right_unsigned + = + function(s) + {s = s & 63; + if(s == 0)return this; + if(s < 24) + return new + MlInt64 + (this.lo >> s | this.mi << 24 - s, + this.mi >> s | this.hi << 24 - s, + this.hi >> s); + if(s < 48) + return new + MlInt64 + (this.mi >> s - 24 | this.hi << 48 - s,this.hi >> s - 24,0); + return new MlInt64(this.hi >> s - 48,0,0)}; + MlInt64.prototype.shift_right + = + function(s) + {s = s & 63; + if(s == 0)return this; + var h=this.hi << 16 >> 16; + if(s < 24) + return new + MlInt64 + (this.lo >> s | this.mi << 24 - s, + this.mi >> s | h << 24 - s, + this.hi << 16 >> s >>> 16); + var sign=this.hi << 16 >> 31; + if(s < 48) + return new + MlInt64 + (this.mi >> s - 24 | this.hi << 48 - s, + this.hi << 16 >> s - 24 >> 16, + sign & 0xffff); + return new MlInt64(this.hi << 16 >> s - 32,sign,sign)}; + MlInt64.prototype.lsl1 + = + function() + {this.hi = this.hi << 1 | this.mi >> 23; + this.mi = (this.mi << 1 | this.lo >> 23) & 0xffffff; + this.lo = this.lo << 1 & 0xffffff}; + MlInt64.prototype.lsr1 + = + function() + {this.lo = (this.lo >>> 1 | this.mi << 23) & 0xffffff; + this.mi = (this.mi >>> 1 | this.hi << 23) & 0xffffff; + this.hi = this.hi >>> 1}; + MlInt64.prototype.udivmod + = + function(x) + {var + offset=0, + modulus=this.copy(), + divisor=x.copy(), + quotient=new MlInt64(0,0,0); + while(modulus.ucompare(divisor) > 0){offset++;divisor.lsl1()} + while(offset >= 0) + {offset--; + quotient.lsl1(); + if(modulus.ucompare(divisor) >= 0) + {quotient.lo++;modulus = modulus.sub(divisor)} + divisor.lsr1()} + return {quotient:quotient,modulus:modulus}}; + MlInt64.prototype.div + = + function(y) + {var x=this; + if(y.isZero())caml_raise_zero_divide(); + var sign=x.hi ^ y.hi; + if(x.hi & 0x8000)x = x.neg(); + if(y.hi & 0x8000)y = y.neg(); + var q=x.udivmod(y).quotient; + if(sign & 0x8000)q = q.neg(); + return q}; + MlInt64.prototype.mod + = + function(y) + {var x=this; + if(y.isZero())caml_raise_zero_divide(); + var sign=x.hi; + if(x.hi & 0x8000)x = x.neg(); + if(y.hi & 0x8000)y = y.neg(); + var r=x.udivmod(y).modulus; + if(sign & 0x8000)r = r.neg(); + return r}; + MlInt64.prototype.toInt = function(){return this.lo | this.mi << 24}; + MlInt64.prototype.toFloat + = + function() + {return (this.hi << 16) + * + Math.pow(2,32) + + + this.mi + * + Math.pow(2,24) + + + this.lo}; + MlInt64.prototype.toArray + = + function() + {return [this.hi >> 8, + this.hi & 0xff, + this.mi >> 16, + this.mi >> 8 & 0xff, + this.mi & 0xff, + this.lo >> 16, + this.lo >> 8 & 0xff, + this.lo & 0xff]}; + MlInt64.prototype.lo32 + = + function(){return this.lo | (this.mi & 0xff) << 24}; + MlInt64.prototype.hi32 + = + function(){return this.mi >>> 8 & 0xffff | this.hi << 16}; + function caml_int64_of_int32(x) + {return new MlInt64(x & 0xffffff,x >> 24 & 0xffffff,x >> 31 & 0xffff)} + function caml_int64_to_int32(x){return x.toInt()} + function caml_int64_is_negative(x){return + x.isNeg()} + function caml_int64_neg(x){return x.neg()} + function caml_subarray_to_jsbytes(a,i,len) + {var f=String.fromCharCode; + if(i == 0 && len <= 4096 && len == a.length)return f.apply(null,a); + var s=""; + for(;0 < len;i += 1024,len -= 1024) + s += f.apply(null,a.slice(i,i + Math.min(len,1024))); + return s} + function caml_convert_string_to_bytes(s) + {if(s.t == 2) + s.c += caml_str_repeat(s.l - s.c.length,"\0"); + else + s.c = caml_subarray_to_jsbytes(s.c,0,s.c.length); + s.t = 0} + function caml_jsbytes_of_string(s) + {s.t & 6 && caml_convert_string_to_bytes(s);return s.c} + function caml_raise_with_arg(tag,arg){throw [0,tag,arg]} + function jsoo_is_ascii(s) + {if(s.length < 24) + {for(var i=0;i < s.length;i++)if(s.charCodeAt(i) > 127)return false; + return true} + else + return ! /[^\x00-\x7f]/.test(s)} + function caml_utf16_of_utf8(s) + {for(var b="",t="",c,c1,c2,v,i=0,l=s.length;i < l;i++) + {c1 = s.charCodeAt(i); + if(c1 < 0x80) + {for(var j=i + 1;j < l && (c1 = s.charCodeAt(j)) < 0x80;j++); + if(j - i > 512) + {t.substr(0,1);b += t;t = "";b += s.slice(i,j)} + else + t += s.slice(i,j); + if(j == l)break; + i = j} + v = 1; + if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128) + {c = c2 + (c1 << 6); + if(c1 < 0xe0) + {v = c - 0x3080;if(v < 0x80)v = 1} + else + {v = 2; + if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128) + {c = c2 + (c << 6); + if(c1 < 0xf0) + {v = c - 0xe2080; + if(v < 0x800 || v >= 0xd7ff && v < 0xe000)v = 2} + else + {v = 3; + if + (++i + < + l + && + ((c2 = s.charCodeAt(i)) & - 64) + == + 128 + && + c1 + < + 0xf5) + {v = c2 - 0x3c82080 + (c << 6); + if(v < 0x10000 || v > 0x10ffff)v = 3}}}}} + if(v < 4) + {i -= v;t += "\ufffd"} + else + if(v > 0xffff) + t += String.fromCharCode(0xd7c0 + (v >> 10),0xdc00 + (v & 0x3FF)); + else + t += String.fromCharCode(v); + if(t.length > 1024){t.substr(0,1);b += t;t = ""}} + return b + t} + function MlBytes(tag,contents,length) + {this.t = tag;this.c = contents;this.l = length} + MlBytes.prototype.toString + = + function() + {switch(this.t) + {case 9:return this.c; + default:caml_convert_string_to_bytes(this);case 0: + if(jsoo_is_ascii(this.c)){this.t = 9;return this.c}this.t = 8; + case 8:return this.c + }}; + MlBytes.prototype.toUtf16 + = + function() + {var r=this.toString(); + if(this.t == 9)return r; + return caml_utf16_of_utf8(r)}; + MlBytes.prototype.slice + = + function() + {var content=this.t == 4?this.c.slice():this.c; + return new MlBytes(this.t,content,this.l)}; + function caml_bytes_of_jsbytes(s){return new MlBytes(0,s,s.length)} + function caml_string_of_jsbytes(s){return caml_bytes_of_jsbytes(s)} + function caml_raise_with_string(tag,msg) + {caml_raise_with_arg(tag,caml_string_of_jsbytes(msg))} + function caml_invalid_argument(msg) + {caml_raise_with_string(caml_global_data.Invalid_argument,msg)} + function caml_parse_format(fmt) + {fmt = caml_jsbytes_of_string(fmt); + var len=fmt.length; + if(len > 31)caml_invalid_argument("format_int: format too long"); + var + f= + {justify:"+", + signstyle:"-", + filler:" ", + alternate:false, + base:0, + signedconv:false, + width:0, + uppercase:false, + sign:1, + prec:- 1, + conv:"f"}; + for(var i=0;i < len;i++) + {var c=fmt.charAt(i); + switch(c) + {case "-":f.justify = "-";break; + case "+": + case " ":f.signstyle = c;break; + case "0":f.filler = "0";break; + case "#":f.alternate = true;break; + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + f.width = 0; + while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9) + {f.width = f.width * 10 + c;i++} + i--; + break; + case ".": + f.prec = 0; + i++; + while(c = fmt.charCodeAt(i) - 48,c >= 0 && c <= 9) + {f.prec = f.prec * 10 + c;i++} + i--; + case "d": + case "i":f.signedconv = true; + case "u":f.base = 10;break; + case "x":f.base = 16;break; + case "X":f.base = 16;f.uppercase = true;break; + case "o":f.base = 8;break; + case "e": + case "f": + case "g":f.signedconv = true;f.conv = c;break; + case "E": + case "F": + case "G": + f.signedconv = true; + f.uppercase = true; + f.conv = c.toLowerCase(); + break + }} + return f} + function caml_finish_formatting(f,rawbuffer) + {if(f.uppercase)rawbuffer = rawbuffer.toUpperCase(); + var len=rawbuffer.length; + if(f.signedconv && (f.sign < 0 || f.signstyle != "-"))len++; + if(f.alternate){if(f.base == 8)len += 1;if(f.base == 16)len += 2} + var buffer=""; + if(f.justify == "+" && f.filler == " ") + for(var i=len;i < f.width;i++)buffer += " "; + if(f.signedconv) + if(f.sign < 0) + buffer += "-"; + else + if(f.signstyle != "-")buffer += f.signstyle; + if(f.alternate && f.base == 8)buffer += "0"; + if(f.alternate && f.base == 16)buffer += "0x"; + if(f.justify == "+" && f.filler == "0") + for(var i=len;i < f.width;i++)buffer += "0"; + buffer += rawbuffer; + if(f.justify == "-")for(var i=len;i < f.width;i++)buffer += " "; + return caml_string_of_jsbytes(buffer)} + function caml_int64_format(fmt,x) + {var f=caml_parse_format(fmt); + if(f.signedconv && caml_int64_is_negative(x)) + {f.sign = - 1;x = caml_int64_neg(x)} + var + buffer="", + wbase=caml_int64_of_int32(f.base), + cvtbl="0123456789abcdef"; + do + {var p=x.udivmod(wbase); + x = p.quotient; + buffer = cvtbl.charAt(caml_int64_to_int32(p.modulus)) + buffer} + while + (! caml_int64_is_zero(x)); + if(f.prec >= 0) + {f.filler = " "; + var n=f.prec - buffer.length; + if(n > 0)buffer = caml_str_repeat(n,"0") + buffer} + return caml_finish_formatting(f,buffer)} + function caml_expm1_float(x){return Math.expm1(x)} + function caml_jsstring_of_string(s){return s.toUtf16()} + function fs_node_supported() + {return typeof globalThis.process + !== + "undefined" + && + typeof globalThis.process.versions + !== + "undefined" + && + typeof globalThis.process.versions.node + !== + "undefined"} + function make_path_is_absolute() + {function posix(path) + {if(path.charAt(0) === "/")return ["",path.substring(1)];return} + function win32(path) + {var + splitDeviceRe= + /^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/, + result=splitDeviceRe.exec(path), + device=result[1] || "", + isUnc=Boolean(device && device.charAt(1) !== ":"); + if(Boolean(result[2] || isUnc)) + {var root=result[1] || "",sep=result[2] || ""; + return [root,path.substring(root.length + sep.length)]} + return} + return fs_node_supported() + && + globalThis.process + && + globalThis.process.platform + ?globalThis.process.platform === "win32"?win32:posix + :posix} + var path_is_absolute=make_path_is_absolute(); + function caml_trailing_slash(name) + {return name.slice(- 1) !== "/"?name + "/":name} + if(fs_node_supported() && globalThis.process && globalThis.process.cwd) + var caml_current_dir=globalThis.process.cwd().replace(/\\/g,"/"); + else + var caml_current_dir="/static"; + caml_current_dir = caml_trailing_slash(caml_current_dir); + function caml_make_path(name) + {name = caml_jsstring_of_string(name); + if(! path_is_absolute(name))name = caml_current_dir + name; + var comp0=path_is_absolute(name),comp=comp0[1].split("/"),ncomp=[]; + for(var i=0;i < comp.length;i++) + switch(comp[i]) + {case "..":if(ncomp.length > 1)ncomp.pop();break; + case ".":break; + default:ncomp.push(comp[i]);break} + ncomp.unshift(comp0[0]); + ncomp.orig = name; + return ncomp} + function caml_utf8_of_utf16(s) + {for(var b="",t=b,c,d,i=0,l=s.length;i < l;i++) + {c = s.charCodeAt(i); + if(c < 0x80) + {for(var j=i + 1;j < l && (c = s.charCodeAt(j)) < 0x80;j++); + if(j - i > 512) + {t.substr(0,1);b += t;t = "";b += s.slice(i,j)} + else + t += s.slice(i,j); + if(j == l)break; + i = j} + if(c < 0x800) + {t += String.fromCharCode(0xc0 | c >> 6); + t += String.fromCharCode(0x80 | c & 0x3f)} + else + if(c < 0xd800 || c >= 0xdfff) + t + += + String.fromCharCode + (0xe0 | c >> 12,0x80 | c >> 6 & 0x3f,0x80 | c & 0x3f); + else + if + (c + >= + 0xdbff + || + i + + + 1 + == + l + || + (d = s.charCodeAt(i + 1)) + < + 0xdc00 + || + d + > + 0xdfff) + t += "\xef\xbf\xbd"; + else + {i++; + c = (c << 10) + d - 0x35fdc00; + t + += + String.fromCharCode + (0xf0 | c >> 18, + 0x80 | c >> 12 & 0x3f, + 0x80 | c >> 6 & 0x3f, + 0x80 | c & 0x3f)} + if(t.length > 1024){t.substr(0,1);b += t;t = ""}} + return b + t} + function caml_bytes_of_utf16_jsstring(s) + {var tag=9; + if(! jsoo_is_ascii(s))tag = 8,s = caml_utf8_of_utf16(s); + return new MlBytes(tag,s,s.length)} + function caml_string_of_jsstring(s) + {return caml_bytes_of_utf16_jsstring(s)} + var + unix_error= + ["E2BIG", + "EACCES", + "EAGAIN", + "EBADF", + "EBUSY", + "ECHILD", + "EDEADLK", + "EDOM", + "EEXIST", + "EFAULT", + "EFBIG", + "EINTR", + "EINVAL", + "EIO", + "EISDIR", + "EMFILE", + "EMLINK", + "ENAMETOOLONG", + "ENFILE", + "ENODEV", + "ENOENT", + "ENOEXEC", + "ENOLCK", + "ENOMEM", + "ENOSPC", + "ENOSYS", + "ENOTDIR", + "ENOTEMPTY", + "ENOTTY", + "ENXIO", + "EPERM", + "EPIPE", + "ERANGE", + "EROFS", + "ESPIPE", + "ESRCH", + "EXDEV", + "EWOULDBLOCK", + "EINPROGRESS", + "EALREADY", + "ENOTSOCK", + "EDESTADDRREQ", + "EMSGSIZE", + "EPROTOTYPE", + "ENOPROTOOPT", + "EPROTONOSUPPORT", + "ESOCKTNOSUPPORT", + "EOPNOTSUPP", + "EPFNOSUPPORT", + "EAFNOSUPPORT", + "EADDRINUSE", + "EADDRNOTAVAIL", + "ENETDOWN", + "ENETUNREACH", + "ENETRESET", + "ECONNABORTED", + "ECONNRESET", + "ENOBUFS", + "EISCONN", + "ENOTCONN", + "ESHUTDOWN", + "ETOOMANYREFS", + "ETIMEDOUT", + "ECONNREFUSED", + "EHOSTDOWN", + "EHOSTUNREACH", + "ELOOP", + "EOVERFLOW"]; + function make_unix_err_args(code,syscall,path,errno) + {var variant=unix_error.indexOf(code); + if(variant < 0){if(errno == null)errno = - 9999;variant = [0,errno]} + var + args= + [variant, + caml_string_of_jsstring(syscall || ""), + caml_string_of_jsstring(path || "")]; + return args} + var caml_named_values={}; + function caml_named_value(nm){return caml_named_values[nm]} + function caml_raise_with_args(tag,args){throw [0,tag].concat(args)} + function caml_is_ml_bytes(s){return s instanceof MlBytes} + function caml_is_ml_string(s){return caml_is_ml_bytes(s)} + function caml_bytes_of_array(a){return new MlBytes(4,a,a.length)} + function caml_bytes_of_string(s){return s} + function caml_raise_sys_error(msg) + {caml_raise_with_string(caml_global_data.Sys_error,msg)} + function caml_raise_no_such_file(name) + {caml_raise_sys_error(name + ": No such file or directory")} + function caml_bytes_bound_error() + {caml_invalid_argument("index out of bounds")} + function caml_bytes_unsafe_get(s,i) + {switch(s.t & 6) + {default:if(i >= s.c.length)return 0;case 0:return s.c.charCodeAt(i); + case 4:return s.c[i] + }} + function caml_bytes_get(s,i) + {if(i >>> 0 >= s.l)caml_bytes_bound_error(); + return caml_bytes_unsafe_get(s,i)} + function caml_create_bytes(len) + {if(len < 0)caml_invalid_argument("Bytes.create"); + return new MlBytes(len?2:9,"",len)} + function caml_ml_bytes_length(s){return s.l} + function caml_convert_bytes_to_array(s) + {if(globalThis.Uint8Array) + var a=new (globalThis.Uint8Array)(s.l); + else + var a=new Array(s.l); + var b=s.c,l=b.length,i=0; + for(;i < l;i++)a[i] = b.charCodeAt(i); + for(l = s.l;i < l;i++)a[i] = 0; + s.c = a; + s.t = 4; + return a} + function caml_blit_bytes(s1,i1,s2,i2,len) + {if(len == 0)return 0; + if(i2 == 0 && (len >= s2.l || s2.t == 2 && len >= s2.c.length)) + {s2.c + = + s1.t == 4 + ?caml_subarray_to_jsbytes(s1.c,i1,len) + :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len); + s2.t = s2.c.length == s2.l?0:2} + else + if(s2.t == 2 && i2 == s2.c.length) + {s2.c + += + s1.t == 4 + ?caml_subarray_to_jsbytes(s1.c,i1,len) + :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len); + s2.t = s2.c.length == s2.l?0:2} + else + {if(s2.t != 4)caml_convert_bytes_to_array(s2); + var c1=s1.c,c2=s2.c; + if(s1.t == 4) + if(i2 <= i1) + for(var i=0;i < len;i++)c2[i2 + i] = c1[i1 + i]; + else + for(var i=len - 1;i >= 0;i--)c2[i2 + i] = c1[i1 + i]; + else + {var l=Math.min(len,c1.length - i1); + for(var i=0;i < l;i++)c2[i2 + i] = c1.charCodeAt(i1 + i); + for(;i < len;i++)c2[i2 + i] = 0}} + return 0} + function caml_blit_string(a,b,c,d,e) + {caml_blit_bytes(caml_bytes_of_string(a),b,c,d,e);return 0} + function MlFile(){} + function MlFakeFile(content){this.data = content} + MlFakeFile.prototype = new MlFile(); + MlFakeFile.prototype.truncate + = + function(len) + {var old=this.data; + this.data = caml_create_bytes(len | 0); + caml_blit_bytes(old,0,this.data,0,len)}; + MlFakeFile.prototype.length + = + function(){return caml_ml_bytes_length(this.data)}; + MlFakeFile.prototype.write + = + function(offset,buf,pos,len) + {var clen=this.length(); + if(offset + len >= clen) + {var new_str=caml_create_bytes(offset + len),old_data=this.data; + this.data = new_str; + caml_blit_bytes(old_data,0,this.data,0,clen)} + caml_blit_string(buf,pos,this.data,offset,len); + return 0}; + MlFakeFile.prototype.read + = + function(offset,buf,pos,len) + {var clen=this.length(); + caml_blit_bytes(this.data,offset,buf,pos,len); + return 0}; + MlFakeFile.prototype.read_one + = + function(offset){return caml_bytes_get(this.data,offset)}; + MlFakeFile.prototype.close = function(){}; + MlFakeFile.prototype.constructor = MlFakeFile; + function MlFakeDevice(root,f) + {this.content = {};this.root = root;this.lookupFun = f} + MlFakeDevice.prototype.nm = function(name){return this.root + name}; + MlFakeDevice.prototype.create_dir_if_needed + = + function(name) + {var comp=name.split("/"),res=""; + for(var i=0;i < comp.length - 1;i++) + {res += comp[i] + "/"; + if(this.content[res])continue; + this.content[res] = Symbol("directory")}}; + MlFakeDevice.prototype.slash + = + function(name){return /\/$/.test(name)?name:name + "/"}; + MlFakeDevice.prototype.lookup + = + function(name) + {if(! this.content[name] && this.lookupFun) + {var + res= + this.lookupFun + (caml_string_of_jsbytes(this.root),caml_string_of_jsbytes(name)); + if(res !== 0) + {this.create_dir_if_needed(name); + this.content[name] = new MlFakeFile(caml_bytes_of_string(res[1]))}}}; + MlFakeDevice.prototype.exists + = + function(name) + {if(name == "")return 1; + var name_slash=this.slash(name); + if(this.content[name_slash])return 1; + this.lookup(name); + return this.content[name]?1:0}; + MlFakeDevice.prototype.mkdir + = + function(name,mode,raise_unix) + {var unix_error=raise_unix && caml_named_value("Unix.Unix_error"); + if(this.exists(name)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("EEXIST","mkdir",this.nm(name))); + else + caml_raise_sys_error(name + ": File exists"); + var parent=/^(.*)\/[^/]+/.exec(name); + parent = parent && parent[1] || ""; + if(! this.exists(parent)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOENT","mkdir",this.nm(parent))); + else + caml_raise_sys_error(parent + ": No such file or directory"); + if(! this.is_dir(parent)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOTDIR","mkdir",this.nm(parent))); + else + caml_raise_sys_error(parent + ": Not a directory"); + this.create_dir_if_needed(this.slash(name))}; + MlFakeDevice.prototype.rmdir + = + function(name,raise_unix) + {var + unix_error=raise_unix && caml_named_value("Unix.Unix_error"), + name_slash=name == ""?"":this.slash(name), + r=new RegExp("^" + name_slash + "([^/]+)"); + if(! this.exists(name)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOENT","rmdir",this.nm(name))); + else + caml_raise_sys_error(name + ": No such file or directory"); + if(! this.is_dir(name)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOTDIR","rmdir",this.nm(name))); + else + caml_raise_sys_error(name + ": Not a directory"); + for(var n in this.content) + if(n.match(r)) + if(unix_error) + caml_raise_with_args + (unix_error,make_unix_err_args("ENOTEMPTY","rmdir",this.nm(name))); + else + caml_raise_sys_error(this.nm(name) + ": Directory not empty"); + delete this.content[name_slash]}; + MlFakeDevice.prototype.readdir + = + function(name) + {var name_slash=name == ""?"":this.slash(name); + if(! this.exists(name)) + caml_raise_sys_error(name + ": No such file or directory"); + if(! this.is_dir(name))caml_raise_sys_error(name + ": Not a directory"); + var r=new RegExp("^" + name_slash + "([^/]+)"),seen={},a=[]; + for(var n in this.content) + {var m=n.match(r); + if(m && ! seen[m[1]]){seen[m[1]] = true;a.push(m[1])}} + return a}; + MlFakeDevice.prototype.is_dir + = + function(name) + {if(name == "")return true; + var name_slash=this.slash(name); + return this.content[name_slash]?1:0}; + MlFakeDevice.prototype.unlink + = + function(name) + {var ok=this.content[name]?true:false; + delete this.content[name]; + return ok}; + MlFakeDevice.prototype.open + = + function(name,f) + {if(f.rdonly && f.wronly) + caml_raise_sys_error + (this.nm(name) + + + " : flags Open_rdonly and Open_wronly are not compatible"); + if(f.text && f.binary) + caml_raise_sys_error + (this.nm(name) + + + " : flags Open_text and Open_binary are not compatible"); + this.lookup(name); + if(this.content[name]) + {if(this.is_dir(name)) + caml_raise_sys_error(this.nm(name) + " : is a directory"); + if(f.create && f.excl) + caml_raise_sys_error(this.nm(name) + " : file already exists"); + var file=this.content[name]; + if(f.truncate)file.truncate(); + return file} + else + if(f.create) + {this.create_dir_if_needed(name); + this.content[name] = new MlFakeFile(caml_create_bytes(0)); + return this.content[name]} + else + caml_raise_no_such_file(this.nm(name))}; + MlFakeDevice.prototype.register + = + function(name,content) + {var file; + if(this.content[name]) + caml_raise_sys_error(this.nm(name) + " : file already exists"); + if(caml_is_ml_bytes(content))file = new MlFakeFile(content); + if(caml_is_ml_string(content)) + file = new MlFakeFile(caml_bytes_of_string(content)); + else + if(content instanceof Array) + file = new MlFakeFile(caml_bytes_of_array(content)); + else + if(typeof content === "string") + file = new MlFakeFile(caml_bytes_of_jsbytes(content)); + else + if(content.toString) + {var + bytes= + caml_bytes_of_string(caml_string_of_jsstring(content.toString())); + file = new MlFakeFile(bytes)} + if(file) + {this.create_dir_if_needed(name);this.content[name] = file} + else + caml_raise_sys_error + (this.nm(name) + " : registering file with invalid content type")}; + MlFakeDevice.prototype.constructor = MlFakeDevice; + function caml_ml_string_length(s){return caml_ml_bytes_length(s)} + function caml_string_unsafe_get(s,i){return caml_bytes_unsafe_get(s,i)} + function caml_array_of_string(s) + {var l=caml_ml_string_length(s),a=new Array(l),i=0; + for(;i < l;i++)a[i] = caml_string_unsafe_get(s,i); + return a} + function caml_array_of_bytes(s) + {if(s.t != 4)caml_convert_bytes_to_array(s);return s.c} + function caml_bytes_unsafe_set(s,i,c) + {c &= 0xff; + if(s.t != 4) + {if(i == s.c.length) + {s.c += String.fromCharCode(c);if(i + 1 == s.l)s.t = 0;return 0} + caml_convert_bytes_to_array(s)} + s.c[i] = c; + return 0} + function caml_bytes_set(s,i,c) + {if(i >>> 0 >= s.l)caml_bytes_bound_error(); + return caml_bytes_unsafe_set(s,i,c)} + function MlNodeFile(fd){this.fs = require("fs");this.fd = fd} + MlNodeFile.prototype = new MlFile(); + MlNodeFile.prototype.truncate + = + function(len) + {try + {this.fs.ftruncateSync(this.fd,len | 0)} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeFile.prototype.length + = + function() + {try + {return this.fs.fstatSync(this.fd).size} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeFile.prototype.write + = + function(offset,buf,buf_offset,len) + {var a=caml_array_of_string(buf); + if(! (a instanceof globalThis.Uint8Array)) + a = new (globalThis.Uint8Array)(a); + var buffer=globalThis.Buffer.from(a); + try + {this.fs.writeSync(this.fd,buffer,buf_offset,len,offset)} + catch(err){caml_raise_sys_error(err.toString())} + return 0}; + MlNodeFile.prototype.read + = + function(offset,buf,buf_offset,len) + {var a=caml_array_of_bytes(buf); + if(! (a instanceof globalThis.Uint8Array)) + a = new (globalThis.Uint8Array)(a); + var buffer=globalThis.Buffer.from(a); + try + {this.fs.readSync(this.fd,buffer,buf_offset,len,offset)} + catch(err){caml_raise_sys_error(err.toString())} + for(var i=0;i < len;i++) + caml_bytes_set(buf,buf_offset + i,buffer[buf_offset + i]); + return 0}; + MlNodeFile.prototype.read_one + = + function(offset) + {var a=new (globalThis.Uint8Array)(1),buffer=globalThis.Buffer.from(a); + try + {this.fs.readSync(this.fd,buffer,0,1,offset)} + catch(err){caml_raise_sys_error(err.toString())} + return buffer[0]}; + MlNodeFile.prototype.close + = + function() + {try + {this.fs.closeSync(this.fd)} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeFile.prototype.constructor = MlNodeFile; + function MlNodeDevice(root){this.fs = require("fs");this.root = root} + MlNodeDevice.prototype.nm = function(name){return this.root + name}; + MlNodeDevice.prototype.exists + = + function(name) + {try {return this.fs.existsSync(this.nm(name))?1:0}catch(err){return 0}}; + MlNodeDevice.prototype.mkdir + = + function(name,mode,raise_unix) + {try + {this.fs.mkdirSync(this.nm(name),{mode:mode});return 0} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.rmdir + = + function(name,raise_unix) + {try + {this.fs.rmdirSync(this.nm(name));return 0} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.readdir + = + function(name,raise_unix) + {try + {return this.fs.readdirSync(this.nm(name))} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.is_dir + = + function(name) + {try + {return this.fs.statSync(this.nm(name)).isDirectory()?1:0} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeDevice.prototype.unlink + = + function(name,raise_unix) + {try + {var b=this.fs.existsSync(this.nm(name))?1:0; + this.fs.unlinkSync(this.nm(name)); + return b} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.open + = + function(name,f,raise_unix) + {var consts=require("constants"),res=0; + for(var key in f) + switch(key) + {case "rdonly":res |= consts.O_RDONLY;break; + case "wronly":res |= consts.O_WRONLY;break; + case "append":res |= consts.O_WRONLY | consts.O_APPEND;break; + case "create":res |= consts.O_CREAT;break; + case "truncate":res |= consts.O_TRUNC;break; + case "excl":res |= consts.O_EXCL;break; + case "binary":res |= consts.O_BINARY;break; + case "text":res |= consts.O_TEXT;break; + case "nonblock":res |= consts.O_NONBLOCK;break + } + try + {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.rename + = + function(o,n,raise_unix) + {try + {this.fs.renameSync(this.nm(o),this.nm(n))} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.stat + = + function(name,raise_unix) + {try + {var js_stats=this.fs.statSync(this.nm(name)); + return this.stats_from_js(js_stats)} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.lstat + = + function(name,raise_unix) + {try + {var js_stats=this.fs.lstatSync(this.nm(name)); + return this.stats_from_js(js_stats)} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.symlink + = + function(to_dir,target,path,raise_unix) + {try + {this.fs.symlinkSync(this.nm(target),this.nm(path),to_dir?"dir":"file"); + return 0} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.readlink + = + function(name,raise_unix) + {try + {var link=this.fs.readlinkSync(this.nm(name),"utf8"); + return caml_string_of_jsstring(link)} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.raise_nodejs_error + = + function(err,raise_unix) + {var unix_error=caml_named_value("Unix.Unix_error"); + if(raise_unix && unix_error) + {var args=make_unix_err_args(err.code,err.syscall,err.path,err.errno); + caml_raise_with_args(unix_error,args)} + else + caml_raise_sys_error(err.toString())}; + MlNodeDevice.prototype.stats_from_js + = + function(js_stats) + {var file_kind; + if(js_stats.isFile()) + file_kind = 0; + else + if(js_stats.isDirectory()) + file_kind = 1; + else + if(js_stats.isCharacterDevice()) + file_kind = 2; + else + if(js_stats.isBlockDevice()) + file_kind = 3; + else + if(js_stats.isSymbolicLink()) + file_kind = 4; + else + if(js_stats.isFIFO()) + file_kind = 5; + else + if(js_stats.isSocket())file_kind = 6; + return [0, + js_stats.dev, + js_stats.ino, + file_kind, + js_stats.mode, + js_stats.nlink, + js_stats.uid, + js_stats.gid, + js_stats.rdev, + js_stats.size, + js_stats.atimeMs, + js_stats.mtimeMs, + js_stats.ctimeMs]}; + MlNodeDevice.prototype.constructor = MlNodeDevice; + function caml_get_root(path) + {var x=path_is_absolute(path);if(! x)return;return x[0] + "/"} + function caml_failwith(msg) + {if(! caml_global_data.Failure) + caml_global_data.Failure = [248,caml_string_of_jsbytes("Failure"),- 3]; + caml_raise_with_string(caml_global_data.Failure,msg)} + var + caml_root= + caml_get_root(caml_current_dir) + || + caml_failwith("unable to compute caml_root"), + jsoo_mount_point=[]; + if(fs_node_supported()) + jsoo_mount_point.push + ({path:caml_root,device:new MlNodeDevice(caml_root)}); + else + jsoo_mount_point.push + ({path:caml_root,device:new MlFakeDevice(caml_root)}); + jsoo_mount_point.push + ({path:"/static/",device:new MlFakeDevice("/static/")}); + function resolve_fs_device(name) + {var + path=caml_make_path(name), + name=path.join("/"), + name_slash=caml_trailing_slash(name), + res; + for(var i=0;i < jsoo_mount_point.length;i++) + {var m=jsoo_mount_point[i]; + if + (name_slash.search(m.path) + == + 0 + && + (! res || res.path.length < m.path.length)) + res + = + {path:m.path, + device:m.device, + rest:name.substring(m.path.length,name.length)}} + if(! res && fs_node_supported()) + {var root=caml_get_root(name); + if(root && root.match(/^[a-zA-Z]:\/$/)) + {var m={path:root,device:new MlNodeDevice(root)}; + jsoo_mount_point.push(m); + res + = + {path:m.path, + device:m.device, + rest:name.substring(m.path.length,name.length)}}} + if(res)return res; + caml_raise_sys_error("no device found for " + name_slash)} + function caml_sys_is_directory(name) + {var root=resolve_fs_device(name),a=root.device.is_dir(root.rest); + return a?1:0} + function caml_raise_not_found() + {caml_raise_constant(caml_global_data.Not_found)} + function caml_sys_getenv(name) + {var g=globalThis,n=caml_jsstring_of_string(name); + if(g.process && g.process.env && g.process.env[n] != undefined) + return caml_string_of_jsstring(g.process.env[n]); + if(globalThis.jsoo_static_env && globalThis.jsoo_static_env[n]) + return caml_string_of_jsstring(globalThis.jsoo_static_env[n]); + caml_raise_not_found()} + function shift_right_nat(nat1,ofs1,len1,nat2,ofs2,nbits) + {if(nbits == 0){nat2.data[ofs2] = 0;return 0} + var wrap=0; + for(var i=len1 - 1;i >= 0;i--) + {var a=nat1.data[ofs1 + i] >>> 0; + nat1.data[ofs1 + i] = a >>> nbits | wrap; + wrap = a << 32 - nbits} + nat2.data[ofs2] = wrap; + return 0} + var caml_gr_state; + function caml_gr_state_get() + {if(caml_gr_state)return caml_gr_state; + throw [0, + caml_named_value("Graphics.Graphic_failure"), + caml_string_of_jsbytes("Not initialized")]} + function caml_gr_point_color(x,y) + {var + s=caml_gr_state_get(), + im=s.context.getImageData(x,s.height - y,1,1), + d=im.data; + return (d[0] << 16) + (d[1] << 8) + d[2]} + var MlObjectTable; + if(typeof globalThis.WeakMap === "undefined") + MlObjectTable + = + function() + {function NaiveLookup(objs){this.objs = objs} + NaiveLookup.prototype.get + = + function(v) + {for(var i=0;i < this.objs.length;i++)if(this.objs[i] === v)return i}; + NaiveLookup.prototype.set = function(){}; + return function() + {this.objs = [];this.lookup = new NaiveLookup(this.objs)}} + (); + else + MlObjectTable + = + function(){this.objs = [];this.lookup = new (globalThis.WeakMap)()}; + MlObjectTable.prototype.store + = + function(v){this.lookup.set(v,this.objs.length);this.objs.push(v)}; + MlObjectTable.prototype.recall + = + function(v) + {var i=this.lookup.get(v); + return i === undefined?undefined:this.objs.length - i}; + function caml_sys_rename(o,n) + {var o_root=resolve_fs_device(o),n_root=resolve_fs_device(n); + if(o_root.device != n_root.device) + caml_failwith + ("caml_sys_rename: cannot move file between two filesystem"); + if(! o_root.device.rename) + caml_failwith("caml_sys_rename: no implemented"); + o_root.device.rename(o_root.rest,n_root.rest)} + function caml_log10_float(x){return Math.log10(x)} + function unix_unlink(name) + {var root=resolve_fs_device(name); + if(! root.device.unlink)caml_failwith("unix_unlink: not implemented"); + return root.device.unlink(root.rest,true)} + var caml_runtime_warnings=0; + function caml_ml_enable_runtime_warnings(bool) + {caml_runtime_warnings = bool;return 0} + function caml_classify_float(x) + {if(isFinite(x)) + {if(Math.abs(x) >= 2.2250738585072014e-308)return 0; + if(x != 0)return 1; + return 2} + return isNaN(x)?4:3} + function unix_rmdir(name) + {var root=resolve_fs_device(name); + if(! root.device.rmdir)caml_failwith("unix_rmdir: not implemented"); + return root.device.rmdir(root.rest,true)} + function caml_ml_refill_input(chan) + {var str=chan.refill(),str_len=caml_ml_string_length(str); + if(str_len == 0)chan.refill = null; + chan.file.write(chan.file.length(),str,0,str_len); + return str_len} + var caml_ml_channels=new Array(); + function caml_ml_may_refill_input(chanid) + {var chan=caml_ml_channels[chanid]; + if(chan.refill == null)return; + if(chan.file.length() != chan.offset)return; + caml_ml_refill_input(chan)} + function caml_array_bound_error() + {caml_invalid_argument("index out of bounds")} + function caml_ml_input_scan_line(chanid) + {var chan=caml_ml_channels[chanid]; + caml_ml_may_refill_input(chanid); + var p=chan.offset,len=chan.file.length(); + if(p >= len)return 0; + while(true) + {if(p >= len)return - (p - chan.offset); + if(chan.file.read_one(p) == 10)return p - chan.offset + 1; + p++}} + function caml_gc_minor(){return 0} + var + bigInt= + function(undefined) + {"use strict"; + var + BASE=1e7, + LOG_BASE=7, + MAX_INT=9007199254740992, + MAX_INT_ARR=smallToArray(MAX_INT), + DEFAULT_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyz", + BigInt=joo_global_object.BigInt, + supportsNativeBigInt=typeof BigInt === "function"; + function Integer(v,radix,alphabet,caseSensitive) + {if(typeof v === "undefined")return Integer[0]; + if(typeof radix !== "undefined") + return + radix === 10 && ! alphabet + ?parseValue(v) + :parseBase(v,radix,alphabet,caseSensitive); + return parseValue(v)} + function BigInteger(value,sign) + {this.value = value; + this.sign = sign; + this.isSmall = false; + this.caml_custom = "_z"} + BigInteger.prototype = Object.create(Integer.prototype); + function SmallInteger(value) + {this.value = value; + this.sign = value < 0; + this.isSmall = true; + this.caml_custom = "_z"} + SmallInteger.prototype = Object.create(Integer.prototype); + function NativeBigInt(value) + {this.value = value;this.caml_custom = "_z"} + NativeBigInt.prototype = Object.create(Integer.prototype); + function isPrecise(n){return - MAX_INT < n && n < MAX_INT} + function smallToArray(n) + {if(n < 1e7)return [n]; + if(n < 1e14)return [n % 1e7,Math.floor(n / 1e7)]; + return [n % 1e7,Math.floor(n / 1e7) % 1e7,Math.floor(n / 1e14)]} + function arrayToSmall(arr) + {trim(arr); + var length=arr.length; + if(length < 4 && compareAbs(arr,MAX_INT_ARR) < 0) + switch(length) + {case 0:return 0; + case 1:return arr[0]; + case 2:return arr[0] + arr[1] * BASE; + default:return arr[0] + (arr[1] + arr[2] * BASE) * BASE} + return arr} + function trim(v){var i=v.length;while(v[--i] === 0);v.length = i + 1} + function createArray(length) + {var x=new Array(length),i=- 1;while(++i < length)x[i] = 0;return x} + function truncate(n) + {if(n > 0)return Math.floor(n);return Math.ceil(n)} + function add(a,b) + {var + l_a=a.length, + l_b=b.length, + r=new Array(l_a), + carry=0, + base=BASE, + sum, + i; + for(i = 0;i < l_b;i++) + {sum = a[i] + b[i] + carry; + carry = sum >= base?1:0; + r[i] = sum - carry * base} + while(i < l_a) + {sum = a[i] + carry; + carry = sum === base?1:0; + r[i++] = sum - carry * base} + if(carry > 0)r.push(carry); + return r} + function addAny(a,b) + {if(a.length >= b.length)return add(a,b);return add(b,a)} + function addSmall(a,carry) + {var l=a.length,r=new Array(l),base=BASE,sum,i; + for(i = 0;i < l;i++) + {sum = a[i] - base + carry; + carry = Math.floor(sum / base); + r[i] = sum - carry * base; + carry += 1} + while(carry > 0) + {r[i++] = carry % base;carry = Math.floor(carry / base)} + return r} + BigInteger.prototype.add + = + function(v) + {var n=parseValue(v); + if(this.sign !== n.sign)return this.subtract(n.negate()); + var a=this.value,b=n.value; + if(n.isSmall) + return new BigInteger(addSmall(a,Math.abs(b)),this.sign); + return new BigInteger(addAny(a,b),this.sign)}; + BigInteger.prototype.plus = BigInteger.prototype.add; + SmallInteger.prototype.add + = + function(v) + {var n=parseValue(v),a=this.value; + if(a < 0 !== n.sign)return this.subtract(n.negate()); + var b=n.value; + if(n.isSmall) + {if(isPrecise(a + b))return new SmallInteger(a + b); + b = smallToArray(Math.abs(b))} + return new BigInteger(addSmall(b,Math.abs(a)),a < 0)}; + SmallInteger.prototype.plus = SmallInteger.prototype.add; + NativeBigInt.prototype.add + = + function(v) + {return new NativeBigInt(this.value + parseValue(v).value)}; + NativeBigInt.prototype.plus = NativeBigInt.prototype.add; + function subtract(a,b) + {var + a_l=a.length, + b_l=b.length, + r=new Array(a_l), + borrow=0, + base=BASE, + i, + difference; + for(i = 0;i < b_l;i++) + {difference = a[i] - borrow - b[i]; + if(difference < 0){difference += base;borrow = 1}else borrow = 0; + r[i] = difference} + for(i = b_l;i < a_l;i++) + {difference = a[i] - borrow; + if(difference < 0) + difference += base; + else + {r[i++] = difference;break} + r[i] = difference} + for(;i < a_l;i++)r[i] = a[i]; + trim(r); + return r} + function subtractAny(a,b,sign) + {var value; + if(compareAbs(a,b) >= 0) + value = subtract(a,b); + else + {value = subtract(b,a);sign = ! sign} + value = arrayToSmall(value); + if(typeof value === "number") + {if(sign)value = - value;return new SmallInteger(value)} + return new BigInteger(value,sign)} + function subtractSmall(a,b,sign) + {var l=a.length,r=new Array(l),carry=- b,base=BASE,i,difference; + for(i = 0;i < l;i++) + {difference = a[i] + carry; + carry = Math.floor(difference / base); + difference %= base; + r[i] = difference < 0?difference + base:difference} + r = arrayToSmall(r); + if(typeof r === "number") + {if(sign)r = - r;return new SmallInteger(r)} + return new BigInteger(r,sign)} + BigInteger.prototype.subtract + = + function(v) + {var n=parseValue(v); + if(this.sign !== n.sign)return this.add(n.negate()); + var a=this.value,b=n.value; + if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign); + return subtractAny(a,b,this.sign)}; + BigInteger.prototype.minus = BigInteger.prototype.subtract; + SmallInteger.prototype.subtract + = + function(v) + {var n=parseValue(v),a=this.value; + if(a < 0 !== n.sign)return this.add(n.negate()); + var b=n.value; + if(n.isSmall)return new SmallInteger(a - b); + return subtractSmall(b,Math.abs(a),a >= 0)}; + SmallInteger.prototype.minus = SmallInteger.prototype.subtract; + NativeBigInt.prototype.subtract + = + function(v) + {return new NativeBigInt(this.value - parseValue(v).value)}; + NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract; + BigInteger.prototype.negate + = + function(){return new BigInteger(this.value,! this.sign)}; + SmallInteger.prototype.negate + = + function() + {var sign=this.sign,small=new SmallInteger(- this.value); + small.sign = ! sign; + return small}; + NativeBigInt.prototype.negate + = + function(){return new NativeBigInt(- this.value)}; + BigInteger.prototype.abs + = + function(){return new BigInteger(this.value,false)}; + SmallInteger.prototype.abs + = + function(){return new SmallInteger(Math.abs(this.value))}; + NativeBigInt.prototype.abs + = + function() + {return new NativeBigInt(this.value >= 0?this.value:- this.value)}; + function multiplyLong(a,b) + {var + a_l=a.length, + b_l=b.length, + l=a_l + b_l, + r=createArray(l), + base=BASE, + product, + carry, + i, + a_i, + b_j; + for(i = 0;i < a_l;++i) + {a_i = a[i]; + for(var j=0;j < b_l;++j) + {b_j = b[j]; + product = a_i * b_j + r[i + j]; + carry = Math.floor(product / base); + r[i + j] = product - carry * base; + r[i + j + 1] += carry}} + trim(r); + return r} + function multiplySmall(a,b) + {var l=a.length,r=new Array(l),base=BASE,carry=0,product,i; + for(i = 0;i < l;i++) + {product = a[i] * b + carry; + carry = Math.floor(product / base); + r[i] = product - carry * base} + while(carry > 0) + {r[i++] = carry % base;carry = Math.floor(carry / base)} + return r} + function shiftLeft(x,n) + {var r=[];while(n-- > 0)r.push(0);return r.concat(x)} + function multiplyKaratsuba(x,y) + {var n=Math.max(x.length,y.length); + if(n <= 30)return multiplyLong(x,y); + n = Math.ceil(n / 2); + var + b=x.slice(n), + a=x.slice(0,n), + d=y.slice(n), + c=y.slice(0,n), + ac=multiplyKaratsuba(a,c), + bd=multiplyKaratsuba(b,d), + abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d)), + product= + addAny + (addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)), + shiftLeft(bd,2 * n)); + trim(product); + return product} + function useKaratsuba(l1,l2) + {return - (0.012 * l1) - 0.012 * l2 + 0.000015 * l1 * l2 > 0} + BigInteger.prototype.multiply + = + function(v) + {var + n=parseValue(v), + a=this.value, + b=n.value, + sign=this.sign !== n.sign, + abs; + if(n.isSmall) + {if(b === 0)return Integer[0]; + if(b === 1)return this; + if(b === - 1)return this.negate(); + abs = Math.abs(b); + if(abs < BASE)return new BigInteger(multiplySmall(a,abs),sign); + b = smallToArray(abs)} + if(useKaratsuba(a.length,b.length)) + return new BigInteger(multiplyKaratsuba(a,b),sign); + return new BigInteger(multiplyLong(a,b),sign)}; + BigInteger.prototype.times = BigInteger.prototype.multiply; + function multiplySmallAndArray(a,b,sign) + {if(a < BASE)return new BigInteger(multiplySmall(b,a),sign); + return new BigInteger(multiplyLong(b,smallToArray(a)),sign)} + SmallInteger.prototype._multiplyBySmall + = + function(a) + {if(isPrecise(a.value * this.value)) + return new SmallInteger(a.value * this.value); + return multiplySmallAndArray + (Math.abs(a.value), + smallToArray(Math.abs(this.value)), + this.sign !== a.sign)}; + BigInteger.prototype._multiplyBySmall + = + function(a) + {if(a.value === 0)return Integer[0]; + if(a.value === 1)return this; + if(a.value === - 1)return this.negate(); + return multiplySmallAndArray + (Math.abs(a.value),this.value,this.sign !== a.sign)}; + SmallInteger.prototype.multiply + = + function(v){return parseValue(v)._multiplyBySmall(this)}; + SmallInteger.prototype.times = SmallInteger.prototype.multiply; + NativeBigInt.prototype.multiply + = + function(v) + {return new NativeBigInt(this.value * parseValue(v).value)}; + NativeBigInt.prototype.times = NativeBigInt.prototype.multiply; + function square(a) + {var + l=a.length, + r=createArray(l + l), + base=BASE, + product, + carry, + i, + a_i, + a_j; + for(i = 0;i < l;i++) + {a_i = a[i]; + carry = 0 - a_i * a_i; + for(var j=i;j < l;j++) + {a_j = a[j]; + product = 2 * (a_i * a_j) + r[i + j] + carry; + carry = Math.floor(product / base); + r[i + j] = product - carry * base} + r[i + l] = carry} + trim(r); + return r} + BigInteger.prototype.square + = + function(){return new BigInteger(square(this.value),false)}; + SmallInteger.prototype.square + = + function() + {var value=this.value * this.value; + if(isPrecise(value))return new SmallInteger(value); + return new + BigInteger + (square(smallToArray(Math.abs(this.value))),false)}; + NativeBigInt.prototype.square + = + function(v){return new NativeBigInt(this.value * this.value)}; + function divMod1(a,b) + {var + a_l=a.length, + b_l=b.length, + base=BASE, + result=createArray(b.length), + divisorMostSignificantDigit=b[b_l - 1], + lambda=Math.ceil(base / (2 * divisorMostSignificantDigit)), + remainder=multiplySmall(a,lambda), + divisor=multiplySmall(b,lambda), + quotientDigit, + shift, + carry, + borrow, + i, + l, + q; + if(remainder.length <= a_l)remainder.push(0); + divisor.push(0); + divisorMostSignificantDigit = divisor[b_l - 1]; + for(shift = a_l - b_l;shift >= 0;shift--) + {quotientDigit = base - 1; + if(remainder[shift + b_l] !== divisorMostSignificantDigit) + quotientDigit + = + Math.floor + ((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) + / + divisorMostSignificantDigit); + carry = 0; + borrow = 0; + l = divisor.length; + for(i = 0;i < l;i++) + {carry += quotientDigit * divisor[i]; + q = Math.floor(carry / base); + borrow += remainder[shift + i] - (carry - q * base); + carry = q; + if(borrow < 0) + {remainder[shift + i] = borrow + base;borrow = - 1} + else + {remainder[shift + i] = borrow;borrow = 0}} + while(borrow !== 0) + {quotientDigit -= 1; + carry = 0; + for(i = 0;i < l;i++) + {carry += remainder[shift + i] - base + divisor[i]; + if(carry < 0) + {remainder[shift + i] = carry + base;carry = 0} + else + {remainder[shift + i] = carry;carry = 1}} + borrow += carry} + result[shift] = quotientDigit} + remainder = divModSmall(remainder,lambda)[0]; + return [arrayToSmall(result),arrayToSmall(remainder)]} + function divMod2(a,b) + {var + a_l=a.length, + b_l=b.length, + result=[], + part=[], + base=BASE, + guess, + xlen, + highx, + highy, + check; + while(a_l) + {part.unshift(a[--a_l]); + trim(part); + if(compareAbs(part,b) < 0){result.push(0);continue} + xlen = part.length; + highx = part[xlen - 1] * base + part[xlen - 2]; + highy = b[b_l - 1] * base + b[b_l - 2]; + if(xlen > b_l)highx = (highx + 1) * base; + guess = Math.ceil(highx / highy); + do + {check = multiplySmall(b,guess); + if(compareAbs(check,part) <= 0)break; + guess--} + while + (guess); + result.push(guess); + part = subtract(part,check)} + result.reverse(); + return [arrayToSmall(result),arrayToSmall(part)]} + function divModSmall(value,lambda) + {var + length=value.length, + quotient=createArray(length), + base=BASE, + i, + q, + remainder, + divisor; + remainder = 0; + for(i = length - 1;i >= 0;--i) + {divisor = remainder * base + value[i]; + q = truncate(divisor / lambda); + remainder = divisor - q * lambda; + quotient[i] = q | 0} + return [quotient,remainder | 0]} + function divModAny(self,v) + {var value,n=parseValue(v); + if(supportsNativeBigInt) + return [new NativeBigInt(self.value / n.value), + new NativeBigInt(self.value % n.value)]; + var a=self.value,b=n.value,quotient; + if(b === 0)throw new Error("Cannot divide by zero"); + if(self.isSmall) + {if(n.isSmall) + return [new SmallInteger(truncate(a / b)), + new SmallInteger(a % b)]; + return [Integer[0],self]} + if(n.isSmall) + {if(b === 1)return [self,Integer[0]]; + if(b == - 1)return [self.negate(),Integer[0]]; + var abs=Math.abs(b); + if(abs < BASE) + {value = divModSmall(a,abs); + quotient = arrayToSmall(value[0]); + var remainder=value[1]; + if(self.sign)remainder = - remainder; + if(typeof quotient === "number") + {if(self.sign !== n.sign)quotient = - quotient; + return [new SmallInteger(quotient), + new SmallInteger(remainder)]} + return [new BigInteger(quotient,self.sign !== n.sign), + new SmallInteger(remainder)]} + b = smallToArray(abs)} + var comparison=compareAbs(a,b); + if(comparison === - 1)return [Integer[0],self]; + if(comparison === 0) + return [Integer[self.sign === n.sign?1:- 1],Integer[0]]; + if(a.length + b.length <= 200) + value = divMod1(a,b); + else + value = divMod2(a,b); + quotient = value[0]; + var qSign=self.sign !== n.sign,mod=value[1],mSign=self.sign; + if(typeof quotient === "number") + {if(qSign)quotient = - quotient; + quotient = new SmallInteger(quotient)} + else + quotient = new BigInteger(quotient,qSign); + if(typeof mod === "number") + {if(mSign)mod = - mod;mod = new SmallInteger(mod)} + else + mod = new BigInteger(mod,mSign); + return [quotient,mod]} + BigInteger.prototype.divmod + = + function(v) + {var result=divModAny(this,v); + return {quotient:result[0],remainder:result[1]}}; + NativeBigInt.prototype.divmod + = + SmallInteger.prototype.divmod + = + BigInteger.prototype.divmod; + BigInteger.prototype.divide + = + function(v){return divModAny(this,v)[0]}; + NativeBigInt.prototype.over + = + NativeBigInt.prototype.divide + = + function(v) + {return new NativeBigInt(this.value / parseValue(v).value)}; + SmallInteger.prototype.over + = + SmallInteger.prototype.divide + = + BigInteger.prototype.over + = + BigInteger.prototype.divide; + BigInteger.prototype.mod = function(v){return divModAny(this,v)[1]}; + NativeBigInt.prototype.mod + = + NativeBigInt.prototype.remainder + = + function(v) + {return new NativeBigInt(this.value % parseValue(v).value)}; + SmallInteger.prototype.remainder + = + SmallInteger.prototype.mod + = + BigInteger.prototype.remainder + = + BigInteger.prototype.mod; + BigInteger.prototype.pow + = + function(v) + {var n=parseValue(v),a=this.value,b=n.value,value,x,y; + if(b === 0)return Integer[1]; + if(a === 0)return Integer[0]; + if(a === 1)return Integer[1]; + if(a === - 1)return n.isEven()?Integer[1]:Integer[- 1]; + if(n.sign)return Integer[0]; + if(! n.isSmall) + throw new Error("The exponent " + n.toString() + " is too large."); + if(this.isSmall) + if(isPrecise(value = Math.pow(a,b))) + return new SmallInteger(truncate(value)); + x = this; + y = Integer[1]; + while(true) + {if(b & 1 === 1){y = y.times(x);--b} + if(b === 0)break; + b /= 2; + x = x.square()} + return y}; + SmallInteger.prototype.pow = BigInteger.prototype.pow; + NativeBigInt.prototype.pow + = + function(v) + {var + n=parseValue(v), + a=this.value, + b=n.value, + _0=BigInt(0), + _1=BigInt(1), + _2=BigInt(2); + if(b === _0)return Integer[1]; + if(a === _0)return Integer[0]; + if(a === _1)return Integer[1]; + if(a === BigInt(- 1))return n.isEven()?Integer[1]:Integer[- 1]; + if(n.isNegative())return new NativeBigInt(_0); + var x=this,y=Integer[1]; + while(true) + {if((b & _1) === _1){y = y.times(x);--b} + if(b === _0)break; + b /= _2; + x = x.square()} + return y}; + BigInteger.prototype.modPow + = + function(exp,mod) + {exp = parseValue(exp); + mod = parseValue(mod); + if(mod.isZero()) + throw new Error("Cannot take modPow with modulus 0"); + var r=Integer[1],base=this.mod(mod); + if(exp.isNegative()) + {exp = exp.multiply(Integer[- 1]);base = base.modInv(mod)} + while(exp.isPositive()) + {if(base.isZero())return Integer[0]; + if(exp.isOdd())r = r.multiply(base).mod(mod); + exp = exp.divide(2); + base = base.square().mod(mod)} + return r}; + NativeBigInt.prototype.modPow + = + SmallInteger.prototype.modPow + = + BigInteger.prototype.modPow; + function compareAbs(a,b) + {if(a.length !== b.length)return a.length > b.length?1:- 1; + for(var i=a.length - 1;i >= 0;i--) + if(a[i] !== b[i])return a[i] > b[i]?1:- 1; + return 0} + BigInteger.prototype.compareAbs + = + function(v) + {var n=parseValue(v),a=this.value,b=n.value; + if(n.isSmall)return 1; + return compareAbs(a,b)}; + SmallInteger.prototype.compareAbs + = + function(v) + {var n=parseValue(v),a=Math.abs(this.value),b=n.value; + if(n.isSmall){b = Math.abs(b);return a === b?0:a > b?1:- 1} + return - 1}; + NativeBigInt.prototype.compareAbs + = + function(v) + {var a=this.value,b=parseValue(v).value; + a = a >= 0?a:- a; + b = b >= 0?b:- b; + return a === b?0:a > b?1:- 1}; + BigInteger.prototype.compare + = + function(v) + {if(v === Infinity)return - 1; + if(v === - Infinity)return 1; + var n=parseValue(v),a=this.value,b=n.value; + if(this.sign !== n.sign)return n.sign?1:- 1; + if(n.isSmall)return this.sign?- 1:1; + return compareAbs(a,b) * (this.sign?- 1:1)}; + BigInteger.prototype.compareTo = BigInteger.prototype.compare; + SmallInteger.prototype.compare + = + function(v) + {if(v === Infinity)return - 1; + if(v === - Infinity)return 1; + var n=parseValue(v),a=this.value,b=n.value; + if(n.isSmall)return a == b?0:a > b?1:- 1; + if(a < 0 !== n.sign)return a < 0?- 1:1; + return a < 0?1:- 1}; + SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; + NativeBigInt.prototype.compare + = + function(v) + {if(v === Infinity)return - 1; + if(v === - Infinity)return 1; + var a=this.value,b=parseValue(v).value; + return a === b?0:a > b?1:- 1}; + NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare; + BigInteger.prototype.equals + = + function(v){return this.compare(v) === 0}; + NativeBigInt.prototype.eq + = + NativeBigInt.prototype.equals + = + SmallInteger.prototype.eq + = + SmallInteger.prototype.equals + = + BigInteger.prototype.eq + = + BigInteger.prototype.equals; + BigInteger.prototype.notEquals + = + function(v){return this.compare(v) !== 0}; + NativeBigInt.prototype.neq + = + NativeBigInt.prototype.notEquals + = + SmallInteger.prototype.neq + = + SmallInteger.prototype.notEquals + = + BigInteger.prototype.neq + = + BigInteger.prototype.notEquals; + BigInteger.prototype.greater + = + function(v){return this.compare(v) > 0}; + NativeBigInt.prototype.gt + = + NativeBigInt.prototype.greater + = + SmallInteger.prototype.gt + = + SmallInteger.prototype.greater + = + BigInteger.prototype.gt + = + BigInteger.prototype.greater; + BigInteger.prototype.lesser + = + function(v){return this.compare(v) < 0}; + NativeBigInt.prototype.lt + = + NativeBigInt.prototype.lesser + = + SmallInteger.prototype.lt + = + SmallInteger.prototype.lesser + = + BigInteger.prototype.lt + = + BigInteger.prototype.lesser; + BigInteger.prototype.greaterOrEquals + = + function(v){return this.compare(v) >= 0}; + NativeBigInt.prototype.geq + = + NativeBigInt.prototype.greaterOrEquals + = + SmallInteger.prototype.geq + = + SmallInteger.prototype.greaterOrEquals + = + BigInteger.prototype.geq + = + BigInteger.prototype.greaterOrEquals; + BigInteger.prototype.lesserOrEquals + = + function(v){return this.compare(v) <= 0}; + NativeBigInt.prototype.leq + = + NativeBigInt.prototype.lesserOrEquals + = + SmallInteger.prototype.leq + = + SmallInteger.prototype.lesserOrEquals + = + BigInteger.prototype.leq + = + BigInteger.prototype.lesserOrEquals; + BigInteger.prototype.isEven + = + function(){return (this.value[0] & 1) === 0}; + SmallInteger.prototype.isEven + = + function(){return (this.value & 1) === 0}; + NativeBigInt.prototype.isEven + = + function(){return (this.value & BigInt(1)) === BigInt(0)}; + BigInteger.prototype.isOdd + = + function(){return (this.value[0] & 1) === 1}; + SmallInteger.prototype.isOdd + = + function(){return (this.value & 1) === 1}; + NativeBigInt.prototype.isOdd + = + function(){return (this.value & BigInt(1)) === BigInt(1)}; + BigInteger.prototype.isPositive = function(){return ! this.sign}; + SmallInteger.prototype.isPositive + = + function(){return this.value > 0}; + NativeBigInt.prototype.isPositive + = + SmallInteger.prototype.isPositive; + BigInteger.prototype.isNegative = function(){return this.sign}; + SmallInteger.prototype.isNegative + = + function(){return this.value < 0}; + NativeBigInt.prototype.isNegative + = + SmallInteger.prototype.isNegative; + BigInteger.prototype.isUnit = function(){return false}; + SmallInteger.prototype.isUnit + = + function(){return Math.abs(this.value) === 1}; + NativeBigInt.prototype.isUnit + = + function(){return this.abs().value === BigInt(1)}; + BigInteger.prototype.isZero = function(){return false}; + SmallInteger.prototype.isZero = function(){return this.value === 0}; + NativeBigInt.prototype.isZero + = + function(){return this.value === BigInt(0)}; + BigInteger.prototype.isDivisibleBy + = + function(v) + {var n=parseValue(v); + if(n.isZero())return false; + if(n.isUnit())return true; + if(n.compareAbs(2) === 0)return this.isEven(); + return this.mod(n).isZero()}; + NativeBigInt.prototype.isDivisibleBy + = + SmallInteger.prototype.isDivisibleBy + = + BigInteger.prototype.isDivisibleBy; + function isBasicPrime(v) + {var n=v.abs(); + if(n.isUnit())return false; + if(n.equals(2) || n.equals(3) || n.equals(5))return true; + if(n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) + return false; + if(n.lesser(49))return true} + function millerRabinTest(n,a) + {var nPrev=n.prev(),b=nPrev,r=0,d,t,i,x; + while(b.isEven())b = b.divide(2),r++; + next: + for(i = 0;i < a.length;i++) + {if(n.lesser(a[i]))continue; + x = bigInt(a[i]).modPow(b,n); + if(x.isUnit() || x.equals(nPrev))continue; + for(d = r - 1;d != 0;d--) + {x = x.square().mod(n); + if(x.isUnit())return false; + if(x.equals(nPrev))continue next} + return false} + return true} + BigInteger.prototype.isPrime + = + function(strict) + {var isPrime=isBasicPrime(this); + if(isPrime !== undefined)return isPrime; + var n=this.abs(),bits=n.bitLength(); + if(bits <= 64) + return millerRabinTest(n,[2,3,5,7,11,13,17,19,23,29,31,37]); + var + logN=Math.log(2) * bits.toJSNumber(), + t=Math.ceil(strict === true?2 * Math.pow(logN,2):logN); + for(var a=[],i=0;i < t;i++)a.push(bigInt(i + 2)); + return millerRabinTest(n,a)}; + NativeBigInt.prototype.isPrime + = + SmallInteger.prototype.isPrime + = + BigInteger.prototype.isPrime; + BigInteger.prototype.isProbablePrime + = + function(iterations) + {var isPrime=isBasicPrime(this); + if(isPrime !== undefined)return isPrime; + var n=this.abs(),t=iterations === undefined?5:iterations; + for(var a=[],i=0;i < t;i++) + a.push(bigInt.randBetween(2,n.minus(2))); + return millerRabinTest(n,a)}; + NativeBigInt.prototype.isProbablePrime + = + SmallInteger.prototype.isProbablePrime + = + BigInteger.prototype.isProbablePrime; + BigInteger.prototype.modInv + = + function(n) + {var + t=bigInt.zero, + newT=bigInt.one, + r=parseValue(n), + newR=this.abs(), + q, + lastT, + lastR; + while(! newR.isZero()) + {q = r.divide(newR); + lastT = t; + lastR = r; + t = newT; + r = newR; + newT = lastT.subtract(q.multiply(newT)); + newR = lastR.subtract(q.multiply(newR))} + if(! r.isUnit()) + throw new + Error + (this.toString() + + + " and " + + + n.toString() + + + " are not co-prime"); + if(t.compare(0) === - 1)t = t.add(n); + if(this.isNegative())return t.negate(); + return t}; + NativeBigInt.prototype.modInv + = + SmallInteger.prototype.modInv + = + BigInteger.prototype.modInv; + BigInteger.prototype.next + = + function() + {var value=this.value; + if(this.sign)return subtractSmall(value,1,this.sign); + return new BigInteger(addSmall(value,1),this.sign)}; + SmallInteger.prototype.next + = + function() + {var value=this.value; + if(value + 1 < MAX_INT)return new SmallInteger(value + 1); + return new BigInteger(MAX_INT_ARR,false)}; + NativeBigInt.prototype.next + = + function(){return new NativeBigInt(this.value + BigInt(1))}; + BigInteger.prototype.prev + = + function() + {var value=this.value; + if(this.sign)return new BigInteger(addSmall(value,1),true); + return subtractSmall(value,1,this.sign)}; + SmallInteger.prototype.prev + = + function() + {var value=this.value; + if(value - 1 > - MAX_INT)return new SmallInteger(value - 1); + return new BigInteger(MAX_INT_ARR,true)}; + NativeBigInt.prototype.prev + = + function(){return new NativeBigInt(this.value - BigInt(1))}; + var powersOfTwo=[1]; + while(2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) + powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); + var + powers2Length=powersOfTwo.length, + highestPower2=powersOfTwo[powers2Length - 1]; + function shift_isSmall(n){return Math.abs(n) <= BASE} + BigInteger.prototype.shiftLeft + = + function(v) + {var n=parseValue(v).toJSNumber(); + if(! shift_isSmall(n)) + throw new Error(String(n) + " is too large for shifting."); + if(n < 0)return this.shiftRight(- n); + var result=this; + if(result.isZero())return result; + while(n >= powers2Length) + {result = result.multiply(highestPower2);n -= powers2Length - 1} + return result.multiply(powersOfTwo[n])}; + NativeBigInt.prototype.shiftLeft + = + SmallInteger.prototype.shiftLeft + = + BigInteger.prototype.shiftLeft; + BigInteger.prototype.shiftRight + = + function(v) + {var remQuo,n=parseValue(v).toJSNumber(); + if(! shift_isSmall(n)) + throw new Error(String(n) + " is too large for shifting."); + if(n < 0)return this.shiftLeft(- n); + var result=this; + while(n >= powers2Length) + {if(result.isZero() || result.isNegative() && result.isUnit()) + return result; + remQuo = divModAny(result,highestPower2); + result = remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]; + n -= powers2Length - 1} + remQuo = divModAny(result,powersOfTwo[n]); + return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]}; + NativeBigInt.prototype.shiftRight + = + SmallInteger.prototype.shiftRight + = + BigInteger.prototype.shiftRight; + function bitwise(x,y,fn) + {y = parseValue(y); + var + xSign=x.isNegative(), + ySign=y.isNegative(), + xRem=xSign?x.not():x, + yRem=ySign?y.not():y, + xDigit=0, + yDigit=0, + xDivMod=null, + yDivMod=null, + result=[]; + while(! xRem.isZero() || ! yRem.isZero()) + {xDivMod = divModAny(xRem,highestPower2); + xDigit = xDivMod[1].toJSNumber(); + if(xSign)xDigit = highestPower2 - 1 - xDigit; + yDivMod = divModAny(yRem,highestPower2); + yDigit = yDivMod[1].toJSNumber(); + if(ySign)yDigit = highestPower2 - 1 - yDigit; + xRem = xDivMod[0]; + yRem = yDivMod[0]; + result.push(fn(xDigit,yDigit))} + var sum=fn(xSign?1:0,ySign?1:0) !== 0?bigInt(- 1):bigInt(0); + for(var i=result.length - 1;i >= 0;i -= 1) + sum = sum.multiply(highestPower2).add(bigInt(result[i])); + return sum} + BigInteger.prototype.not = function(){return this.negate().prev()}; + NativeBigInt.prototype.not + = + SmallInteger.prototype.not + = + BigInteger.prototype.not; + BigInteger.prototype.and + = + function(n){return bitwise(this,n,function(a,b){return a & b})}; + NativeBigInt.prototype.and + = + SmallInteger.prototype.and + = + BigInteger.prototype.and; + BigInteger.prototype.or + = + function(n){return bitwise(this,n,function(a,b){return a | b})}; + NativeBigInt.prototype.or + = + SmallInteger.prototype.or + = + BigInteger.prototype.or; + BigInteger.prototype.xor + = + function(n){return bitwise(this,n,function(a,b){return a ^ b})}; + NativeBigInt.prototype.xor + = + SmallInteger.prototype.xor + = + BigInteger.prototype.xor; + var + LOBMASK_I=1 << 30, + LOBMASK_BI=(BASE & - BASE) * (BASE & - BASE) | LOBMASK_I; + function roughLOB(n) + {var + v=n.value, + x= + typeof v === "number" + ?v | LOBMASK_I + :typeof v === "bigint" + ?v | BigInt(LOBMASK_I) + :v[0] + v[1] * BASE | LOBMASK_BI; + return x & - x} + function integerLogarithm(value,base) + {if(base.compareTo(value) <= 0) + {var + tmp=integerLogarithm(value,base.square(base)), + p=tmp.p, + e=tmp.e, + t=p.multiply(base); + return t.compareTo(value) <= 0?{p:t,e:e * 2 + 1}:{p:p,e:e * 2}} + return {p:bigInt(1),e:0}} + BigInteger.prototype.bitLength + = + function() + {var n=this; + if(n.compareTo(bigInt(0)) < 0)n = n.negate().subtract(bigInt(1)); + if(n.compareTo(bigInt(0)) === 0)return bigInt(0); + return bigInt(integerLogarithm(n,bigInt(2)).e).add(bigInt(1))}; + NativeBigInt.prototype.bitLength + = + SmallInteger.prototype.bitLength + = + BigInteger.prototype.bitLength; + function max(a,b) + {a = parseValue(a);b = parseValue(b);return a.greater(b)?a:b} + function min(a,b) + {a = parseValue(a);b = parseValue(b);return a.lesser(b)?a:b} + function gcd(a,b) + {a = parseValue(a).abs(); + b = parseValue(b).abs(); + if(a.equals(b))return a; + if(a.isZero())return b; + if(b.isZero())return a; + var c=Integer[1],d,t; + while(a.isEven() && b.isEven()) + {d = min(roughLOB(a),roughLOB(b)); + a = a.divide(d); + b = b.divide(d); + c = c.multiply(d)} + while(a.isEven())a = a.divide(roughLOB(a)); + do + {while(b.isEven())b = b.divide(roughLOB(b)); + if(a.greater(b)){t = b;b = a;a = t} + b = b.subtract(a)} + while + (! b.isZero()); + return c.isUnit()?a:a.multiply(c)} + function lcm(a,b) + {a = parseValue(a).abs(); + b = parseValue(b).abs(); + return a.divide(gcd(a,b)).multiply(b)} + function randBetween(a,b) + {a = parseValue(a); + b = parseValue(b); + var low=min(a,b),high=max(a,b),range=high.subtract(low).add(1); + if(range.isSmall)return low.add(Math.floor(Math.random() * range)); + var digits=toBase(range,BASE).value,result=[],restricted=true; + for(var i=0;i < digits.length;i++) + {var + top=restricted?digits[i]:BASE, + digit=truncate(Math.random() * top); + result.push(digit); + if(digit < top)restricted = false} + return low.add(Integer.fromArray(result,BASE,false))} + function parseBase(text,base,alphabet,caseSensitive) + {alphabet = alphabet || DEFAULT_ALPHABET; + text = String(text); + if(! caseSensitive) + {text = text.toLowerCase();alphabet = alphabet.toLowerCase()} + var length=text.length,i,absBase=Math.abs(base),alphabetValues={}; + for(i = 0;i < alphabet.length;i++)alphabetValues[alphabet[i]] = i; + for(i = 0;i < length;i++) + {var c=text[i]; + if(c === "-")continue; + if(c in alphabetValues) + if(alphabetValues[c] >= absBase) + {if(c === "1" && absBase === 1)continue; + throw new + Error + (c + " is not a valid digit in base " + base + ".")}} + base = parseValue(base); + var digits=[],isNegative=text[0] === "-"; + for(i = isNegative?1:0;i < text.length;i++) + {var c=text[i]; + if(c in alphabetValues) + digits.push(parseValue(alphabetValues[c])); + else + if(c === "<") + {var start=i; + do i++;while(text[i] !== ">" && i < text.length); + digits.push(parseValue(text.slice(start + 1,i)))} + else + throw new Error(c + " is not a valid character")} + return parseBaseFromArray(digits,base,isNegative)} + function parseBaseFromArray(digits,base,isNegative) + {var val=Integer[0],pow=Integer[1],i; + for(i = digits.length - 1;i >= 0;i--) + {val = val.add(digits[i].times(pow));pow = pow.times(base)} + return isNegative?val.negate():val} + function stringify(digit,alphabet) + {alphabet = alphabet || DEFAULT_ALPHABET; + if(digit < alphabet.length)return alphabet[digit]; + return "<" + digit + ">"} + function toBase(n,base) + {base = bigInt(base); + if(base.isZero()) + {if(n.isZero())return {value:[0],isNegative:false}; + throw new Error("Cannot convert nonzero numbers to base 0.")} + if(base.equals(- 1)) + {if(n.isZero())return {value:[0],isNegative:false}; + if(n.isNegative()) + return {value: + [].concat.apply + ([], + Array.apply(null,Array(- n.toJSNumber())).map + (Array.prototype.valueOf,[1,0])), + isNegative:false}; + var + arr= + Array.apply(null,Array(n.toJSNumber() - 1)).map + (Array.prototype.valueOf,[0,1]); + arr.unshift([1]); + return {value:[].concat.apply([],arr),isNegative:false}} + var neg=false; + if(n.isNegative() && base.isPositive()){neg = true;n = n.abs()} + if(base.isUnit()) + {if(n.isZero())return {value:[0],isNegative:false}; + return {value: + Array.apply(null,Array(n.toJSNumber())).map + (Number.prototype.valueOf,1), + isNegative:neg}} + var out=[],left=n,divmod; + while(left.isNegative() || left.compareAbs(base) >= 0) + {divmod = left.divmod(base); + left = divmod.quotient; + var digit=divmod.remainder; + if(digit.isNegative()) + {digit = base.minus(digit).abs();left = left.next()} + out.push(digit.toJSNumber())} + out.push(left.toJSNumber()); + return {value:out.reverse(),isNegative:neg}} + function toBaseString(n,base,alphabet) + {var arr=toBase(n,base); + return (arr.isNegative?"-":"") + + + arr.value.map(function(x){return stringify(x,alphabet)}).join + ("")} + BigInteger.prototype.toArray + = + function(radix){return toBase(this,radix)}; + SmallInteger.prototype.toArray + = + function(radix){return toBase(this,radix)}; + NativeBigInt.prototype.toArray + = + function(radix){return toBase(this,radix)}; + BigInteger.prototype.toString + = + function(radix,alphabet) + {if(radix === undefined)radix = 10; + if(radix !== 10)return toBaseString(this,radix,alphabet); + var + v=this.value, + l=v.length, + str=String(v[--l]), + zeros="0000000", + digit; + while(--l >= 0) + {digit = String(v[l]);str += zeros.slice(digit.length) + digit} + var sign=this.sign?"-":""; + return sign + str}; + SmallInteger.prototype.toString + = + function(radix,alphabet) + {if(radix === undefined)radix = 10; + if(radix != 10)return toBaseString(this,radix,alphabet); + return String(this.value)}; + NativeBigInt.prototype.toString = SmallInteger.prototype.toString; + NativeBigInt.prototype.toJSON + = + BigInteger.prototype.toJSON + = + SmallInteger.prototype.toJSON + = + function(){return this.toString()}; + BigInteger.prototype.valueOf + = + function(){return parseInt(this.toString(),10)}; + BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; + SmallInteger.prototype.valueOf = function(){return this.value}; + SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; + NativeBigInt.prototype.valueOf + = + NativeBigInt.prototype.toJSNumber + = + function(){return parseInt(this.toString(),10)}; + function parseStringValue(v) + {if(isPrecise(+ v)) + {var x=+ v; + if(x === truncate(x)) + return supportsNativeBigInt + ?new NativeBigInt(BigInt(x)) + :new SmallInteger(x); + throw new Error("Invalid integer: " + v)} + var sign=v[0] === "-"; + if(sign)v = v.slice(1); + var split=v.split(/e/i); + if(split.length > 2) + throw new Error("Invalid integer: " + split.join("e")); + if(split.length === 2) + {var exp=split[1]; + if(exp[0] === "+")exp = exp.slice(1); + exp = + exp; + if(exp !== truncate(exp) || ! isPrecise(exp)) + throw new + Error + ("Invalid integer: " + exp + " is not a valid exponent."); + var text=split[0],decimalPlace=text.indexOf("."); + if(decimalPlace >= 0) + {exp -= text.length - decimalPlace - 1; + text + = + text.slice(0,decimalPlace) + + + text.slice(decimalPlace + 1)} + if(exp < 0) + throw new + Error + ("Cannot include negative exponent part for integers"); + text += new Array(exp + 1).join("0"); + v = text} + var isValid=/^([0-9][0-9]*)$/.test(v); + if(! isValid)throw new Error("Invalid integer: " + v); + if(supportsNativeBigInt) + return new NativeBigInt(BigInt(sign?"-" + v:v)); + var r=[],max=v.length,l=LOG_BASE,min=max - l; + while(max > 0) + {r.push(+ v.slice(min,max));min -= l;if(min < 0)min = 0;max -= l} + trim(r); + return new BigInteger(r,sign)} + function parseNumberValue(v) + {if(supportsNativeBigInt)return new NativeBigInt(BigInt(v)); + if(isPrecise(v)) + {if(v !== truncate(v))throw new Error(v + " is not an integer."); + return new SmallInteger(v)} + return parseStringValue(v.toString())} + function parseValue(v) + {if(typeof v === "number")return parseNumberValue(v); + if(typeof v === "string")return parseStringValue(v); + if(typeof v === "bigint")return new NativeBigInt(v); + return v} + for(var i=0;i < 1000;i++) + {Integer[i] = parseValue(i);if(i > 0)Integer[- i] = parseValue(- i)} + Integer.one = Integer[1]; + Integer.zero = Integer[0]; + Integer.minusOne = Integer[- 1]; + Integer.max = max; + Integer.min = min; + Integer.gcd = gcd; + Integer.lcm = lcm; + Integer.isInstance + = + function(x) + {return x instanceof BigInteger + || + x instanceof SmallInteger + || + x instanceof NativeBigInt}; + Integer.randBetween = randBetween; + Integer.fromArray + = + function(digits,base,isNegative) + {return parseBaseFromArray + (digits.map(parseValue),parseValue(base || 10),isNegative)}; + return Integer} + (); + function ml_z_normalize(x) + {var y=x.toJSNumber() | 0;if(x.equals(bigInt(y)))return y;return x} + function ml_z_pow(z1,i1) + {i1 = bigInt(i1); + if(i1.lt(bigInt(0))) + caml_invalid_argument("Z.pow: exponent must be nonnegative"); + return ml_z_normalize(bigInt(z1).pow(i1))} + function ml_z_root(z,i) + {var zero=bigInt(0),one=bigInt(1); + z = bigInt(z); + if(i % 2 === 0 && z.lt(zero)) + caml_invalid_argument("Z.root: even root of a negative number"); + if(z.equals(zero) || z.equals(one))return ml_z_normalize(z); + var start=zero,end=z,ans=null,two=bigInt(2); + while(start.leq(end)) + {var mid=start.add(end).divide(two),po=mid.pow(i); + if(po.equals(z)) + return ml_z_normalize(mid); + else + if(po.lt(z)){start = mid.next();ans = mid}else end = mid.prev()} + return ml_z_normalize(ans)} + function ml_z_rootrem(z,i) + {var zero=bigInt(0),one=bigInt(1); + z = bigInt(z); + if(i % 2 === 0 && z.lt(zero)) + caml_invalid_argument("Z.rootrem: even root of a negative number"); + if(z.equals(zero) || z.equals(one))return [0,ml_z_normalize(z),zero]; + var start=zero,end=z,ans=null,two=bigInt(2); + while(start.leq(end)) + {var mid=start.add(end).divide(two),po=mid.pow(i); + if(po.equals(z)) + return [0,ml_z_normalize(mid),zero]; + else + if(po.lt(z)){start = mid.next();ans = mid}else end = mid.prev()} + return [0,ml_z_normalize(ans),ml_z_normalize(z.minus(ans.pow(i)))]} + function caml_int64_of_bytes(a) + {return new + MlInt64 + (a[7] << 0 | a[6] << 8 | a[5] << 16, + a[4] << 0 | a[3] << 8 | a[2] << 16, + a[1] << 0 | a[0] << 8)} + function caml_ba_uint8_get64(ba,i0) + {var ofs=ba.offset(i0); + if(ofs + 7 >= ba.data.length)caml_array_bound_error(); + var + b1=ba.get(ofs + 0), + b2=ba.get(ofs + 1), + b3=ba.get(ofs + 2), + b4=ba.get(ofs + 3), + b5=ba.get(ofs + 4), + b6=ba.get(ofs + 5), + b7=ba.get(ofs + 6), + b8=ba.get(ofs + 7); + return caml_int64_of_bytes([b8,b7,b6,b5,b4,b3,b2,b1])} + function caml_int64_to_bytes(x){return x.toArray()} + function caml_int64_marshal(writer,v,sizes) + {var b=caml_int64_to_bytes(v); + for(var i=0;i < 8;i++)writer.write(8,b[i]); + sizes[0] = 8; + sizes[1] = 8} + function caml_ba_num_dims(ba){return ba.dims.length} + function caml_return_exn_constant(tag){return tag} + function caml_wrap_exception(e) + {if(e instanceof Array)return e; + if + (globalThis.RangeError + && + e instanceof globalThis.RangeError + && + e.message + && + e.message.match(/maximum call stack/i)) + return caml_return_exn_constant(caml_global_data.Stack_overflow); + if + (globalThis.InternalError + && + e instanceof globalThis.InternalError + && + e.message + && + e.message.match(/too much recursion/i)) + return caml_return_exn_constant(caml_global_data.Stack_overflow); + if(e instanceof globalThis.Error && caml_named_value("jsError")) + return [0,caml_named_value("jsError"),e]; + return [0,caml_global_data.Failure,caml_string_of_jsstring(String(e))]} + function caml_create_file(name,content) + {var root=resolve_fs_device(name); + if(! root.device.register)caml_failwith("cannot register file"); + root.device.register(root.rest,content); + return 0} + function jsoo_create_file(name,content) + {var + name=caml_string_of_jsbytes(name), + content=caml_string_of_jsbytes(content); + return caml_create_file(name,content)} + function caml_fs_init() + {var tmp=globalThis.caml_fs_tmp; + if(tmp) + for(var i=0;i < tmp.length;i++) + jsoo_create_file(tmp[i].name,tmp[i].content); + globalThis.jsoo_create_file = jsoo_create_file; + globalThis.caml_fs_tmp = []; + return 0} + function caml_set_parser_trace(){return 0} + function caml_list_of_js_array(a) + {var l=0; + for(var i=a.length - 1;i >= 0;i--){var e=a[i];l = [0,e,l]} + return l} + function unix_gettimeofday(){return new Date().getTime() / 1000} + function caml_mul(a,b){return Math.imul(a,b)} + function caml_hash_mix_int(h,d) + {d = caml_mul(d,0xcc9e2d51 | 0); + d = d << 15 | d >>> 32 - 15; + d = caml_mul(d,0x1b873593); + h ^= d; + h = h << 13 | h >>> 32 - 13; + return (h + (h << 2) | 0) + (0xe6546b64 | 0) | 0} + function num_digits_nat(nat,ofs,len) + {for(var i=len - 1;i >= 0;i--)if(nat.data[ofs + i] != 0)return i + 1; + return 1} + function caml_hash_nat(x) + {var len=num_digits_nat(x,0,x.data.length),h=0; + for(var i=0;i < len;i++)h = caml_hash_mix_int(h,x.data[i]); + return h} + function caml_call_gen(f,args) + {if(f.fun)return caml_call_gen(f.fun,args); + if(typeof f !== "function")return f; + var n=f.length | 0; + if(n === 0)return f.apply(null,args); + var argsLen=args.length | 0,d=n - argsLen | 0; + if(d == 0) + return f.apply(null,args); + else + if(d < 0) + return caml_call_gen(f.apply(null,args.slice(0,n)),args.slice(n)); + else + return function() + {var + extra_args=arguments.length == 0?1:arguments.length, + nargs=new Array(args.length + extra_args); + for(var i=0;i < args.length;i++)nargs[i] = args[i]; + for(var i=0;i < arguments.length;i++) + nargs[args.length + i] = arguments[i]; + return caml_call_gen(f,nargs)}} + function caml_js_wrap_callback_arguments(f) + {return function() + {var len=arguments.length,args=new Array(len); + for(var i=0;i < len;i++)args[i] = arguments[i]; + return caml_call_gen(f,[args])}} + function caml_sys_chdir(dir) + {var root=resolve_fs_device(dir); + if(root.device.exists(root.rest)) + {if(root.rest) + caml_current_dir = caml_trailing_slash(root.path + root.rest); + else + caml_current_dir = root.path; + return 0} + else + caml_raise_no_such_file(caml_jsbytes_of_string(dir))} + function caml_gc_counters(){return [254,0,0,0]} + function ml_z_div(z1,z2) + {z2 = bigInt(z2); + if(z2.equals(bigInt(0)))caml_raise_zero_divide(); + return ml_z_normalize(bigInt(z1).divide(bigInt(z2)))} + function ml_z_sign(z1){return bigInt(z1).compare(bigInt.zero)} + function ml_z_add(z1,z2) + {return ml_z_normalize(bigInt(z1).add(bigInt(z2)))} + function ml_z_cdiv(z1,z2) + {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2); + if(z1_pos * z2_pos > 0) + if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0))) + return ml_z_add(ml_z_div(z1,z2),bigInt(1)); + return ml_z_div(z1,z2)} + function caml_gr_synchronize() + {caml_failwith("caml_gr_synchronize not Implemented")} + function unix_has_symlink(unit){return fs_node_supported()?1:0} + var log2_ok=Math.log2 && Math.log2(1.1235582092889474E+307) == 1020; + function jsoo_floor_log2(x) + {if(log2_ok)return Math.floor(Math.log2(x)); + var i=0; + if(x == 0)return - Infinity; + if(x >= 1)while(x >= 2){x /= 2;i++}else while(x < 1){x *= 2;i--} + return i} + function caml_int32_bits_of_float(x) + {var float32a=new (globalThis.Float32Array)(1); + float32a[0] = x; + var int32a=new (globalThis.Int32Array)(float32a.buffer); + return int32a[0] | 0} + function caml_int64_create_lo_mi_hi(lo,mi,hi) + {return new MlInt64(lo,mi,hi)} + function caml_int64_bits_of_float(x) + {if(! isFinite(x)) + {if(isNaN(x))return caml_int64_create_lo_mi_hi(1,0,0x7ff0); + return x > 0 + ?caml_int64_create_lo_mi_hi(0,0,0x7ff0) + :caml_int64_create_lo_mi_hi(0,0,0xfff0)} + var sign=x == 0 && 1 / x == - Infinity?0x8000:x >= 0?0:0x8000; + if(sign)x = - x; + var exp=jsoo_floor_log2(x) + 1023; + if(exp <= 0) + {exp = 0;x /= Math.pow(2,- 1026)} + else + {x /= Math.pow(2,exp - 1027); + if(x < 16){x *= 2;exp -= 1} + if(exp == 0)x /= 2} + var k=Math.pow(2,24),r3=x | 0; + x = (x - r3) * k; + var r2=x | 0; + x = (x - r2) * k; + var r1=x | 0; + r3 = r3 & 0xf | sign | exp << 4; + return caml_int64_create_lo_mi_hi(r1,r2,r3)} + function caml_ba_serialize(writer,ba,sz) + {writer.write(32,ba.dims.length); + writer.write(32,ba.kind | ba.layout << 8); + if(ba.caml_custom == "_bigarr02") + for(var i=0;i < ba.dims.length;i++) + if(ba.dims[i] < 0xffff) + writer.write(16,ba.dims[i]); + else + {writer.write(16,0xffff); + writer.write(32,0); + writer.write(32,ba.dims[i])} + else + for(var i=0;i < ba.dims.length;i++)writer.write(32,ba.dims[i]); + switch(ba.kind) + {case 2: + case 3: + case 12: + for(var i=0;i < ba.data.length;i++)writer.write(8,ba.data[i]);break; + case 4: + case 5: + for(var i=0;i < ba.data.length;i++)writer.write(16,ba.data[i]);break; + case 6: + for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]);break; + case 8: + case 9: + writer.write(8,0); + for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]); + break; + case 7: + for(var i=0;i < ba.data.length / 2;i++) + {var b=caml_int64_to_bytes(ba.get(i)); + for(var j=0;j < 8;j++)writer.write(8,b[j])} + break; + case 1: + for(var i=0;i < ba.data.length;i++) + {var b=caml_int64_to_bytes(caml_int64_bits_of_float(ba.get(i))); + for(var j=0;j < 8;j++)writer.write(8,b[j])} + break; + case 0: + for(var i=0;i < ba.data.length;i++) + {var b=caml_int32_bits_of_float(ba.get(i));writer.write(32,b)} + break; + case 10: + for(var i=0;i < ba.data.length / 2;i++) + {var j=ba.get(i); + writer.write(32,caml_int32_bits_of_float(j[1])); + writer.write(32,caml_int32_bits_of_float(j[2]))} + break; + case 11: + for(var i=0;i < ba.data.length / 2;i++) + {var + complex=ba.get(i), + b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[1])); + for(var j=0;j < 8;j++)writer.write(8,b[j]); + var b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[2])); + for(var j=0;j < 8;j++)writer.write(8,b[j])} + break + } + sz[0] = (4 + ba.dims.length) * 4; + sz[1] = (4 + ba.dims.length) * 8} + function caml_ba_get_size_per_element(kind) + {switch(kind){case 7:case 10:case 11:return 2;default:return 1}} + function caml_ba_create_buffer(kind,size) + {var g=globalThis,view; + switch(kind) + {case 0:view = g.Float32Array;break; + case 1:view = g.Float64Array;break; + case 2:view = g.Int8Array;break; + case 3:view = g.Uint8Array;break; + case 4:view = g.Int16Array;break; + case 5:view = g.Uint16Array;break; + case 6:view = g.Int32Array;break; + case 7:view = g.Int32Array;break; + case 8:view = g.Int32Array;break; + case 9:view = g.Int32Array;break; + case 10:view = g.Float32Array;break; + case 11:view = g.Float64Array;break; + case 12:view = g.Uint8Array;break + } + if(! view)caml_invalid_argument("Bigarray.create: unsupported kind"); + var data=new view(size * caml_ba_get_size_per_element(kind)); + return data} + function caml_int32_float_of_bits(x) + {var int32a=new (globalThis.Int32Array)(1); + int32a[0] = x; + var float32a=new (globalThis.Float32Array)(int32a.buffer); + return float32a[0]} + function caml_int64_float_of_bits(x) + {var lo=x.lo,mi=x.mi,hi=x.hi,exp=(hi & 0x7fff) >> 4; + if(exp == 2047) + return (lo | mi | hi & 0xf) == 0?hi & 0x8000?- Infinity:Infinity:NaN; + var k=Math.pow(2,- 24),res=(lo * k + mi) * k + (hi & 0xf); + if(exp > 0) + {res += 16;res *= Math.pow(2,exp - 1027)} + else + res *= Math.pow(2,- 1026); + if(hi & 0x8000)res = - res; + return res} + function caml_ba_get_size(dims) + {var n_dims=dims.length,size=1; + for(var i=0;i < n_dims;i++) + {if(dims[i] < 0) + caml_invalid_argument("Bigarray.create: negative dimension"); + size = size * dims[i]} + return size} + function caml_int64_create_lo_hi(lo,hi) + {return new + MlInt64 + (lo & 0xffffff, + lo >>> 24 & 0xff | (hi & 0xffff) << 8, + hi >>> 16 & 0xffff)} + function caml_int64_hi32(v){return v.hi32()} + function caml_int64_lo32(v){return v.lo32()} + var caml_ba_custom_name="_bigarr02"; + function Ml_Bigarray(kind,layout,dims,buffer) + {this.kind = kind; + this.layout = layout; + this.dims = dims; + this.data = buffer} + Ml_Bigarray.prototype.caml_custom = caml_ba_custom_name; + Ml_Bigarray.prototype.offset + = + function(arg) + {var ofs=0; + if(typeof arg === "number")arg = [arg]; + if(! (arg instanceof Array)) + caml_invalid_argument("bigarray.js: invalid offset"); + if(this.dims.length != arg.length) + caml_invalid_argument("Bigarray.get/set: bad number of dimensions"); + if(this.layout == 0) + for(var i=0;i < this.dims.length;i++) + {if(arg[i] < 0 || arg[i] >= this.dims[i])caml_array_bound_error(); + ofs = ofs * this.dims[i] + arg[i]} + else + for(var i=this.dims.length - 1;i >= 0;i--) + {if(arg[i] < 1 || arg[i] > this.dims[i])caml_array_bound_error(); + ofs = ofs * this.dims[i] + (arg[i] - 1)} + return ofs}; + Ml_Bigarray.prototype.get + = + function(ofs) + {switch(this.kind) + {case 7: + var l=this.data[ofs * 2 + 0],h=this.data[ofs * 2 + 1]; + return caml_int64_create_lo_hi(l,h); + case 10: + case 11: + var r=this.data[ofs * 2 + 0],i=this.data[ofs * 2 + 1]; + return [254,r,i]; + default:return this.data[ofs]}}; + Ml_Bigarray.prototype.set + = + function(ofs,v) + {switch(this.kind) + {case 7: + this.data[ofs * 2 + 0] = caml_int64_lo32(v); + this.data[ofs * 2 + 1] = caml_int64_hi32(v); + break; + case 10: + case 11: + this.data[ofs * 2 + 0] = v[1];this.data[ofs * 2 + 1] = v[2];break; + default:this.data[ofs] = v;break} + return 0}; + Ml_Bigarray.prototype.fill + = + function(v) + {switch(this.kind) + {case 7: + var a=caml_int64_lo32(v),b=caml_int64_hi32(v); + if(a == b) + this.data.fill(a); + else + for(var i=0;i < this.data.length;i++)this.data[i] = i % 2 == 0?a:b; + break; + case 10: + case 11: + var im=v[1],re=v[2]; + if(im == re) + this.data.fill(im); + else + for(var i=0;i < this.data.length;i++) + this.data[i] = i % 2 == 0?im:re; + break; + default:this.data.fill(v);break}}; + Ml_Bigarray.prototype.compare + = + function(b,total) + {if(this.layout != b.layout || this.kind != b.kind) + {var k1=this.kind | this.layout << 8,k2=b.kind | b.layout << 8; + return k2 - k1} + if(this.dims.length != b.dims.length) + return b.dims.length - this.dims.length; + for(var i=0;i < this.dims.length;i++) + if(this.dims[i] != b.dims[i])return this.dims[i] < b.dims[i]?- 1:1; + switch(this.kind) + {case 0: + case 1: + case 10: + case 11: + var x,y; + for(var i=0;i < this.data.length;i++) + {x = this.data[i]; + y = b.data[i]; + if(x < y)return - 1; + if(x > y)return 1; + if(x != y) + {if(! total)return NaN;if(x == x)return 1;if(y == y)return - 1}} + break; + case 7: + for(var i=0;i < this.data.length;i += 2) + {if(this.data[i + 1] < b.data[i + 1])return - 1; + if(this.data[i + 1] > b.data[i + 1])return 1; + if(this.data[i] >>> 0 < b.data[i] >>> 0)return - 1; + if(this.data[i] >>> 0 > b.data[i] >>> 0)return 1} + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 8: + case 9: + case 12: + for(var i=0;i < this.data.length;i++) + {if(this.data[i] < b.data[i])return - 1; + if(this.data[i] > b.data[i])return 1} + break + } + return 0}; + function Ml_Bigarray_c_1_1(kind,layout,dims,buffer) + {this.kind = kind; + this.layout = layout; + this.dims = dims; + this.data = buffer} + Ml_Bigarray_c_1_1.prototype = new Ml_Bigarray(); + Ml_Bigarray_c_1_1.prototype.offset + = + function(arg) + {if(typeof arg !== "number") + if(arg instanceof Array && arg.length == 1) + arg = arg[0]; + else + caml_invalid_argument("Ml_Bigarray_c_1_1.offset"); + if(arg < 0 || arg >= this.dims[0])caml_array_bound_error(); + return arg}; + Ml_Bigarray_c_1_1.prototype.get = function(ofs){return this.data[ofs]}; + Ml_Bigarray_c_1_1.prototype.set + = + function(ofs,v){this.data[ofs] = v;return 0}; + Ml_Bigarray_c_1_1.prototype.fill + = + function(v){this.data.fill(v);return 0}; + function caml_ba_create_unsafe(kind,layout,dims,data) + {var size_per_element=caml_ba_get_size_per_element(kind); + if(caml_ba_get_size(dims) * size_per_element != data.length) + caml_invalid_argument("length doesn't match dims"); + if(layout == 0 && dims.length == 1 && size_per_element == 1) + return new Ml_Bigarray_c_1_1(kind,layout,dims,data); + return new Ml_Bigarray(kind,layout,dims,data)} + function caml_ba_deserialize(reader,sz,name) + {var num_dims=reader.read32s(); + if(num_dims < 0 || num_dims > 16) + caml_failwith("input_value: wrong number of bigarray dimensions"); + var tag=reader.read32s(),kind=tag & 0xff,layout=tag >> 8 & 1,dims=[]; + if(name == "_bigarr02") + for(var i=0;i < num_dims;i++) + {var size_dim=reader.read16u(); + if(size_dim == 0xffff) + {var size_dim_hi=reader.read32u(),size_dim_lo=reader.read32u(); + if(size_dim_hi != 0) + caml_failwith("input_value: bigarray dimension overflow in 32bit"); + size_dim = size_dim_lo} + dims.push(size_dim)} + else + for(var i=0;i < num_dims;i++)dims.push(reader.read32u()); + var + size=caml_ba_get_size(dims), + data=caml_ba_create_buffer(kind,size), + ba=caml_ba_create_unsafe(kind,layout,dims,data); + switch(kind) + {case 2:for(var i=0;i < size;i++)data[i] = reader.read8s();break; + case 3: + case 12:for(var i=0;i < size;i++)data[i] = reader.read8u();break; + case 4:for(var i=0;i < size;i++)data[i] = reader.read16s();break; + case 5:for(var i=0;i < size;i++)data[i] = reader.read16u();break; + case 6:for(var i=0;i < size;i++)data[i] = reader.read32s();break; + case 8: + case 9: + var sixty=reader.read8u(); + if(sixty) + caml_failwith + ("input_value: cannot read bigarray with 64-bit OCaml ints"); + for(var i=0;i < size;i++)data[i] = reader.read32s(); + break; + case 7: + var t=new Array(8); + for(var i=0;i < size;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + var int64=caml_int64_of_bytes(t); + ba.set(i,int64)} + break; + case 1: + var t=new Array(8); + for(var i=0;i < size;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + var f=caml_int64_float_of_bits(caml_int64_of_bytes(t)); + ba.set(i,f)} + break; + case 0: + for(var i=0;i < size;i++) + {var f=caml_int32_float_of_bits(reader.read32s());ba.set(i,f)} + break; + case 10: + for(var i=0;i < size;i++) + {var + re=caml_int32_float_of_bits(reader.read32s()), + im=caml_int32_float_of_bits(reader.read32s()); + ba.set(i,[254,re,im])} + break; + case 11: + var t=new Array(8); + for(var i=0;i < size;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + var re=caml_int64_float_of_bits(caml_int64_of_bytes(t)); + for(var j=0;j < 8;j++)t[j] = reader.read8u(); + var im=caml_int64_float_of_bits(caml_int64_of_bytes(t)); + ba.set(i,[254,re,im])} + break + } + sz[0] = (4 + num_dims) * 4; + return caml_ba_create_unsafe(kind,layout,dims,data)} + function caml_ba_compare(a,b,total){return a.compare(b,total)} + function caml_hash_mix_int64(h,v) + {h = caml_hash_mix_int(h,caml_int64_lo32(v)); + h = caml_hash_mix_int(h,caml_int64_hi32(v)); + return h} + function caml_hash_mix_float(h,v0) + {return caml_hash_mix_int64(h,caml_int64_bits_of_float(v0))} + function caml_ba_hash(ba) + {var num_elts=caml_ba_get_size(ba.dims),h=0; + switch(ba.kind) + {case 2: + case 3: + case 12: + if(num_elts > 256)num_elts = 256; + var w=0,i=0; + for(i = 0;i + 4 <= ba.data.length;i += 4) + {w + = + ba.data[i + 0] + | + ba.data[i + 1] + << + 8 + | + ba.data[i + 2] + << + 16 + | + ba.data[i + 3] + << + 24; + h = caml_hash_mix_int(h,w)} + w = 0; + switch(num_elts & 3) + {case 3:w = ba.data[i + 2] << 16; + case 2:w |= ba.data[i + 1] << 8; + case 1:w |= ba.data[i + 0];h = caml_hash_mix_int(h,w) + } + break; + case 4: + case 5: + if(num_elts > 128)num_elts = 128; + var w=0,i=0; + for(i = 0;i + 2 <= ba.data.length;i += 2) + {w = ba.data[i + 0] | ba.data[i + 1] << 16; + h = caml_hash_mix_int(h,w)} + if((num_elts & 1) != 0)h = caml_hash_mix_int(h,ba.data[i]); + break; + case 6: + if(num_elts > 64)num_elts = 64; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); + break; + case 8: + case 9: + if(num_elts > 64)num_elts = 64; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); + break; + case 7: + if(num_elts > 32)num_elts = 32; + num_elts *= 2; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]); + break; + case 10:num_elts *= 2; + case 0: + if(num_elts > 64)num_elts = 64; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]); + break; + case 11:num_elts *= 2; + case 1: + if(num_elts > 32)num_elts = 32; + for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]); + break + } + return h} + function caml_int32_unmarshal(reader,size) + {size[0] = 4;return reader.read32s()} + function caml_nativeint_unmarshal(reader,size) + {switch(reader.read8u()) + {case 1:size[0] = 4;return reader.read32s(); + case 2:caml_failwith("input_value: native integer value too large"); + default:caml_failwith("input_value: ill-formed native integer")}} + function caml_int64_unmarshal(reader,size) + {var t=new Array(8); + for(var j=0;j < 8;j++)t[j] = reader.read8u(); + size[0] = 8; + return caml_int64_of_bytes(t)} + function caml_int64_compare(x,y,total){return x.compare(y)} + function caml_int64_hash(v){return v.lo32() ^ v.hi32()} + var + caml_custom_ops= + {"_j": + {deserialize:caml_int64_unmarshal, + serialize:caml_int64_marshal, + fixed_length:8, + compare:caml_int64_compare, + hash:caml_int64_hash}, + "_i":{deserialize:caml_int32_unmarshal,fixed_length:4}, + "_n":{deserialize:caml_nativeint_unmarshal,fixed_length:4}, + "_bigarray": + {deserialize: + function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarray")}, + serialize:caml_ba_serialize, + compare:caml_ba_compare, + hash:caml_ba_hash}, + "_bigarr02": + {deserialize: + function(reader,sz){return caml_ba_deserialize(reader,sz,"_bigarr02")}, + serialize:caml_ba_serialize, + compare:caml_ba_compare, + hash:caml_ba_hash}}; + function caml_compare_val_get_custom(a) + {return caml_custom_ops[a.caml_custom] + && + caml_custom_ops[a.caml_custom].compare} + function caml_compare_val_number_custom(num,custom,swap,total) + {var comp=caml_compare_val_get_custom(custom); + if(comp) + {var x=swap > 0?comp(custom,num,total):comp(num,custom,total); + if(total && x != x)return swap; + if(+ x != + x)return + x; + if((x | 0) != 0)return x | 0} + return swap} + function caml_compare_val_tag(a) + {if(typeof a === "number") + return 1000; + else + if(caml_is_ml_bytes(a)) + return 252; + else + if(caml_is_ml_string(a)) + return 1252; + else + if(a instanceof Array && a[0] === a[0] >>> 0 && a[0] <= 255) + {var tag=a[0] | 0;return tag == 254?0:tag} + else + if(a instanceof String) + return 12520; + else + if(typeof a == "string") + return 12520; + else + if(a instanceof Number) + return 1000; + else + if(a && a.caml_custom) + return 1255; + else + if(a && a.compare) + return 1256; + else + if(typeof a == "function") + return 1247; + else + if(typeof a == "symbol")return 1251; + return 1001} + function caml_int_compare(a,b) + {if(a < b)return - 1;if(a == b)return 0;return 1} + function caml_bytes_compare(s1,s2) + {s1.t & 6 && caml_convert_string_to_bytes(s1); + s2.t & 6 && caml_convert_string_to_bytes(s2); + return s1.c < s2.c?- 1:s1.c > s2.c?1:0} + function caml_string_compare(s1,s2){return caml_bytes_compare(s1,s2)} + function caml_compare_val(a,b,total) + {var stack=[]; + for(;;) + {if(! (total && a === b)) + {var tag_a=caml_compare_val_tag(a); + if(tag_a == 250){a = a[1];continue} + var tag_b=caml_compare_val_tag(b); + if(tag_b == 250){b = b[1];continue} + if(tag_a !== tag_b) + {if(tag_a == 1000) + {if(tag_b == 1255) + return caml_compare_val_number_custom(a,b,- 1,total); + return - 1} + if(tag_b == 1000) + {if(tag_a == 1255) + return caml_compare_val_number_custom(b,a,1,total); + return 1} + return tag_a < tag_b?- 1:1} + switch(tag_a) + {case 247:caml_invalid_argument("compare: functional value");break; + case 248: + var x=caml_int_compare(a[2],b[2]);if(x != 0)return x | 0;break; + case 249:caml_invalid_argument("compare: functional value");break; + case 250: + caml_invalid_argument + ("equal: got Forward_tag, should not happen"); + break; + case 251:caml_invalid_argument("equal: abstract value");break; + case 252: + if(a !== b){var x=caml_bytes_compare(a,b);if(x != 0)return x | 0} + break; + case 253: + caml_invalid_argument("equal: got Double_tag, should not happen"); + break; + case 254: + caml_invalid_argument + ("equal: got Double_array_tag, should not happen"); + break; + case 255: + caml_invalid_argument("equal: got Custom_tag, should not happen"); + break; + case 1247: + caml_invalid_argument("compare: functional value");break; + case 1255: + var comp=caml_compare_val_get_custom(a); + if(comp != caml_compare_val_get_custom(b)) + return a.caml_custom < b.caml_custom?- 1:1; + if(! comp)caml_invalid_argument("compare: abstract value"); + var x=comp(a,b,total); + if(x != x)return total?- 1:x; + if(x !== (x | 0))return - 1; + if(x != 0)return x | 0; + break; + case 1256: + var x=a.compare(b,total); + if(x != x)return total?- 1:x; + if(x !== (x | 0))return - 1; + if(x != 0)return x | 0; + break; + case 1000: + a = + a; + b = + b; + if(a < b)return - 1; + if(a > b)return 1; + if(a != b) + {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1} + break; + case 1001: + if(a < b)return - 1; + if(a > b)return 1; + if(a != b) + {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1} + break; + case 1251:if(a !== b){if(! total)return NaN;return 1}break; + case 1252: + var a=caml_jsbytes_of_string(a),b=caml_jsbytes_of_string(b); + if(a !== b){if(a < b)return - 1;if(a > b)return 1} + break; + case 12520: + var a=a.toString(),b=b.toString(); + if(a !== b){if(a < b)return - 1;if(a > b)return 1} + break; + case 246: + case 254: + default: + if(a.length != b.length)return a.length < b.length?- 1:1; + if(a.length > 1)stack.push(a,b,1); + break}} + if(stack.length == 0)return 0; + var i=stack.pop(); + b = stack.pop(); + a = stack.pop(); + if(i + 1 < a.length)stack.push(a,b,i + 1); + a = a[i]; + b = b[i]}} + function caml_greaterthan(x,y){return + (caml_compare_val(x,y,false) > 0)} + function div_helper(a,b,c) + {var + x=a * 65536 + (b >>> 16), + y=Math.floor(x / c) * 65536, + z=x % c * 65536, + w=z + (b & 0x0000FFFF); + return [y + Math.floor(w / c),w % c]} + function div_digit_nat(natq,ofsq,natr,ofsr,nat1,ofs1,len,nat2,ofs2) + {var rem=nat1.data[ofs1 + len - 1] >>> 0; + for(var i=len - 2;i >= 0;i--) + {var x=div_helper(rem,nat1.data[ofs1 + i] >>> 0,nat2.data[ofs2] >>> 0); + natq.data[ofsq + i] = x[0]; + rem = x[1]} + natr.data[ofsr] = rem; + return 0} + function num_leading_zero_bits_in_digit(nat,ofs) + {var a=nat.data[ofs],b=0; + if(a & 0xFFFF0000){b += 16;a >>>= 16} + if(a & 0xFF00){b += 8;a >>>= 8} + if(a & 0xF0){b += 4;a >>>= 4} + if(a & 12){b += 2;a >>>= 2} + if(a & 2){b += 1;a >>>= 1} + if(a & 1)b += 1; + return 32 - b} + function shift_left_nat(nat1,ofs1,len1,nat2,ofs2,nbits) + {if(nbits == 0){nat2.data[ofs2] = 0;return 0} + var wrap=0; + for(var i=0;i < len1;i++) + {var a=nat1.data[ofs1 + i] >>> 0; + nat1.data[ofs1 + i] = a << nbits | wrap; + wrap = a >>> 32 - nbits} + nat2.data[ofs2] = wrap; + return 0} + function MlNat(x) + {this.data = new (globalThis.Int32Array)(x); + this.length = this.data.length + 2} + MlNat.prototype.caml_custom = "_nat"; + function create_nat(size) + {var arr=new MlNat(size); + for(var i=0;i < size;i++)arr.data[i] = - 1; + return arr} + function set_to_zero_nat(nat,ofs,len) + {for(var i=0;i < len;i++)nat.data[ofs + i] = 0;return 0} + function incr_nat(nat,ofs,len,carry_in) + {var carry=carry_in; + for(var i=0;i < len;i++) + {var x=(nat.data[ofs + i] >>> 0) + carry; + nat.data[ofs + i] = x | 0; + if(x == x >>> 0){carry = 0;break}else carry = 1} + return carry} + function add_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in) + {var carry=carry_in; + for(var i=0;i < len2;i++) + {var + x= + (nat1.data[ofs1 + i] >>> 0) + (nat2.data[ofs2 + i] >>> 0) + carry; + nat1.data[ofs1 + i] = x; + if(x == x >>> 0)carry = 0;else carry = 1} + return incr_nat(nat1,ofs1 + len2,len1 - len2,carry)} + function nat_of_array(l){return new MlNat(l)} + function mult_digit_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3) + {var carry=0,a=nat3.data[ofs3] >>> 0; + for(var i=0;i < len2;i++) + {var + x1= + (nat1.data[ofs1 + i] >>> 0) + + + (nat2.data[ofs2 + i] >>> 0) + * + (a & 0x0000FFFF) + + + carry, + x2=(nat2.data[ofs2 + i] >>> 0) * (a >>> 16); + carry = Math.floor(x2 / 65536); + var x3=x1 + x2 % 65536 * 65536; + nat1.data[ofs1 + i] = x3; + carry += Math.floor(x3 / 4294967296)} + return len2 < len1 && carry + ?add_nat + (nat1,ofs1 + len2,len1 - len2,nat_of_array([carry]),0,1,0) + :carry} + function decr_nat(nat,ofs,len,carry_in) + {var borrow=carry_in == 1?0:1; + for(var i=0;i < len;i++) + {var x=(nat.data[ofs + i] >>> 0) - borrow; + nat.data[ofs + i] = x; + if(x >= 0){borrow = 0;break}else borrow = 1} + return borrow == 1?0:1} + function sub_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in) + {var borrow=carry_in == 1?0:1; + for(var i=0;i < len2;i++) + {var + x= + (nat1.data[ofs1 + i] >>> 0) - (nat2.data[ofs2 + i] >>> 0) - borrow; + nat1.data[ofs1 + i] = x; + if(x >= 0)borrow = 0;else borrow = 1} + return decr_nat(nat1,ofs1 + len2,len1 - len2,borrow == 1?0:1)} + function compare_nat(nat1,ofs1,len1,nat2,ofs2,len2) + {var a=num_digits_nat(nat1,ofs1,len1),b=num_digits_nat(nat2,ofs2,len2); + if(a > b)return 1; + if(a < b)return - 1; + for(var i=len1 - 1;i >= 0;i--) + {if(nat1.data[ofs1 + i] >>> 0 > nat2.data[ofs2 + i] >>> 0)return 1; + if(nat1.data[ofs1 + i] >>> 0 < nat2.data[ofs2 + i] >>> 0)return - 1} + return 0} + function div_nat(nat1,ofs1,len1,nat2,ofs2,len2) + {if(len2 == 1) + {div_digit_nat(nat1,ofs1 + 1,nat1,ofs1,nat1,ofs1,len1,nat2,ofs2); + return 0} + var s=num_leading_zero_bits_in_digit(nat2,ofs2 + len2 - 1); + shift_left_nat(nat2,ofs2,len2,nat_of_array([0]),0,s); + shift_left_nat(nat1,ofs1,len1,nat_of_array([0]),0,s); + var d=(nat2.data[ofs2 + len2 - 1] >>> 0) + 1,a=create_nat(len2 + 1); + for(var i=len1 - 1;i >= len2;i--) + {var + quo= + d == 4294967296 + ?nat1.data[ofs1 + i] >>> 0 + :div_helper + (nat1.data[ofs1 + i] >>> 0,nat1.data[ofs1 + i - 1] >>> 0,d) + [0]; + set_to_zero_nat(a,0,len2 + 1); + mult_digit_nat(a,0,len2 + 1,nat2,ofs2,len2,nat_of_array([quo]),0); + sub_nat(nat1,ofs1 + i - len2,len2 + 1,a,0,len2 + 1,1); + while + (nat1.data[ofs1 + i] + != + 0 + || + compare_nat(nat1,ofs1 + i - len2,len2,nat2,ofs2,len2) + >= + 0) + {quo = quo + 1; + sub_nat(nat1,ofs1 + i - len2,len2 + 1,nat2,ofs2,len2,1)} + nat1.data[ofs1 + i] = quo} + shift_right_nat(nat1,ofs1,len2,nat_of_array([0]),0,s); + shift_right_nat(nat2,ofs2,len2,nat_of_array([0]),0,s); + return 0} + function caml_ba_blit(src,dst) + {if(dst.dims.length != src.dims.length) + caml_invalid_argument("Bigarray.blit: dimension mismatch"); + for(var i=0;i < dst.dims.length;i++) + if(dst.dims[i] != src.dims[i]) + caml_invalid_argument("Bigarray.blit: dimension mismatch"); + dst.data.set(src.data); + return 0} + function is_digit_int(nat,ofs){if(nat.data[ofs] >= 0)return 1;return 0} + function caml_int64_div(x,y){return x.div(y)} + function caml_js_html_entities(s) + {var entity=/^&#?[0-9a-zA-Z]+;$/; + if(s.match(entity)) + {var str,temp=document.createElement("p"); + temp.innerHTML = s; + str = temp.textContent || temp.innerText; + temp = null; + return str} + else + caml_failwith("Invalid entity " + s)} + function caml_string_unsafe_set(s,i,c) + {return caml_bytes_unsafe_set(s,i,c)} + function caml_int64_of_float(x) + {if(x < 0)x = Math.ceil(x); + return new + MlInt64 + (x & 0xffffff, + Math.floor(x * caml_int64_offset) & 0xffffff, + Math.floor(x * caml_int64_offset * caml_int64_offset) & 0xffff)} + function caml_ml_channel_size_64(chanid) + {var chan=caml_ml_channels[chanid]; + return caml_int64_of_float(chan.file.length())} + function caml_ba_set_2(ba,i0,i1,v){ba.set(ba.offset([i0,i1]),v);return 0} + function ml_z_of_int64(i64) + {var neg=false; + if(caml_int64_compare(i64,caml_int64_create_lo_hi(0,0)) < 0) + {neg = true;i64 = caml_int64_neg(i64)} + var + lo=caml_int64_lo32(i64) >>> 0, + hi=caml_int64_hi32(i64) >>> 0, + x=bigInt(lo).add(bigInt(hi).shiftLeft(32)); + if(neg)x = x.negate(); + return ml_z_normalize(x)} + function ml_z_kronecker(n,k) + {caml_failwith("ml_z_kronecker is not implemented")} + var + caml_argv= + function() + {var g=globalThis,main="a.out",args=[]; + if(g.process && g.process.argv && g.process.argv.length > 1) + {var argv=g.process.argv;main = argv[1];args = argv.slice(2)} + var p=caml_string_of_jsstring(main),args2=[0,p]; + for(var i=0;i < args.length;i++) + args2.push(caml_string_of_jsstring(args[i])); + return args2} + (), + caml_executable_name=caml_argv[1]; + function caml_js_eval_string(s){return eval(caml_jsstring_of_string(s))} + function serialize_nat(writer,nat,sz) + {var len=nat.data.length; + writer.write(32,len); + for(var i=0;i < len;i++)writer.write(32,nat.data[i]); + sz[0] = len * 4; + sz[1] = len * 8} + function caml_memprof_set(_control){return 0} + function ml_z_neg(z1){return ml_z_normalize(bigInt(z1).negate())} + function caml_sys_exit(code) + {var g=globalThis; + if(g.quit)g.quit(code); + if(g.process && g.process.exit)g.process.exit(code); + caml_invalid_argument("Function 'exit' not implemented")} + function caml_channel_descriptor(chanid) + {var chan=caml_ml_channels[chanid];return chan.fd} + function caml_js_from_array(a){return a.slice(1)} + function caml_ba_reshape(ba,vind) + {vind = caml_js_from_array(vind); + var new_dim=[],num_dims=vind.length; + if(num_dims < 0 || num_dims > 16) + caml_invalid_argument("Bigarray.reshape: bad number of dimensions"); + var num_elts=1; + for(var i=0;i < num_dims;i++) + {new_dim[i] = vind[i]; + if(new_dim[i] < 0) + caml_invalid_argument("Bigarray.reshape: negative dimension"); + num_elts = num_elts * new_dim[i]} + var size=caml_ba_get_size(ba.dims); + if(num_elts != size) + caml_invalid_argument("Bigarray.reshape: size mismatch"); + return caml_ba_create_unsafe(ba.kind,ba.layout,new_dim,ba.data)} + var caml_oo_last_id=0; + function caml_set_oo_id(b){b[2] = caml_oo_last_id++;return b} + function caml_gr_fill_rect(x,y,w,h) + {var s=caml_gr_state_get(); + s.context.fillRect(x,s.height - y,w,- h); + return 0} + function caml_bigstring_blit_string_to_ba(str1,pos1,ba2,pos2,len) + {if(12 != ba2.kind) + caml_invalid_argument + ("caml_bigstring_blit_string_to_ba: kind mismatch"); + if(len == 0)return 0; + var ofs2=ba2.offset(pos2); + if(pos1 + len > caml_ml_string_length(str1))caml_array_bound_error(); + if(ofs2 + len > ba2.data.length)caml_array_bound_error(); + var slice=caml_array_of_string(str1).slice(pos1,pos1 + len); + ba2.data.set(slice,ofs2); + return 0} + function caml_gr_set_window_title(name) + {var s=caml_gr_state_get(); + s.title = name; + var jsname=caml_jsstring_of_string(name); + if(s.set_title)s.set_title(jsname); + return 0} + function caml_get_global_data(){return caml_global_data} + function caml_int64_shift_right_unsigned(x,s) + {return x.shift_right_unsigned(s)} + function caml_ba_uint8_get16(ba,i0) + {var ofs=ba.offset(i0); + if(ofs + 1 >= ba.data.length)caml_array_bound_error(); + var b1=ba.get(ofs),b2=ba.get(ofs + 1); + return b1 | b2 << 8} + function ml_z_of_int32(i){return i | 0} + function caml_compare(a,b){return caml_compare_val(a,b,true)} + function caml_fresh_oo_id(){return caml_oo_last_id++} + function caml_int64_to_float(x){return x.toFloat()} + function caml_ba_get_1(ba,i0){return ba.get(ba.offset(i0))} + function caml_bigstring_memcmp(s1,pos1,s2,pos2,len) + {for(var i=0;i < len;i++) + {var a=caml_ba_get_1(s1,pos1 + i),b=caml_ba_get_1(s2,pos2 + i); + if(a < b)return - 1; + if(a > b)return 1} + return 0} + function caml_new_string(s){return caml_string_of_jsbytes(s)} + function caml_erf_float(x) + {var + a1=0.254829592, + a2=- 0.284496736, + a3=1.421413741, + a4=- 1.453152027, + a5=1.061405429, + p=0.3275911, + sign=1; + if(x < 0)sign = - 1; + x = Math.abs(x); + var + t=1.0 / (1.0 + p * x), + y= + 1.0 + - + ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) + * + t + * + Math.exp(- (x * x)); + return sign * y} + function caml_ba_uint8_get32(ba,i0) + {var ofs=ba.offset(i0); + if(ofs + 3 >= ba.data.length)caml_array_bound_error(); + var + b1=ba.get(ofs + 0), + b2=ba.get(ofs + 1), + b3=ba.get(ofs + 2), + b4=ba.get(ofs + 3); + return b1 << 0 | b2 << 8 | b3 << 16 | b4 << 24} + function caml_raw_backtrace_length(){return 0} + function ml_z_shift_right(z1,amt) + {return ml_z_normalize(bigInt(z1).shiftRight(amt))} + function caml_obj_block(tag,size) + {var o=new Array(size + 1); + o[0] = tag; + for(var i=1;i <= size;i++)o[i] = 0; + return o} + function caml_gr_clear_graph() + {var s=caml_gr_state_get(); + s.canvas.width = s.width; + s.canvas.height = s.height; + return 0} + function bigstring_to_array_buffer(bs){return bs.data.buffer} + function caml_sys_const_naked_pointers_checked(_unit){return 0} + function lxor_digit_nat(nat1,ofs1,nat2,ofs2) + {nat1.data[ofs1] ^= nat2.data[ofs2];return 0} + function caml_obj_add_offset(v,offset) + {caml_failwith("Obj.add_offset is not supported")} + function caml_final_release(){return 0} + function caml_js_to_array(a) + {var len=a.length,b=new Array(len + 1); + b[0] = 0; + for(var i=0;i < len;i++)b[i + 1] = a[i]; + return b} + function ml_z_logor(z1,z2) + {return ml_z_normalize(bigInt(z1).or(bigInt(z2)))} + function caml_gr_plot(x,y) + {var + s=caml_gr_state_get(), + im=s.context.createImageData(1,1), + d=im.data, + color=s.color; + d[0] = color >> 16 & 0xff; + d[1] = color >> 8 & 0xff,d[2] = color >> 0 & 0xff; + d[3] = 0xFF; + s.x = x; + s.y = y; + s.context.putImageData(im,x,s.height - y); + return 0} + function caml_bytes_set16(s,i,i16) + {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error(); + var b2=0xFF & i16 >> 8,b1=0xFF & i16; + caml_bytes_unsafe_set(s,i + 0,b1); + caml_bytes_unsafe_set(s,i + 1,b2); + return 0} + function caml_string_set16(s,i,i16){return caml_bytes_set16(s,i,i16)} + function caml_bytes_set64(s,i,i64) + {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error(); + var a=caml_int64_to_bytes(i64); + for(var j=0;j < 8;j++)caml_bytes_unsafe_set(s,i + 7 - j,a[j]); + return 0} + function caml_int64_bswap(x) + {var y=caml_int64_to_bytes(x); + return caml_int64_of_bytes([y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]])} + function ml_z_fits_int(z1){return z1 == (z1 | 0)?1:0} + function ml_z_fits_int32(z1){return ml_z_fits_int(z1)} + function caml_fill_bytes(s,i,l,c) + {if(l > 0) + if(i == 0 && (l >= s.l || s.t == 2 && l >= s.c.length)) + if(c == 0) + {s.c = "";s.t = 2} + else + {s.c = caml_str_repeat(l,String.fromCharCode(c));s.t = l == s.l?0:2} + else + {if(s.t != 4)caml_convert_bytes_to_array(s); + for(l += i;i < l;i++)s.c[i] = c} + return 0} + var caml_fill_string=caml_fill_bytes; + function caml_gc_major(){return 0} + function ml_z_shift_left(z1,amt) + {return ml_z_normalize(bigInt(z1).shiftLeft(amt))} + function caml_lex_array(s) + {s = caml_jsbytes_of_string(s); + var l=s.length / 2,a=new Array(l); + for(var i=0;i < l;i++) + a[i] + = + (s.charCodeAt(2 * i) | s.charCodeAt(2 * i + 1) << 8) + << + 16 + >> + 16; + return a} + function caml_lex_engine(tbl,start_state,lexbuf) + {var + lex_buffer=2, + lex_buffer_len=3, + lex_start_pos=5, + lex_curr_pos=6, + lex_last_pos=7, + lex_last_action=8, + lex_eof_reached=9, + lex_base=1, + lex_backtrk=2, + lex_default=3, + lex_trans=4, + lex_check=5; + if(! tbl.lex_default) + {tbl.lex_base = caml_lex_array(tbl[lex_base]); + tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]); + tbl.lex_check = caml_lex_array(tbl[lex_check]); + tbl.lex_trans = caml_lex_array(tbl[lex_trans]); + tbl.lex_default = caml_lex_array(tbl[lex_default])} + var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]); + if(state >= 0) + {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; + lexbuf[lex_last_action] = - 1} + else + state = - state - 1; + for(;;) + {var base=tbl.lex_base[state]; + if(base < 0)return - base - 1; + var backtrk=tbl.lex_backtrk[state]; + if(backtrk >= 0) + {lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; + lexbuf[lex_last_action] = backtrk} + if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) + if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256; + else + {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++} + if(tbl.lex_check[base + c] == state) + state = tbl.lex_trans[base + c]; + else + state = tbl.lex_default[state]; + if(state < 0) + {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; + if(lexbuf[lex_last_action] == - 1) + caml_failwith("lexing: empty token"); + else + return lexbuf[lex_last_action]} + else + if(c == 256)lexbuf[lex_eof_reached] = 0}} + function unix_getuid(unit) + {if(globalThis.process && globalThis.process.getuid) + return globalThis.process.getuid(); + caml_raise_not_found()} + function caml_sys_file_exists(name) + {var root=resolve_fs_device(name);return root.device.exists(root.rest)} + function caml_convert_raw_backtrace_slot() + {caml_failwith("caml_convert_raw_backtrace_slot")} + function caml_array_sub(a,i,len) + {var a2=new Array(len + 1); + a2[0] = 0; + for(var i2=1,i1=i + 1;i2 <= len;i2++,i1++)a2[i2] = a[i1]; + return a2} + function caml_bytes_equal(s1,s2) + {if(s1 === s2)return 1; + s1.t & 6 && caml_convert_string_to_bytes(s1); + s2.t & 6 && caml_convert_string_to_bytes(s2); + return s1.c == s2.c?1:0} + function caml_gr_size_x(){var s=caml_gr_state_get();return s.width} + function caml_ml_debug_info_status(){return 0} + var + os_type= + globalThis.process + && + globalThis.process.platform + && + globalThis.process.platform + == + "win32" + ?"Cygwin" + :"Unix"; + function caml_sys_const_ostype_cygwin(){return os_type == "Cygwin"?1:0} + function caml_cosh_float(x){return Math.cosh(x)} + var caml_ephe_key_offset=3; + function caml_weak_check(x,i) + {return x[caml_ephe_key_offset + i] + !== + undefined + && + x[caml_ephe_key_offset + i] + !== + 0 + ?1 + :0} + var caml_ephe_check_key=caml_weak_check; + function caml_hash_mix_final(h) + {h ^= h >>> 16; + h = caml_mul(h,0x85ebca6b | 0); + h ^= h >>> 13; + h = caml_mul(h,0xc2b2ae35 | 0); + h ^= h >>> 16; + return h} + function caml_gr_text_size(txt) + {var + s=caml_gr_state_get(), + w=s.context.measureText(caml_jsstring_of_string(txt)).width; + return [0,w,s.text_size]} + function caml_lex_run_mem(s,i,mem,curr_pos) + {for(;;) + {var dst=s.charCodeAt(i); + i++; + if(dst == 0xff)return; + var src=s.charCodeAt(i); + i++; + if(src == 0xff) + mem[dst + 1] = curr_pos; + else + mem[dst + 1] = mem[src + 1]}} + function caml_lex_run_tag(s,i,mem) + {for(;;) + {var dst=s.charCodeAt(i); + i++; + if(dst == 0xff)return; + var src=s.charCodeAt(i); + i++; + if(src == 0xff)mem[dst + 1] = - 1;else mem[dst + 1] = mem[src + 1]}} + function caml_new_lex_engine(tbl,start_state,lexbuf) + {var + lex_buffer=2, + lex_buffer_len=3, + lex_start_pos=5, + lex_curr_pos=6, + lex_last_pos=7, + lex_last_action=8, + lex_eof_reached=9, + lex_mem=10, + lex_base=1, + lex_backtrk=2, + lex_default=3, + lex_trans=4, + lex_check=5, + lex_base_code=6, + lex_backtrk_code=7, + lex_default_code=8, + lex_trans_code=9, + lex_check_code=10, + lex_code=11; + if(! tbl.lex_default) + {tbl.lex_base = caml_lex_array(tbl[lex_base]); + tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]); + tbl.lex_check = caml_lex_array(tbl[lex_check]); + tbl.lex_trans = caml_lex_array(tbl[lex_trans]); + tbl.lex_default = caml_lex_array(tbl[lex_default])} + if(! tbl.lex_default_code) + {tbl.lex_base_code = caml_lex_array(tbl[lex_base_code]); + tbl.lex_backtrk_code = caml_lex_array(tbl[lex_backtrk_code]); + tbl.lex_check_code = caml_lex_array(tbl[lex_check_code]); + tbl.lex_trans_code = caml_lex_array(tbl[lex_trans_code]); + tbl.lex_default_code = caml_lex_array(tbl[lex_default_code])} + if(tbl.lex_code == null) + tbl.lex_code = caml_jsbytes_of_string(tbl[lex_code]); + var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]); + if(state >= 0) + {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; + lexbuf[lex_last_action] = - 1} + else + state = - state - 1; + for(;;) + {var base=tbl.lex_base[state]; + if(base < 0) + {var pc_off=tbl.lex_base_code[state]; + caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]); + return - base - 1} + var backtrk=tbl.lex_backtrk[state]; + if(backtrk >= 0) + {var pc_off=tbl.lex_backtrk_code[state]; + caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]); + lexbuf[lex_last_pos] = lexbuf[lex_curr_pos]; + lexbuf[lex_last_action] = backtrk} + if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) + if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256; + else + {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++} + var pstate=state; + if(tbl.lex_check[base + c] == state) + state = tbl.lex_trans[base + c]; + else + state = tbl.lex_default[state]; + if(state < 0) + {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos]; + if(lexbuf[lex_last_action] == - 1) + caml_failwith("lexing: empty token"); + else + return lexbuf[lex_last_action]} + else + {var base_code=tbl.lex_base_code[pstate],pc_off; + if(tbl.lex_check_code[base_code + c] == pstate) + pc_off = tbl.lex_trans_code[base_code + c]; + else + pc_off = tbl.lex_default_code[pstate]; + if(pc_off > 0) + caml_lex_run_mem + (tbl.lex_code,pc_off,lexbuf[lex_mem],lexbuf[lex_curr_pos]); + if(c == 256)lexbuf[lex_eof_reached] = 0}}} + function caml_ba_uint8_set64(ba,i0,v) + {var ofs=ba.offset(i0); + if(ofs + 7 >= ba.data.length)caml_array_bound_error(); + var v=caml_int64_to_bytes(v); + for(var i=0;i < 8;i++)ba.set(ofs + i,v[7 - i]); + return 0} + function ml_z_popcount(z) + {z = bigInt(z); + var zero=bigInt(0),one=bigInt(1); + if(z.lt(zero))caml_raise_constant(caml_named_value("ml_z_overflow")); + var i; + for(i = 0;! z.equals(zero);i++)z = z.and(z.prev()); + if(i != (i | 0))caml_raise_constant(caml_named_value("ml_z_overflow")); + return i | 0} + function caml_sys_executable_name(a){return caml_executable_name} + function caml_lessequal(x,y){return + (caml_compare_val(x,y,false) <= 0)} + function caml_acosh_float(x){return Math.acosh(x)} + function caml_ml_flush(chanid) + {var chan=caml_ml_channels[chanid]; + if(! chan.opened)caml_raise_sys_error("Cannot flush a closed channel"); + if(! chan.buffer || chan.buffer == "")return 0; + if + (chan.fd + && + caml_global_data.fds[chan.fd] + && + caml_global_data.fds[chan.fd].output) + {var output=caml_global_data.fds[chan.fd].output; + switch(output.length) + {case 2:output(chanid,chan.buffer);break;default:output(chan.buffer)}} + chan.buffer = ""; + return 0} + function caml_ml_seek_out_64(chanid,pos) + {caml_ml_flush(chanid); + caml_ml_channels[chanid].offset = caml_int64_to_float(pos); + return 0} + function compare_nat_real(nat1,nat2) + {return compare_nat(nat1,0,nat1.data.length,nat2,0,nat2.data.length)} + function caml_gc_set(_control){return 0} + function caml_js_get(o,f){return o[f]} + function caml_ml_set_buffered(c,v){return 0} + function caml_gc_compaction(){return 0} + function caml_weak_get(x,i) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.get_key"); + return x[caml_ephe_key_offset + i] === undefined + ?0 + :x[caml_ephe_key_offset + i]} + var caml_ephe_get_key=caml_weak_get; + function jsoo_z_of_js_string_base(base,s) + {if(base == 0) + {base = 10; + var p=0,sign=1; + if(s[p] == "-"){sign = - 1;p++}else if(s[p] == "+")p++; + if(s[p] == "0") + {p++; + if(s.length == p) + return 0; + else + {var bc=s[p]; + if(bc == "o" || bc == "O") + base = 8; + else + if(bc == "x" || bc == "X") + base = 16; + else + if(bc == "b" || bc == "B")base = 2; + if(base != 10){s = s.substring(p + 1);if(sign == - 1)s = "-" + s}}}} + function digit(code) + {if(code >= 48 && code <= 57)return code - 48; + if(code >= 97 && code <= 102)return code - 97 + 10; + if(code >= 65 && code <= 70)return code - 65 + 10} + var i=0; + if(s[i] == "+")s = s.substring(1);else if(s[i] == "-")i++; + if(s[i] == "_") + caml_invalid_argument("Z.of_substring_base: invalid digit"); + s = s.replace(/_/g,""); + if(s == "-" || s == "")s = "0"; + for(;i < s.length;i++) + {var c=digit(s.charCodeAt(i)); + if(c == undefined || c >= base) + caml_invalid_argument("Z.of_substring_base: invalid digit")} + return ml_z_normalize(bigInt(s,base))} + function ml_z_of_substring_base(base,s,pos,len) + {s = caml_jsbytes_of_string(s); + if(pos != 0 || len != s.length) + {if(s.length - pos < len) + caml_invalid_argument + ("Z.of_substring_base: invalid offset or length"); + s = s.slice(pos,pos + len)} + return jsoo_z_of_js_string_base(base,s)} + function caml_bigstring_blit_bytes_to_ba(str1,pos1,ba2,pos2,len) + {if(12 != ba2.kind) + caml_invalid_argument + ("caml_bigstring_blit_string_to_ba: kind mismatch"); + if(len == 0)return 0; + var ofs2=ba2.offset(pos2); + if(pos1 + len > caml_ml_bytes_length(str1))caml_array_bound_error(); + if(ofs2 + len > ba2.data.length)caml_array_bound_error(); + var slice=caml_array_of_bytes(str1).slice(pos1,pos1 + len); + ba2.data.set(slice,ofs2); + return 0} + function win_cleanup(){} + function caml_sys_close(fd){delete caml_global_data.fds[fd];return 0} + function caml_ml_close_channel(chanid) + {var chan=caml_ml_channels[chanid]; + caml_ml_flush(chanid); + chan.opened = false; + chan.file.close(); + caml_sys_close(chan.fd); + return 0} + function caml_exn_with_js_backtrace(exn,force) + {if(! exn.js_error || force || exn[0] == 248) + exn.js_error + = + new (globalThis.Error)("Js exception containing backtrace"); + return exn} + function caml_sys_isatty(_chan){return 0} + function is_digit_zero(nat,ofs){if(nat.data[ofs] == 0)return 1;return 0} + function unix_inet_addr_of_string(){return 0} + function caml_js_set(o,f,v){o[f] = v;return 0} + function ml_z_gcdext_intern(z1,z2) + {z1 = bigInt(z1); + z2 = bigInt(z2); + var + gcd=bigInt.gcd(z1,z2), + a=z1, + b=z2, + x=bigInt(0), + lastx=bigInt(1), + y=bigInt(1), + lasty=bigInt(1), + q, + t, + r; + if(z1.equals(bigInt(0)))caml_raise_zero_divide(); + while(! b.equals(bigInt(0))) + {q = a.divide(b); + r = a.subtract(q.multiply(b)); + t = x; + x = lastx.subtract(q.multiply(x)); + lastx = t; + t = y; + y = lasty.subtract(q.multiply(y)); + lasty = t; + a = b; + b = r} + return a.lt(bigInt(0)) + ?[0,ml_z_normalize(a.negate()),ml_z_normalize(lastx.negate()),1] + :[0,ml_z_normalize(a),ml_z_normalize(lastx),1]} + function ml_z_testbit(z,pos) + {z = bigInt(z);return z.shiftRight(pos).and(bigInt(1)).toJSNumber() | 0} + function caml_array_get(array,index) + {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); + return array[index + 1]} + function caml_log2_float(x){return Math.log2(x)} + function caml_gc_huge_fallback_count(unit){return 0} + function ml_z_congruent(a,b,c) + {var zero=bigInt(0); + a = bigInt(a); + b = bigInt(b); + c = bigInt(c); + if(c.equals(zero) && a.equals(b))return 1; + return a.minus(b).isDivisibleBy(c)?1:0} + function caml_spacetime_only_works_for_native_code() + {caml_failwith("Spacetime profiling only works for native code")} + function caml_int64_sub(x,y){return x.sub(y)} + function caml_ml_seek_in_64(chanid,pos) + {var chan=caml_ml_channels[chanid]; + if(chan.refill != null)caml_raise_sys_error("Illegal seek"); + chan.offset = caml_int64_to_float(pos); + return 0} + function caml_int64_shift_left(x,s){return x.shift_left(s)} + function caml_notequal(x,y){return + (caml_compare_val(x,y,false) != 0)} + function ml_z_abs(z1){return ml_z_normalize(bigInt(z1).abs())} + function caml_sys_const_int_size(){return 32} + function caml_js_wrap_meth_callback(f) + {return function() + {var len=arguments.length,args=new Array(len + 1); + args[0] = this; + for(var i=0;i < len;i++)args[i + 1] = arguments[i]; + return caml_call_gen(f,args)}} + function caml_is_js(){return 1} + function caml_ba_dim(ba,i) + {if(i < 0 || i >= ba.dims.length)caml_invalid_argument("Bigarray.dim"); + return ba.dims[i]} + function caml_ba_dim_1(ba){return caml_ba_dim(ba,0)} + function ml_z_sqrt(z1) + {var z=bigInt(z1),zero=bigInt(0); + if(z.lt(zero)) + caml_invalid_argument("Z.sqrt: square root of a negative number"); + return ml_z_root(z,2)} + function unix_localtime(t) + {var + d=new Date(t * 1000), + d_num=d.getTime(), + januaryfirst=new Date(d.getFullYear(),0,1).getTime(), + doy=Math.floor((d_num - januaryfirst) / 86400000), + jan=new Date(d.getFullYear(),0,1), + jul=new Date(d.getFullYear(),6,1), + stdTimezoneOffset= + Math.max(jan.getTimezoneOffset(),jul.getTimezoneOffset()); + return [0, + d.getSeconds(), + d.getMinutes(), + d.getHours(), + d.getDate(), + d.getMonth(), + d.getFullYear() - 1900, + d.getDay(), + doy, + d.getTimezoneOffset() < stdTimezoneOffset | 0]} + function caml_js_meth_call(o,f,args) + {return o[caml_jsstring_of_string(f)].apply(o,caml_js_from_array(args))} + function ml_z_lucnum(i) + {if(i < 0)caml_invalid_argument("Z.lucnum: negative arguments"); + if(i == 0)return 2; + if(i == 1)return 1; + var a=bigInt(2),b=bigInt(1); + for(var k=1;k < i;k++){var b2=b;b = a.add(b);a = b2} + return ml_z_normalize(b)} + function caml_weak_create(n) + {if(n < 0)caml_invalid_argument("Weak.create"); + var x=[251,"caml_ephe_list_head"]; + x.length = caml_ephe_key_offset + n; + return x} + var caml_ephe_create=caml_weak_create; + function caml_js_to_byte_string(s){return caml_string_of_jsbytes(s)} + function ml_z_probab_prime(z,i){return bigInt(z).isProbablePrime(i)?1:0} + function unix_mktime(tm) + {var + d=new Date(tm[6] + 1900,tm[5],tm[4],tm[3],tm[2],tm[1]).getTime(), + t=Math.floor(d / 1000), + tm2=unix_localtime(t); + return [0,t,tm2]} + function caml_trampoline(res) + {var c=1; + while(res && res.joo_tramp) + {res = res.joo_tramp.apply(null,res.joo_args);c++} + return res} + function caml_bytes_get64(s,i) + {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error(); + var a=new Array(8); + for(var j=0;j < 8;j++)a[7 - j] = caml_bytes_unsafe_get(s,i + j); + return caml_int64_of_bytes(a)} + function ml_z_rem(z1,z2) + {z2 = bigInt(z2); + if(z2.equals(bigInt(0)))caml_raise_zero_divide(); + return ml_z_normalize(bigInt(z1).mod(z2))} + function caml_weak_set(x,i,v) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.set"); + x[caml_ephe_key_offset + i] = v; + return 0} + function caml_sys_remove(name) + {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest); + if(ok == 0)caml_raise_no_such_file(caml_jsbytes_of_string(name)); + return 0} + function caml_string_bound_error() + {caml_invalid_argument("index out of bounds")} + function caml_string_get32(s,i) + {if(i >>> 0 >= caml_ml_string_length(s) - 3)caml_string_bound_error(); + var + b1=caml_string_unsafe_get(s,i), + b2=caml_string_unsafe_get(s,i + 1), + b3=caml_string_unsafe_get(s,i + 2), + b4=caml_string_unsafe_get(s,i + 3); + return b4 << 24 | b3 << 16 | b2 << 8 | b1} + function caml_hypot_float(x,y){return Math.hypot(x,y)} + function ml_z_facM(i,m) + {if(i <= 0 || m <= 0) + caml_invalid_argument("Z.factM: negative arguments"); + m = bigInt(m); + var current=bigInt(i),res=bigInt(1); + while(current.isPositive()) + {res = res.multiply(current);current = current.minus(m)} + return ml_z_normalize(res)} + function caml_js_call(f,o,args) + {return f.apply(o,caml_js_from_array(args))} + function caml_sys_const_max_wosize(){return 0x7FFFFFFF / 4 | 0} + function caml_ephe_unset_key(x,i){return caml_weak_set(x,i,0)} + function ml_z_mul_overflows(x,y){var z=x * y;return z != (z | 0)} + function ml_z_to_int(z1) + {if(z1 == (z1 | 0))return z1 | 0; + caml_raise_constant(caml_named_value("ml_z_overflow"))} + function caml_hash_mix_bytes_arr(h,s) + {var len=s.length,i,w; + for(i = 0;i + 4 <= len;i += 4) + {w = s[i] | s[i + 1] << 8 | s[i + 2] << 16 | s[i + 3] << 24; + h = caml_hash_mix_int(h,w)} + w = 0; + switch(len & 3) + {case 3:w = s[i + 2] << 16; + case 2:w |= s[i + 1] << 8; + case 1:w |= s[i];h = caml_hash_mix_int(h,w) + } + h ^= len; + return h} + function caml_hash_mix_jsbytes(h,s) + {var len=s.length,i,w; + for(i = 0;i + 4 <= len;i += 4) + {w + = + s.charCodeAt(i) + | + s.charCodeAt(i + 1) + << + 8 + | + s.charCodeAt(i + 2) + << + 16 + | + s.charCodeAt(i + 3) + << + 24; + h = caml_hash_mix_int(h,w)} + w = 0; + switch(len & 3) + {case 3:w = s.charCodeAt(i + 2) << 16; + case 2:w |= s.charCodeAt(i + 1) << 8; + case 1:w |= s.charCodeAt(i);h = caml_hash_mix_int(h,w) + } + h ^= len; + return h} + function caml_ml_bytes_content(s) + {switch(s.t & 6) + {default:caml_convert_string_to_bytes(s);case 0:return s.c; + case 4:return s.c + }} + function caml_hash_mix_bytes(h,v) + {var content=caml_ml_bytes_content(v); + return typeof content === "string" + ?caml_hash_mix_jsbytes(h,content) + :caml_hash_mix_bytes_arr(h,content)} + function caml_bytes_lessthan(s1,s2) + {s1.t & 6 && caml_convert_string_to_bytes(s1); + s2.t & 6 && caml_convert_string_to_bytes(s2); + return s1.c < s2.c?1:0} + function caml_erfc_float(x){return 1 - caml_erf_float(x)} + function caml_gr_fill_poly(ar) + {var s=caml_gr_state_get(); + s.context.beginPath(); + s.context.moveTo(ar[1][1],s.height - ar[1][2]); + for(var i=2;i < ar.length;i++) + s.context.lineTo(ar[i][1],s.height - ar[i][2]); + s.context.lineTo(ar[1][1],s.height - ar[1][2]); + s.context.fill(); + return 0} + function caml_gc_quick_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} + function ml_z_fac(i) + {if(i <= 0)caml_invalid_argument("Z.fact: negative arguments"); + return ml_z_facM(i,1)} + function caml_raise_end_of_file() + {caml_raise_constant(caml_global_data.End_of_file)} + function caml_ml_input_int(chanid) + {var chan=caml_ml_channels[chanid],file=chan.file; + while(chan.offset + 3 >= file.length()) + {var l=caml_ml_refill_input(chan);if(l == 0)caml_raise_end_of_file()} + var + o=chan.offset, + r= + file.read_one(o) + << + 24 + | + file.read_one(o + 1) + << + 16 + | + file.read_one(o + 2) + << + 8 + | + file.read_one(o + 3); + chan.offset += 4; + return r} + function caml_gr_display_mode() + {caml_failwith("caml_gr_display_mode not Implemented")} + function ml_z_divisible(a,b) + {var zero=bigInt(0); + a = bigInt(a); + b = bigInt(b); + if(a.equals(zero) && b.equals(zero))return 1; + return a.isDivisibleBy(b)?1:0} + function caml_obj_reachable_words(o){return 0} + function nth_digit_nat(nat,ofs){return nat.data[ofs]} + function caml_array_blit(a1,i1,a2,i2,len) + {if(i2 <= i1) + for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j]; + else + for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j]; + return 0} + function caml_float_of_string(s) + {var res; + s = caml_jsbytes_of_string(s); + res = + s; + if(s.length > 0 && res === res)return res; + s = s.replace(/_/g,""); + res = + s; + if(s.length > 0 && res === res || /^[+-]?nan$/i.test(s))return res; + var m=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)(p([+-]?[0-9]+))?/i.exec(s); + if(m) + {var + m3=m[3].replace(/0+$/,""), + mantissa=parseInt(m[1] + m[2] + m3,16), + exponent=(m[5] | 0) - 4 * m3.length; + res = mantissa * Math.pow(2,exponent); + return res} + if(/^\+?inf(inity)?$/i.test(s))return Infinity; + if(/^-inf(inity)?$/i.test(s))return - Infinity; + caml_failwith("float_of_string")} + function caml_sys_getcwd() + {return caml_string_of_jsbytes(caml_current_dir)} + function caml_sys_const_big_endian(){return 0} + function caml_list_to_js_array(l) + {var a=[];for(;l !== 0;l = l[2])a.push(l[1]);return a} + var + caml_legacy_custom_code=false, + caml_output_val= + function() + {function Writer(){this.chunk = []} + Writer.prototype + = + {chunk_idx:20, + block_len:0, + obj_counter:0, + size_32:0, + size_64:0, + write: + function(size,value) + {for(var i=size - 8;i >= 0;i -= 8) + this.chunk[this.chunk_idx++] = value >> i & 0xFF}, + write_at: + function(pos,size,value) + {var pos=pos; + for(var i=size - 8;i >= 0;i -= 8) + this.chunk[pos++] = value >> i & 0xFF}, + write_code: + function(size,code,value) + {this.chunk[this.chunk_idx++] = code; + for(var i=size - 8;i >= 0;i -= 8) + this.chunk[this.chunk_idx++] = value >> i & 0xFF}, + write_shared: + function(offset) + {if(offset < 1 << 8) + this.write_code(8,0x04,offset); + else + if(offset < 1 << 16) + this.write_code(16,0x05,offset); + else + this.write_code(32,0x06,offset)}, + pos:function(){return this.chunk_idx}, + finalize: + function() + {this.block_len = this.chunk_idx - 20; + this.chunk_idx = 0; + this.write(32,0x8495A6BE); + this.write(32,this.block_len); + this.write(32,this.obj_counter); + this.write(32,this.size_32); + this.write(32,this.size_64); + return this.chunk}}; + return function(v,flags) + {flags = caml_list_to_js_array(flags); + var + no_sharing=flags.indexOf(0) !== - 1, + closures=flags.indexOf(1) !== - 1; + if(closures) + globalThis.console.warn + ("in caml_output_val: flag Marshal.Closures is not supported."); + var + writer=new Writer(), + stack=[], + intern_obj_table=no_sharing?null:new MlObjectTable(); + function memo(v) + {if(no_sharing)return false; + var existing_offset=intern_obj_table.recall(v); + if(existing_offset) + {writer.write_shared(existing_offset);return true} + else + {intern_obj_table.store(v);return false}} + function extern_rec(v) + {if(v.caml_custom) + {if(memo(v))return; + var + name=v.caml_custom, + ops=caml_custom_ops[name], + sz_32_64=[0,0]; + if(! ops.serialize) + caml_invalid_argument("output_value: abstract value (Custom)"); + if(caml_legacy_custom_code) + {writer.write(8,0x12); + for(var i=0;i < name.length;i++) + writer.write(8,name.charCodeAt(i)); + writer.write(8,0); + ops.serialize(writer,v,sz_32_64)} + else + if(ops.fixed_length == undefined) + {writer.write(8,0x18); + for(var i=0;i < name.length;i++) + writer.write(8,name.charCodeAt(i)); + writer.write(8,0); + var header_pos=writer.pos(); + for(var i=0;i < 12;i++)writer.write(8,0); + ops.serialize(writer,v,sz_32_64); + writer.write_at(header_pos,32,sz_32_64[0]); + writer.write_at(header_pos + 4,32,0); + writer.write_at(header_pos + 8,32,sz_32_64[1])} + else + {writer.write(8,0x19); + for(var i=0;i < name.length;i++) + writer.write(8,name.charCodeAt(i)); + writer.write(8,0); + var old_pos=writer.pos(); + ops.serialize(writer,v,sz_32_64); + if(ops.fixed_length != writer.pos() - old_pos) + caml_failwith + ("output_value: incorrect fixed sizes specified by " + name)} + writer.size_32 += 2 + (sz_32_64[0] + 3 >> 2); + writer.size_64 += 2 + (sz_32_64[1] + 7 >> 3)} + else + if(v instanceof Array && v[0] === (v[0] | 0)) + {if(v[0] == 251) + caml_failwith("output_value: abstract value (Abstract)"); + if(v.length > 1 && memo(v))return; + if(v[0] < 16 && v.length - 1 < 8) + writer.write(8,0x80 + v[0] + (v.length - 1 << 4)); + else + writer.write_code(32,0x08,v.length - 1 << 10 | v[0]); + writer.size_32 += v.length; + writer.size_64 += v.length; + if(v.length > 1)stack.push(v,1)} + else + if(caml_is_ml_bytes(v)) + {if(! caml_is_ml_bytes(caml_string_of_jsbytes(""))) + caml_failwith + ("output_value: [Bytes.t] cannot safely be marshaled with [--enable use-js-string]"); + if(memo(v))return; + var len=caml_ml_bytes_length(v); + if(len < 0x20) + writer.write(8,0x20 + len); + else + if(len < 0x100) + writer.write_code(8,0x09,len); + else + writer.write_code(32,0x0A,len); + for(var i=0;i < len;i++) + writer.write(8,caml_bytes_unsafe_get(v,i)); + writer.size_32 += 1 + ((len + 4) / 4 | 0); + writer.size_64 += 1 + ((len + 8) / 8 | 0)} + else + if(caml_is_ml_string(v)) + {var len=caml_ml_string_length(v); + if(len < 0x20) + writer.write(8,0x20 + len); + else + if(len < 0x100) + writer.write_code(8,0x09,len); + else + writer.write_code(32,0x0A,len); + for(var i=0;i < len;i++) + writer.write(8,caml_string_unsafe_get(v,i)); + writer.size_32 += 1 + ((len + 4) / 4 | 0); + writer.size_64 += 1 + ((len + 8) / 8 | 0)} + else + if(v != (v | 0)) + {var type_of_v=typeof v; + caml_failwith + ("output_value: abstract value (" + type_of_v + ")")} + else + if(v >= 0 && v < 0x40) + writer.write(8,0X40 + v); + else + if(v >= - (1 << 7) && v < 1 << 7) + writer.write_code(8,0x00,v); + else + if(v >= - (1 << 15) && v < 1 << 15) + writer.write_code(16,0x01,v); + else + writer.write_code(32,0x02,v)} + extern_rec(v); + while(stack.length > 0) + {var i=stack.pop(),v=stack.pop(); + if(i + 1 < v.length)stack.push(v,i + 1); + extern_rec(v[i])} + if(intern_obj_table) + writer.obj_counter = intern_obj_table.objs.length; + writer.finalize(); + return writer.chunk}} + (); + function caml_string_of_array(a) + {return caml_string_of_jsbytes(caml_subarray_to_jsbytes(a,0,a.length))} + function caml_output_value_to_string(v,flags) + {return caml_string_of_array(caml_output_val(v,flags))} + function caml_raise_not_a_dir(name) + {caml_raise_sys_error(name + ": Not a directory")} + function caml_sys_system_command(cmd) + {var cmd=caml_jsstring_of_string(cmd); + if + (typeof require + != + "undefined" + && + require("child_process") + && + require("child_process").execSync) + try + {require("child_process").execSync(cmd,{stdio:"inherit"});return 0} + catch(e){return 1} + else + return 127} + function unix_isatty(fileDescriptor) + {if(fs_node_supported()) + {var tty=require("tty");return tty.isatty(fileDescriptor)?1:0} + else + return 0} + function caml_js_error_of_exception(exn) + {if(exn.js_error)return exn.js_error;return null} + function deserialize_nat(reader,sz) + {var len=reader.read32s(),nat=new MlNat(len); + for(var i=0;i < len;i++)nat.data[i] = reader.read32s(); + sz[0] = len * 4; + return nat} + function initialize_nat() + {caml_custom_ops["_nat"] + = + {deserialize:deserialize_nat,serialize:serialize_nat,hash:caml_hash_nat}} + function ml_z_succ(z1){return ml_z_normalize(bigInt(z1).next())} + function caml_gr_open_subwindow(a,b,c,d) + {caml_failwith("caml_gr_open_subwindow not Implemented")} + function unix_lstat(name) + {var root=resolve_fs_device(name); + if(! root.device.lstat)caml_failwith("unix_lstat: not implemented"); + return root.device.lstat(root.rest,true)} + var unix_lstat_64=unix_lstat; + function js_print_stdout(s) + {var s=caml_utf16_of_utf8(s),g=globalThis; + if(g.process && g.process.stdout && g.process.stdout.write) + g.process.stdout.write(s); + else + {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1); + var v=g.console; + v && v.log && v.log(s)}} + function caml_copysign_float(x,y) + {if(y == 0)y = 1 / y;x = Math.abs(x);return y < 0?- x:x} + function caml_gr_set_text_size(size) + {var s=caml_gr_state_get(); + s.text_size = size; + s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font); + return 0} + var + caml_md5_bytes= + function() + {function add(x,y){return x + y | 0} + function xx(q,a,b,x,s,t) + {a = add(add(a,q),add(x,t));return add(a << s | a >>> 32 - s,b)} + function ff(a,b,c,d,x,s,t){return xx(b & c | ~ b & d,a,b,x,s,t)} + function gg(a,b,c,d,x,s,t){return xx(b & d | c & ~ d,a,b,x,s,t)} + function hh(a,b,c,d,x,s,t){return xx(b ^ c ^ d,a,b,x,s,t)} + function ii(a,b,c,d,x,s,t){return xx(c ^ (b | ~ d),a,b,x,s,t)} + function md5(buffer,length) + {var i=length; + buffer[i >> 2] |= 0x80 << 8 * (i & 3); + for(i = (i & ~ 0x3) + 8;(i & 0x3F) < 60;i += 4) + buffer[(i >> 2) - 1] = 0; + buffer[(i >> 2) - 1] = length << 3; + buffer[i >> 2] = length >> 29 & 0x1FFFFFFF; + var w=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476]; + for(i = 0;i < buffer.length;i += 16) + {var a=w[0],b=w[1],c=w[2],d=w[3]; + a = ff(a,b,c,d,buffer[i + 0],7,0xD76AA478); + d = ff(d,a,b,c,buffer[i + 1],12,0xE8C7B756); + c = ff(c,d,a,b,buffer[i + 2],17,0x242070DB); + b = ff(b,c,d,a,buffer[i + 3],22,0xC1BDCEEE); + a = ff(a,b,c,d,buffer[i + 4],7,0xF57C0FAF); + d = ff(d,a,b,c,buffer[i + 5],12,0x4787C62A); + c = ff(c,d,a,b,buffer[i + 6],17,0xA8304613); + b = ff(b,c,d,a,buffer[i + 7],22,0xFD469501); + a = ff(a,b,c,d,buffer[i + 8],7,0x698098D8); + d = ff(d,a,b,c,buffer[i + 9],12,0x8B44F7AF); + c = ff(c,d,a,b,buffer[i + 10],17,0xFFFF5BB1); + b = ff(b,c,d,a,buffer[i + 11],22,0x895CD7BE); + a = ff(a,b,c,d,buffer[i + 12],7,0x6B901122); + d = ff(d,a,b,c,buffer[i + 13],12,0xFD987193); + c = ff(c,d,a,b,buffer[i + 14],17,0xA679438E); + b = ff(b,c,d,a,buffer[i + 15],22,0x49B40821); + a = gg(a,b,c,d,buffer[i + 1],5,0xF61E2562); + d = gg(d,a,b,c,buffer[i + 6],9,0xC040B340); + c = gg(c,d,a,b,buffer[i + 11],14,0x265E5A51); + b = gg(b,c,d,a,buffer[i + 0],20,0xE9B6C7AA); + a = gg(a,b,c,d,buffer[i + 5],5,0xD62F105D); + d = gg(d,a,b,c,buffer[i + 10],9,0x02441453); + c = gg(c,d,a,b,buffer[i + 15],14,0xD8A1E681); + b = gg(b,c,d,a,buffer[i + 4],20,0xE7D3FBC8); + a = gg(a,b,c,d,buffer[i + 9],5,0x21E1CDE6); + d = gg(d,a,b,c,buffer[i + 14],9,0xC33707D6); + c = gg(c,d,a,b,buffer[i + 3],14,0xF4D50D87); + b = gg(b,c,d,a,buffer[i + 8],20,0x455A14ED); + a = gg(a,b,c,d,buffer[i + 13],5,0xA9E3E905); + d = gg(d,a,b,c,buffer[i + 2],9,0xFCEFA3F8); + c = gg(c,d,a,b,buffer[i + 7],14,0x676F02D9); + b = gg(b,c,d,a,buffer[i + 12],20,0x8D2A4C8A); + a = hh(a,b,c,d,buffer[i + 5],4,0xFFFA3942); + d = hh(d,a,b,c,buffer[i + 8],11,0x8771F681); + c = hh(c,d,a,b,buffer[i + 11],16,0x6D9D6122); + b = hh(b,c,d,a,buffer[i + 14],23,0xFDE5380C); + a = hh(a,b,c,d,buffer[i + 1],4,0xA4BEEA44); + d = hh(d,a,b,c,buffer[i + 4],11,0x4BDECFA9); + c = hh(c,d,a,b,buffer[i + 7],16,0xF6BB4B60); + b = hh(b,c,d,a,buffer[i + 10],23,0xBEBFBC70); + a = hh(a,b,c,d,buffer[i + 13],4,0x289B7EC6); + d = hh(d,a,b,c,buffer[i + 0],11,0xEAA127FA); + c = hh(c,d,a,b,buffer[i + 3],16,0xD4EF3085); + b = hh(b,c,d,a,buffer[i + 6],23,0x04881D05); + a = hh(a,b,c,d,buffer[i + 9],4,0xD9D4D039); + d = hh(d,a,b,c,buffer[i + 12],11,0xE6DB99E5); + c = hh(c,d,a,b,buffer[i + 15],16,0x1FA27CF8); + b = hh(b,c,d,a,buffer[i + 2],23,0xC4AC5665); + a = ii(a,b,c,d,buffer[i + 0],6,0xF4292244); + d = ii(d,a,b,c,buffer[i + 7],10,0x432AFF97); + c = ii(c,d,a,b,buffer[i + 14],15,0xAB9423A7); + b = ii(b,c,d,a,buffer[i + 5],21,0xFC93A039); + a = ii(a,b,c,d,buffer[i + 12],6,0x655B59C3); + d = ii(d,a,b,c,buffer[i + 3],10,0x8F0CCC92); + c = ii(c,d,a,b,buffer[i + 10],15,0xFFEFF47D); + b = ii(b,c,d,a,buffer[i + 1],21,0x85845DD1); + a = ii(a,b,c,d,buffer[i + 8],6,0x6FA87E4F); + d = ii(d,a,b,c,buffer[i + 15],10,0xFE2CE6E0); + c = ii(c,d,a,b,buffer[i + 6],15,0xA3014314); + b = ii(b,c,d,a,buffer[i + 13],21,0x4E0811A1); + a = ii(a,b,c,d,buffer[i + 4],6,0xF7537E82); + d = ii(d,a,b,c,buffer[i + 11],10,0xBD3AF235); + c = ii(c,d,a,b,buffer[i + 2],15,0x2AD7D2BB); + b = ii(b,c,d,a,buffer[i + 9],21,0xEB86D391); + w[0] = add(a,w[0]); + w[1] = add(b,w[1]); + w[2] = add(c,w[2]); + w[3] = add(d,w[3])} + var t=new Array(16); + for(var i=0;i < 4;i++) + for(var j=0;j < 4;j++)t[i * 4 + j] = w[i] >> 8 * j & 0xFF; + return t} + return function(s,ofs,len) + {var buf=[],content=caml_ml_bytes_content(s); + if(typeof content === "string") + {var b=content; + for(var i=0;i < len;i += 4) + {var j=i + ofs; + buf[i >> 2] + = + b.charCodeAt(j) + | + b.charCodeAt(j + 1) + << + 8 + | + b.charCodeAt(j + 2) + << + 16 + | + b.charCodeAt(j + 3) + << + 24} + for(;i < len;i++) + buf[i >> 2] |= b.charCodeAt(i + ofs) << 8 * (i & 3)} + else + {var a=content; + for(var i=0;i < len;i += 4) + {var j=i + ofs; + buf[i >> 2] + = + a[j] + | + a[j + 1] + << + 8 + | + a[j + 2] + << + 16 + | + a[j + 3] + << + 24} + for(;i < len;i++)buf[i >> 2] |= a[i + ofs] << 8 * (i & 3)} + return caml_string_of_array(md5(buf,len))}} + (); + function caml_ba_set_generic(ba,i,v) + {ba.set(ba.offset(caml_js_from_array(i)),v);return 0} + function caml_ephe_set_key(x,i,v){return caml_weak_set(x,i,[0,v])} + function caml_bytes_lessequal(s1,s2) + {s1.t & 6 && caml_convert_string_to_bytes(s1); + s2.t & 6 && caml_convert_string_to_bytes(s2); + return s1.c <= s2.c?1:0} + function caml_string_lessequal(s1,s2){return caml_bytes_lessequal(s1,s2)} + function caml_string_greaterequal(s1,s2) + {return caml_string_lessequal(s2,s1)} + function caml_int64_add(x,y){return x.add(y)} + function caml_nextafter_float(x,y) + {if(isNaN(x) || isNaN(y))return NaN; + if(x == y)return y; + if(x == 0)return y < 0?- Math.pow(2,- 1074):Math.pow(2,- 1074); + var bits=caml_int64_bits_of_float(x),one=caml_int64_of_int32(1); + if(x < y == x > 0) + bits = caml_int64_add(bits,one); + else + bits = caml_int64_sub(bits,one); + return caml_int64_float_of_bits(bits)} + function caml_gr_size_y(){var s=caml_gr_state_get();return s.height} + function ml_z_fac2(i) + {if(i <= 0)caml_invalid_argument("Z.fact2: negative arguments"); + return ml_z_facM(i,2)} + function caml_ml_pos_in(chanid){return caml_ml_channels[chanid].offset} + function caml_int64_and(x,y){return x.and(y)} + function caml_sys_const_word_size(){return 32} + function ml_z_bin(n,k) + {var n=bigInt(n),k=bigInt(k),coeff=bigInt(1); + for(var x=n.minus(k).add(bigInt(1));x.leq(n);x = x.add(bigInt(1))) + coeff = coeff.multiply(x); + for(x = bigInt(1);x.leq(k);x = x.add(bigInt(1)))coeff = coeff.divide(x); + return ml_z_normalize(coeff)} + function caml_std_output(chanid,s) + {var + chan=caml_ml_channels[chanid], + str=caml_string_of_jsbytes(s), + slen=caml_ml_string_length(str); + chan.file.write(chan.offset,str,0,slen); + chan.offset += slen; + return 0} + function js_print_stderr(s) + {var s=caml_utf16_of_utf8(s),g=globalThis; + if(g.process && g.process.stdout && g.process.stdout.write) + g.process.stderr.write(s); + else + {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1); + var v=g.console; + v && v.error && v.error(s)}} + function caml_sys_open_internal(idx,output,file,flags) + {if(caml_global_data.fds === undefined) + caml_global_data.fds = new Array(); + flags = flags?flags:{}; + var info={}; + info.file = file; + info.offset = flags.append?file.length():0; + info.flags = flags; + info.output = output; + caml_global_data.fds[idx] = info; + if(! caml_global_data.fd_last_idx || idx > caml_global_data.fd_last_idx) + caml_global_data.fd_last_idx = idx; + return idx} + function caml_sys_open(name,flags,_perms) + {var f={}; + while(flags) + {switch(flags[1]) + {case 0:f.rdonly = 1;break; + case 1:f.wronly = 1;break; + case 2:f.append = 1;break; + case 3:f.create = 1;break; + case 4:f.truncate = 1;break; + case 5:f.excl = 1;break; + case 6:f.binary = 1;break; + case 7:f.text = 1;break; + case 8:f.nonblock = 1;break + } + flags = flags[2]} + if(f.rdonly && f.wronly) + caml_raise_sys_error + (caml_jsbytes_of_string(name) + + + " : flags Open_rdonly and Open_wronly are not compatible"); + if(f.text && f.binary) + caml_raise_sys_error + (caml_jsbytes_of_string(name) + + + " : flags Open_text and Open_binary are not compatible"); + var + root=resolve_fs_device(name), + file=root.device.open(root.rest,f), + idx=caml_global_data.fd_last_idx?caml_global_data.fd_last_idx:0; + return caml_sys_open_internal(idx + 1,caml_std_output,file,f)} + caml_sys_open_internal + (0,caml_std_output,new MlFakeFile(caml_create_bytes(0))); + caml_sys_open_internal + (1,js_print_stdout,new MlFakeFile(caml_create_bytes(0))); + caml_sys_open_internal + (2,js_print_stderr,new MlFakeFile(caml_create_bytes(0))); + function ml_z_gcd(z1,z2) + {return ml_z_normalize(bigInt.gcd(bigInt(z1),bigInt(z2)).abs())} + function MlStringReader(s,i) + {this.s = caml_jsbytes_of_string(s);this.i = i} + MlStringReader.prototype + = + {read8u:function(){return this.s.charCodeAt(this.i++)}, + read8s:function(){return this.s.charCodeAt(this.i++) << 24 >> 24}, + read16u: + function() + {var s=this.s,i=this.i; + this.i = i + 2; + return s.charCodeAt(i) << 8 | s.charCodeAt(i + 1)}, + read16s: + function() + {var s=this.s,i=this.i; + this.i = i + 2; + return s.charCodeAt(i) << 24 >> 16 | s.charCodeAt(i + 1)}, + read32u: + function() + {var s=this.s,i=this.i; + this.i = i + 4; + return (s.charCodeAt(i) + << + 24 + | + s.charCodeAt(i + 1) + << + 16 + | + s.charCodeAt(i + 2) + << + 8 + | + s.charCodeAt(i + 3)) + >>> + 0}, + read32s: + function() + {var s=this.s,i=this.i; + this.i = i + 4; + return s.charCodeAt(i) + << + 24 + | + s.charCodeAt(i + 1) + << + 16 + | + s.charCodeAt(i + 2) + << + 8 + | + s.charCodeAt(i + 3)}, + readstr: + function(len) + {var i=this.i; + this.i = i + len; + return caml_string_of_jsbytes(this.s.substring(i,i + len))}}; + function caml_float_of_bytes(a) + {return caml_int64_float_of_bits(caml_int64_of_bytes(a))} + function caml_input_value_from_reader(reader,ofs) + {var + _magic=reader.read32u(), + _block_len=reader.read32u(), + num_objects=reader.read32u(), + _size_32=reader.read32u(), + _size_64=reader.read32u(), + stack=[], + intern_obj_table=num_objects > 0?[]:null, + obj_counter=0; + function intern_rec() + {var code=reader.read8u(); + if(code >= 0x40) + if(code >= 0x80) + {var tag=code & 0xF,size=code >> 4 & 0x7,v=[tag]; + if(size == 0)return v; + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + stack.push(v,size); + return v} + else + return code & 0x3F; + else + if(code >= 0x20) + {var len=code & 0x1F,v=reader.readstr(len); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v} + else + switch(code) + {case 0x00:return reader.read8s(); + case 0x01:return reader.read16s(); + case 0x02:return reader.read32s(); + case 0x03:caml_failwith("input_value: integer too large");break; + case 0x04: + var offset=reader.read8u(); + return intern_obj_table[obj_counter - offset]; + case 0x05: + var offset=reader.read16u(); + return intern_obj_table[obj_counter - offset]; + case 0x06: + var offset=reader.read32u(); + return intern_obj_table[obj_counter - offset]; + case 0x08: + var + header=reader.read32u(), + tag=header & 0xFF, + size=header >> 10, + v=[tag]; + if(size == 0)return v; + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + stack.push(v,size); + return v; + case 0x13: + caml_failwith("input_value: data block too large");break; + case 0x09: + var len=reader.read8u(),v=reader.readstr(len); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + case 0x0A: + var len=reader.read32u(),v=reader.readstr(len); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + case 0x0C: + var t=new Array(8); + for(var i=0;i < 8;i++)t[7 - i] = reader.read8u(); + var v=caml_float_of_bytes(t); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + case 0x0B: + var t=new Array(8); + for(var i=0;i < 8;i++)t[i] = reader.read8u(); + var v=caml_float_of_bytes(t); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + case 0x0E: + var len=reader.read8u(),v=new Array(len + 1); + v[0] = 254; + var t=new Array(8); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + for(var i=1;i <= len;i++) + {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u(); + v[i] = caml_float_of_bytes(t)} + return v; + case 0x0D: + var len=reader.read8u(),v=new Array(len + 1); + v[0] = 254; + var t=new Array(8); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + for(var i=1;i <= len;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + v[i] = caml_float_of_bytes(t)} + return v; + case 0x07: + var len=reader.read32u(),v=new Array(len + 1); + v[0] = 254; + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + var t=new Array(8); + for(var i=1;i <= len;i++) + {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u(); + v[i] = caml_float_of_bytes(t)} + return v; + case 0x0F: + var len=reader.read32u(),v=new Array(len + 1); + v[0] = 254; + var t=new Array(8); + for(var i=1;i <= len;i++) + {for(var j=0;j < 8;j++)t[j] = reader.read8u(); + v[i] = caml_float_of_bytes(t)} + return v; + case 0x10: + case 0x11:caml_failwith("input_value: code pointer");break; + case 0x12: + case 0x18: + case 0x19: + var c,s=""; + while((c = reader.read8u()) != 0)s += String.fromCharCode(c); + var ops=caml_custom_ops[s],expected_size; + if(! ops) + caml_failwith("input_value: unknown custom block identifier"); + switch(code) + {case 0x12:break; + case 0x19: + if(! ops.fixed_length) + caml_failwith + ("input_value: expected a fixed-size custom block"); + expected_size = ops.fixed_length; + break; + case 0x18: + expected_size = reader.read32u(); + reader.read32s(); + reader.read32s(); + break + } + var old_pos=reader.i,size=[0],v=ops.deserialize(reader,size); + if(expected_size != undefined) + if(expected_size != size[0]) + caml_failwith + ("input_value: incorrect length of serialized custom block"); + if(intern_obj_table)intern_obj_table[obj_counter++] = v; + return v; + default:caml_failwith("input_value: ill-formed message")}} + var res=intern_rec(); + while(stack.length > 0) + {var size=stack.pop(),v=stack.pop(),d=v.length; + if(d < size)stack.push(v,size); + v[d] = intern_rec()} + if(typeof ofs != "number")ofs[0] = reader.i; + return res} + function caml_string_of_bytes(s){return s} + function caml_input_value_from_bytes(s,ofs) + {var + reader= + new + MlStringReader + (caml_string_of_bytes(s),typeof ofs == "number"?ofs:ofs[0]); + return caml_input_value_from_reader(reader,ofs)} + function ml_z_mul(z1,z2) + {return ml_z_normalize(bigInt(z1).multiply(bigInt(z2)))} + function ml_z_hamdist(z1,z2) + {if(bigInt(z1).isNegative() != bigInt(z2).isNegative()) + caml_raise_constant(caml_named_value("ml_z_overflow")); + if + ((z1 != (z1 | 0) || z2 != (z2 | 0)) + && + (bigInt(z1).isNegative() || bigInt(z2).isNegative())) + caml_invalid_argument("Z.hamdist: negative arguments"); + return ml_z_popcount(bigInt(z1).xor(bigInt(z2)))} + function caml_string_get(s,i) + {if(i >>> 0 >= caml_ml_string_length(s))caml_string_bound_error(); + return caml_string_unsafe_get(s,i)} + var + re_match= + function() + {var + re_word_letters= + [0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xFF, + 0x03, + 0xFE, + 0xFF, + 0xFF, + 0x87, + 0xFE, + 0xFF, + 0xFF, + 0x07, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xFF, + 0xFF, + 0x7F, + 0xFF, + 0xFF, + 0xFF, + 0x7F, + 0xFF], + opcodes= + {CHAR:0, + CHARNORM:1, + STRING:2, + STRINGNORM:3, + CHARCLASS:4, + BOL:5, + EOL:6, + WORDBOUNDARY:7, + BEGGROUP:8, + ENDGROUP:9, + REFGROUP:10, + ACCEPT:11, + SIMPLEOPT:12, + SIMPLESTAR:13, + SIMPLEPLUS:14, + GOTO:15, + PUSHBACK:16, + SETMARK:17, + CHECKPROGRESS:18}; + function is_word_letter(c) + {return re_word_letters[c >> 3] >> (c & 7) & 1} + function in_bitset(s,i) + {return caml_string_get(s,i >> 3) >> (i & 7) & 1} + function re_match_impl(re,s,pos,partial) + {var + prog=caml_js_from_array(re[1]), + cpool=caml_js_from_array(re[2]), + normtable=caml_jsbytes_of_string(re[3]), + numgroups=re[4] | 0, + numregisters=re[5] | 0, + startchars=re[6] | 0, + s=caml_array_of_string(s), + pc=0, + quit=false, + stack=[], + groups=new Array(numgroups), + re_register=new Array(numregisters); + for(var i=0;i < groups.length;i++)groups[i] = {start:- 1,end:- 1}; + groups[0].start = pos; + function backtrack() + {while(stack.length) + {var item=stack.pop(); + if(item.undo) + item.undo.obj[item.undo.prop] = item.undo.value; + else + if(item.pos){pc = item.pos.pc;pos = item.pos.txt;return}} + quit = true} + function push(item){stack.push(item)} + function accept() + {groups[0].end = pos; + var result=new Array(1 + groups.length * 2); + result[0] = 0; + for(var i=0;i < groups.length;i++) + {var g=groups[i]; + if(g.start < 0 || g.end < 0)g.start = g.end = - 1; + result[2 * i + 1] = g.start; + result[2 * i + 1 + 1] = g.end} + return result} + function prefix_match() + {if(partial)return accept();else backtrack()} + while(! quit) + {var + op=prog[pc] & 0xff, + sarg=prog[pc] >> 8, + uarg=sarg & 0xff, + c=s[pos], + group; + pc++; + switch(op) + {case opcodes.CHAR: + if(pos === s.length){prefix_match();break} + if(c === uarg)pos++;else backtrack(); + break; + case opcodes.CHARNORM: + if(pos === s.length){prefix_match();break} + if(normtable.charCodeAt(c) === uarg)pos++;else backtrack(); + break; + case opcodes.STRING: + for + (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0; + i + < + arg.length; + i++) + {if(pos === s.length){prefix_match();break} + if(c === arg.charCodeAt(i)) + c = s[++pos]; + else + {backtrack();break}} + break; + case opcodes.STRINGNORM: + for + (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0; + i + < + arg.length; + i++) + {if(pos === s.length){prefix_match();break} + if(normtable.charCodeAt(c) === arg.charCodeAt(i)) + c = s[++pos]; + else + {backtrack();break}} + break; + case opcodes.CHARCLASS: + if(pos === s.length){prefix_match();break} + if(in_bitset(cpool[uarg],c))pos++;else backtrack(); + break; + case opcodes.BOL: + if(pos > 0 && s[pos - 1] != 10)backtrack();break; + case opcodes.EOL: + if(pos < s.length && s[pos] != 10)backtrack();break; + case opcodes.WORDBOUNDARY: + if(pos == 0) + {if(pos === s.length){prefix_match();break} + if(is_word_letter(s[0]))break; + backtrack()} + else + if(pos === s.length) + {if(is_word_letter(s[pos - 1]))break;backtrack()} + else + {if(is_word_letter(s[pos - 1]) != is_word_letter(s[pos])) + break; + backtrack()} + break; + case opcodes.BEGGROUP: + group = groups[uarg]; + push({undo:{obj:group,prop:"start",value:group.start}}); + group.start = pos; + break; + case opcodes.ENDGROUP: + group = groups[uarg]; + push({undo:{obj:group,prop:"end",value:group.end}}); + group.end = pos; + break; + case opcodes.REFGROUP: + group = groups[uarg]; + if(group.start < 0 || group.end < 0){backtrack();break} + for(var i=group.start;i < group.end;i++) + {if(pos === s.length){prefix_match();break} + if(s[i] != s[pos]){backtrack();break} + pos++} + break; + case opcodes.SIMPLEOPT:if(in_bitset(cpool[uarg],c))pos++;break; + case opcodes.SIMPLESTAR: + while(in_bitset(cpool[uarg],c))c = s[++pos];break; + case opcodes.SIMPLEPLUS: + if(pos === s.length){prefix_match();break} + if(in_bitset(cpool[uarg],c)) + do c = s[++pos];while(in_bitset(cpool[uarg],c)); + else + backtrack(); + break; + case opcodes.ACCEPT:return accept(); + case opcodes.GOTO:pc = pc + sarg;break; + case opcodes.PUSHBACK:push({pos:{pc:pc + sarg,txt:pos}});break; + case opcodes.SETMARK: + push + ({undo:{obj:re_register,prop:uarg,value:re_register[uarg]}}); + re_register[uarg] = pos; + break; + case opcodes.CHECKPROGRESS: + if(re_register[uarg] === pos)backtrack();break; + default:throw new Error("Invalid bytecode")}} + return 0} + return re_match_impl} + (); + function re_search_backward(re,s,pos) + {if(pos < 0 || pos > caml_ml_string_length(s)) + caml_invalid_argument("Str.search_backward"); + while(pos >= 0){var res=re_match(re,s,pos,0);if(res)return res;pos--} + return [0]} + function ml_z_logand(z1,z2) + {return ml_z_normalize(bigInt(z1).and(bigInt(z2)))} + function caml_js_from_string(s){return caml_jsstring_of_string(s)} + function caml_ba_sub(ba,ofs,len) + {var changed_dim,mul=1; + if(ba.layout == 0) + {for(var i=1;i < ba.dims.length;i++)mul = mul * ba.dims[i]; + changed_dim = 0} + else + {for(var i=0;i < ba.dims.length - 1;i++)mul = mul * ba.dims[i]; + changed_dim = ba.dims.length - 1; + ofs = ofs - 1} + if(ofs < 0 || len < 0 || ofs + len > ba.dims[changed_dim]) + caml_invalid_argument("Bigarray.sub: bad sub-array"); + var new_dims=[]; + for(var i=0;i < ba.dims.length;i++)new_dims[i] = ba.dims[i]; + new_dims[changed_dim] = len; + mul *= caml_ba_get_size_per_element(ba.kind); + var new_data=ba.data.subarray(ofs * mul,(ofs + len) * mul); + return caml_ba_create_unsafe(ba.kind,ba.layout,new_dims,new_data)} + function caml_gc_full_major(){return 0} + function caml_bytes_set32(s,i,i32) + {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); + var + b4=0xFF & i32 >> 24, + b3=0xFF & i32 >> 16, + b2=0xFF & i32 >> 8, + b1=0xFF & i32; + caml_bytes_unsafe_set(s,i + 0,b1); + caml_bytes_unsafe_set(s,i + 1,b2); + caml_bytes_unsafe_set(s,i + 2,b3); + caml_bytes_unsafe_set(s,i + 3,b4); + return 0} + function caml_gr_sigio_signal(){return 0} + function caml_ba_uint8_set32(ba,i0,v) + {var ofs=ba.offset(i0); + if(ofs + 3 >= ba.data.length)caml_array_bound_error(); + ba.set(ofs + 0,v & 0xff); + ba.set(ofs + 1,v >>> 8 & 0xff); + ba.set(ofs + 2,v >>> 16 & 0xff); + ba.set(ofs + 3,v >>> 24 & 0xff); + return 0} + function ml_z_div_rem(z1,z2){return [0,ml_z_div(z1,z2),ml_z_rem(z1,z2)]} + function caml_sys_const_ostype_unix(){return os_type == "Unix"?1:0} + function caml_signbit_float(x){if(x == 0)x = 1 / x;return x < 0?1:0} + function caml_gr_set_line_width(w) + {var s=caml_gr_state_get(); + s.line_width = w; + s.context.lineWidth = w; + return 0} + function caml_gr_set_font(f) + {var s=caml_gr_state_get(); + s.font = f; + s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font); + return 0} + function caml_gr_set_color(color) + {var s=caml_gr_state_get(); + function convert(number) + {var str="" + number.toString(16); + while(str.length < 2)str = "0" + str; + return str} + var r=color >> 16 & 0xff,g=color >> 8 & 0xff,b=color >> 0 & 0xff; + s.color = color; + var c_str="#" + convert(r) + convert(g) + convert(b); + s.context.fillStyle = c_str; + s.context.strokeStyle = c_str; + return 0} + function caml_gr_moveto(x,y) + {var s=caml_gr_state_get();s.x = x;s.y = y;return 0} + function caml_gr_resize_window(w,h) + {var s=caml_gr_state_get(); + s.width = w; + s.height = h; + s.canvas.width = w; + s.canvas.height = h; + return 0} + function caml_gr_state_init() + {caml_gr_moveto(caml_gr_state.x,caml_gr_state.y); + caml_gr_resize_window(caml_gr_state.width,caml_gr_state.height); + caml_gr_set_line_width(caml_gr_state.line_width); + caml_gr_set_text_size(caml_gr_state.text_size); + caml_gr_set_font(caml_gr_state.font); + caml_gr_set_color(caml_gr_state.color); + caml_gr_set_window_title(caml_gr_state.title); + caml_gr_state.context.textBaseline = "bottom"} + function caml_gr_current_x(){var s=caml_gr_state_get();return s.x} + function caml_ba_kind_of_typed_array(ta) + {var g=globalThis,kind; + if(ta instanceof g.Float32Array) + kind = 0; + else + if(ta instanceof g.Float64Array) + kind = 1; + else + if(ta instanceof g.Int8Array) + kind = 2; + else + if(ta instanceof g.Uint8Array) + kind = 3; + else + if(ta instanceof g.Int16Array) + kind = 4; + else + if(ta instanceof g.Uint16Array) + kind = 5; + else + if(ta instanceof g.Int32Array) + kind = 6; + else + if(ta instanceof g.Uint32Array) + kind = 6; + else + caml_invalid_argument + ("caml_ba_kind_of_typed_array: unsupported kind"); + return kind} + function caml_ba_from_typed_array(ta) + {var kind=caml_ba_kind_of_typed_array(ta); + return caml_ba_create_unsafe(kind,0,[ta.length],ta)} + function caml_ml_seek_out(chanid,pos) + {caml_ml_flush(chanid);caml_ml_channels[chanid].offset = pos;return 0} + function caml_js_typeof(o){return typeof o} + function caml_restore_raw_backtrace(exn,bt){return 0} + function caml_gr_lineto(x,y) + {var s=caml_gr_state_get(); + s.context.beginPath(); + s.context.moveTo(s.x,s.height - s.y); + s.context.lineTo(x,s.height - y); + s.context.stroke(); + s.x = x; + s.y = y; + return 0} + function caml_js_wrap_meth_callback_unsafe(f) + {return function() + {var len=arguments.length,args=new Array(len + 1); + args[0] = this; + for(var i=0;i < len;i++)args[i + 1] = arguments[i]; + return f.apply(null,args)}} + function caml_ba_dim_3(ba){return caml_ba_dim(ba,2)} + function caml_is_special_exception(exn) + {switch(exn[2]){case - 8:case - 11:case - 12:return 1;default:return 0}} + function caml_format_exception(exn) + {var r=""; + if(exn[0] == 0) + {r += exn[1][1]; + if + (exn.length + == + 3 + && + exn[2][0] + == + 0 + && + caml_is_special_exception(exn[1])) + var bucket=exn[2],start=1; + else + var start=2,bucket=exn; + r += "("; + for(var i=start;i < bucket.length;i++) + {if(i > start)r += ", "; + var v=bucket[i]; + if(typeof v == "number") + r += v.toString(); + else + if(v instanceof MlBytes) + r += '"' + v.toString() + '"'; + else + if(typeof v == "string") + r += '"' + v.toString() + '"'; + else + r += "_"} + r += ")"} + else + if(exn[0] == 248)r += exn[1]; + return r} + function caml_fatal_uncaught_exception(err) + {if(err instanceof Array && (err[0] == 0 || err[0] == 248)) + {var handler=caml_named_value("Printexc.handle_uncaught_exception"); + if(handler) + handler(err,false); + else + {var + msg=caml_format_exception(err), + at_exit=caml_named_value("Pervasives.do_at_exit"); + if(at_exit)at_exit(0); + globalThis.console.error("Fatal error: exception " + msg + "\n")}} + else + throw err} + var caml_ephe_data_offset=2; + function caml_ephe_check_data(x) + {return x[caml_ephe_data_offset] === undefined?0:1} + function caml_bytes_get16(s,i) + {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error(); + var b1=caml_bytes_unsafe_get(s,i),b2=caml_bytes_unsafe_get(s,i + 1); + return b2 << 8 | b1} + function caml_obj_make_forward(b,v){b[0] = 250;b[1] = v;return 0} + function caml_js_from_bool(x){return ! ! x} + function caml_ml_set_channel_name(){return 0} + function caml_exp2_float(x){return Math.pow(2,x)} + function caml_gr_close_graph() + {var s=caml_gr_state_get(); + s.canvas.width = 0; + s.canvas.height = 0; + return 0} + function caml_create_string(len) + {if(len < 0)caml_invalid_argument("String.create"); + return new MlBytes(len?2:9,"",len)} + function caml_md5_string(s,ofs,len) + {return caml_md5_bytes(caml_bytes_of_string(s),ofs,len)} + function caml_md5_chan(chanid,len) + {var chan=caml_ml_channels[chanid],chan_len=chan.file.length(); + if(len < 0)len = chan_len - chan.offset; + if(chan.offset + len > chan_len)caml_raise_end_of_file(); + var buf=caml_create_bytes(len); + chan.file.read(chan.offset,buf,0,len); + return caml_md5_string(caml_string_of_bytes(buf),0,len)} + function caml_obj_dup(x) + {var l=x.length,a=new Array(l); + for(var i=0;i < l;i++)a[i] = x[i]; + return a} + function caml_weak_get_copy(x,i) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.get_copy"); + var y=caml_weak_get(x,i); + if(y === 0)return y; + var z=y[1]; + if(z instanceof Array)return [0,caml_obj_dup(z)]; + return y} + function caml_atanh_float(x){return Math.atanh(x)} + function caml_ml_output_bytes(chanid,buffer,offset,len) + {var chan=caml_ml_channels[chanid]; + if(! chan.opened) + caml_raise_sys_error("Cannot output to a closed channel"); + var bytes; + if(offset == 0 && caml_ml_bytes_length(buffer) == len) + bytes = buffer; + else + {bytes = caml_create_bytes(len); + caml_blit_bytes(buffer,offset,bytes,0,len)} + var + string=caml_string_of_bytes(bytes), + jsstring=caml_jsbytes_of_string(string), + id=jsstring.lastIndexOf("\n"); + if(id < 0) + chan.buffer += jsstring; + else + {chan.buffer += jsstring.substr(0,id + 1); + caml_ml_flush(chanid); + chan.buffer += jsstring.substr(id + 1)} + return 0} + function caml_ml_output(chanid,buffer,offset,len) + {return caml_ml_output_bytes + (chanid,caml_bytes_of_string(buffer),offset,len)} + function caml_ephe_get_data(x) + {return x[caml_ephe_data_offset] === undefined + ?0 + :[0,x[caml_ephe_data_offset]]} + function caml_xmlhttprequest_create(unit) + {var g=globalThis; + if(typeof g.XMLHttpRequest !== "undefined") + try {return new (g.XMLHttpRequest)()}catch(e){} + if(typeof g.activeXObject !== "undefined") + {try {return new (g.activeXObject)("Msxml2.XMLHTTP")}catch(e){} + try {return new (g.activeXObject)("Msxml3.XMLHTTP")}catch(e){} + try {return new (g.activeXObject)("Microsoft.XMLHTTP")}catch(e){}} + caml_failwith("Cannot create a XMLHttpRequest")} + function caml_trampoline_return(f,args) + {return {joo_tramp:f,joo_args:args}} + function caml_ml_is_buffered(c){return 1} + function caml_array_append(a1,a2) + {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l); + a[0] = 0; + var i=1,j=1; + for(;i < l1;i++)a[i] = a1[i]; + for(;i < l;i++,j++)a[i] = a2[j]; + return a} + function caml_ml_set_channel_refill(chanid,f) + {caml_ml_channels[chanid].refill = f;return 0} + function ml_z_nextprime(z1) + {z1 = bigInt(z1); + var one=bigInt(1),two=bigInt(2); + if(z1.lt(one) || z1.equals(one))return 2; + if(z1.and(one).equals(one))z1 = z1.add(two);else z1 = z1.add(one); + while(true) + if(z1.isProbablePrime(25)) + return ml_z_normalize(z1); + else + z1 = z1.add(two)} + function caml_js_expr(s) + {js_print_stderr("caml_js_expr: fallback to runtime evaluation\n"); + return eval(caml_jsstring_of_string(s))} + function caml_int64_mul(x,y){return x.mul(y)} + function caml_ml_runtime_warnings_enabled(_unit) + {return caml_runtime_warnings} + function ml_z_sub(z1,z2) + {return ml_z_normalize(bigInt(z1).subtract(bigInt(z2)))} + function ml_z_fdiv(z1,z2) + {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2); + if(z1_pos * z2_pos < 0) + if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0))) + return ml_z_sub(ml_z_div(z1,z2),bigInt(1)); + return ml_z_div(z1,z2)} + function ml_z_to_bits(z1) + {z1 = bigInt(z1).abs(); + var res=""; + while(! z1.equals(bigInt(0))) + {res += String.fromCharCode(z1.mod(bigInt(256))); + z1 = z1.divide(bigInt(256))} + while(res.length % 4 != 0)res += String.fromCharCode(0); + return caml_string_of_jsbytes(res)} + function caml_output_value_to_bytes(v,flags) + {return caml_bytes_of_array(caml_output_val(v,flags))} + function caml_eventlog_resume(unit){return 0} + function caml_hash_univ_param(count,limit,obj) + {var hash_accu=0; + function hash_aux(obj) + {limit--; + if(count < 0 || limit < 0)return; + if(obj instanceof Array && obj[0] === (obj[0] | 0)) + switch(obj[0]) + {case 248:count--;hash_accu = hash_accu * 65599 + obj[2] | 0;break; + case 250:limit++;hash_aux(obj);break; + default: + count--; + hash_accu = hash_accu * 19 + obj[0] | 0; + for(var i=obj.length - 1;i > 0;i--)hash_aux(obj[i])} + else + if(caml_is_ml_bytes(obj)) + {count--; + var content=caml_ml_bytes_content(obj); + if(typeof content === "string") + for(var b=content,l=b.length,i=0;i < l;i++) + hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0; + else + for(var a=content,l=a.length,i=0;i < l;i++) + hash_accu = hash_accu * 19 + a[i] | 0} + else + if(caml_is_ml_string(obj)) + {var jsbytes=caml_jsbytes_of_string(obj); + for(var b=jsbytes,l=jsbytes.length,i=0;i < l;i++) + hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0} + else + if(typeof obj === "string") + for(var b=obj,l=obj.length,i=0;i < l;i++) + hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0; + else + if(obj === (obj | 0)) + {count--;hash_accu = hash_accu * 65599 + obj | 0} + else + if(obj === + obj) + {count--; + var p=caml_int64_to_bytes(caml_int64_bits_of_float(obj)); + for(var i=7;i >= 0;i--)hash_accu = hash_accu * 19 + p[i] | 0} + else + if(obj && obj.caml_custom) + if + (caml_custom_ops[obj.caml_custom] + && + caml_custom_ops[obj.caml_custom].hash) + {var h=caml_custom_ops[obj.caml_custom].hash(obj) | 0; + hash_accu = hash_accu * 65599 + h | 0}} + hash_aux(obj); + return hash_accu & 0x3FFFFFFF} + function caml_string_equal(s1,s2){return caml_bytes_equal(s1,s2)} + function ml_z_divexact(z1,z2){return ml_z_div(z1,z2)} + function caml_output_value_to_buffer(s,ofs,len,v,flags) + {var t=caml_output_val(v,flags); + if(t.length > len)caml_failwith("Marshal.to_buffer: buffer overflow"); + caml_blit_bytes(t,0,s,ofs,t.length); + return 0} + function re_replacement_text(repl,groups,orig) + {var + repl=caml_jsbytes_of_string(repl), + len=repl.length, + orig=caml_jsbytes_of_string(orig), + res="", + n=0, + cur, + start, + end, + c; + while(n < len) + {cur = repl.charAt(n++); + if(cur != "\\") + res += cur; + else + {if(n == len) + caml_failwith("Str.replace: illegal backslash sequence"); + cur = repl.charAt(n++); + switch(cur) + {case "\\":res += cur;break; + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + c = + cur; + if(c * 2 >= groups.length - 1) + caml_failwith("Str.replace: reference to unmatched group"); + start = caml_array_get(groups,c * 2); + end = caml_array_get(groups,c * 2 + 1); + if(start == - 1) + caml_failwith("Str.replace: reference to unmatched group"); + res += orig.slice(start,end); + break; + default:res += "\\" + cur}}} + return caml_string_of_jsbytes(res)} + function caml_pure_js_expr(s) + {js_print_stderr("caml_pure_js_expr: fallback to runtime evaluation\n"); + return eval(caml_jsstring_of_string(s))} + function blit_nat(nat1,ofs1,nat2,ofs2,len) + {for(var i=0;i < len;i++)nat1.data[ofs1 + i] = nat2.data[ofs2 + i]; + return 0} + function caml_int64_ult(x,y){return x.ucompare(y) < 0} + function caml_int64_xor(x,y){return x.xor(y)} + function caml_bigstring_blit_ba_to_bytes(ba1,pos1,bytes2,pos2,len) + {if(12 != ba1.kind) + caml_invalid_argument + ("caml_bigstring_blit_string_to_ba: kind mismatch"); + if(len == 0)return 0; + var ofs1=ba1.offset(pos1); + if(ofs1 + len > ba1.data.length)caml_array_bound_error(); + if(pos2 + len > caml_ml_bytes_length(bytes2))caml_array_bound_error(); + var slice=ba1.data.slice(ofs1,ofs1 + len); + caml_blit_bytes(caml_bytes_of_array(slice),0,bytes2,pos2,len); + return 0} + function caml_register_named_value(nm,v) + {caml_named_values[caml_jsbytes_of_string(nm)] = v;return 0} + function jsoo_create_file_extern(name,content) + {if(globalThis.jsoo_create_file) + globalThis.jsoo_create_file(name,content); + else + {if(! globalThis.caml_fs_tmp)globalThis.caml_fs_tmp = []; + globalThis.caml_fs_tmp.push({name:name,content:content})} + return 0} + function caml_to_js_string(s){return caml_jsstring_of_string(s)} + function caml_parse_sign_and_base(s) + {var i=0,len=caml_ml_string_length(s),base=10,sign=1; + if(len > 0) + switch(caml_string_unsafe_get(s,i)) + {case 45:i++;sign = - 1;break;case 43:i++;sign = 1;break} + if(i + 1 < len && caml_string_unsafe_get(s,i) == 48) + switch(caml_string_unsafe_get(s,i + 1)) + {case 120: + case 88:base = 16;i += 2;break; + case 111: + case 79:base = 8;i += 2;break; + case 98: + case 66:base = 2;i += 2;break; + case 117: + case 85:i += 2;break + } + return [i,sign,base]} + function caml_parse_digit(c) + {if(c >= 48 && c <= 57)return c - 48; + if(c >= 65 && c <= 90)return c - 55; + if(c >= 97 && c <= 122)return c - 87; + return - 1} + function caml_int64_of_string(s) + {var + r=caml_parse_sign_and_base(s), + i=r[0], + sign=r[1], + base=r[2], + base64=caml_int64_of_int32(base), + threshold= + new MlInt64(0xffffff,0xfffffff,0xffff).udivmod(base64).quotient, + c=caml_string_unsafe_get(s,i), + d=caml_parse_digit(c); + if(d < 0 || d >= base)caml_failwith("int_of_string"); + var res=caml_int64_of_int32(d); + for(;;) + {i++; + c = caml_string_unsafe_get(s,i); + if(c == 95)continue; + d = caml_parse_digit(c); + if(d < 0 || d >= base)break; + if(caml_int64_ult(threshold,res))caml_failwith("int_of_string"); + d = caml_int64_of_int32(d); + res = caml_int64_add(caml_int64_mul(base64,res),d); + if(caml_int64_ult(res,d))caml_failwith("int_of_string")} + if(i != caml_ml_string_length(s))caml_failwith("int_of_string"); + if(base == 10 && caml_int64_ult(new MlInt64(0,0,0x8000),res)) + caml_failwith("int_of_string"); + if(sign < 0)res = caml_int64_neg(res); + return res} + function re_search_forward(re,s,pos) + {if(pos < 0 || pos > caml_ml_string_length(s)) + caml_invalid_argument("Str.search_forward"); + while(pos <= caml_ml_string_length(s)) + {var res=re_match(re,s,pos,0);if(res)return res;pos++} + return [0]} + var caml_blit_string_to_bigstring=caml_bigstring_blit_string_to_ba; + function caml_make_vect(len,init) + {if(len < 0)caml_array_bound_error(); + var len=len + 1 | 0,b=new Array(len); + b[0] = 0; + for(var i=1;i < len;i++)b[i] = init; + return b} + function caml_ml_seek_in(chanid,pos) + {var chan=caml_ml_channels[chanid]; + if(chan.refill != null)caml_raise_sys_error("Illegal seek"); + chan.offset = pos; + return 0} + function caml_sys_read_directory(name) + {var + root=resolve_fs_device(name), + a=root.device.readdir(root.rest), + l=new Array(a.length + 1); + l[0] = 0; + for(var i=0;i < a.length;i++)l[i + 1] = caml_string_of_jsbytes(a[i]); + return l} + function caml_ml_output_char(chanid,c) + {var s=caml_string_of_jsbytes(String.fromCharCode(c)); + caml_ml_output(chanid,s,0,1); + return 0} + function caml_sys_const_ostype_win32(){return os_type == "Win32"?1:0} + function caml_obj_is_block(x){return + (x instanceof Array)} + function caml_ml_input_char(chanid) + {var chan=caml_ml_channels[chanid]; + caml_ml_may_refill_input(chanid); + if(chan.offset >= chan.file.length())caml_raise_end_of_file(); + var res=chan.file.read_one(chan.offset); + chan.offset++; + return res} + function caml_obj_set_raw_field(o,i,v){return o[i + 1] = v} + function caml_js_var(x) + {var x=caml_jsstring_of_string(x); + if(! x.match(/^[a-zA-Z_$][a-zA-Z_$0-9]*(\.[a-zA-Z_$][a-zA-Z_$0-9]*)*$/)) + js_print_stderr + ('caml_js_var: "' + + + x + + + '" is not a valid JavaScript variable. continuing ..'); + return eval(x)} + function caml_trunc_float(x){return Math.trunc(x)} + function caml_zarith_marshal(writer,v,sz) + {v = bigInt(v); + var bits=v.toArray(Math.pow(2,32)); + writer.write(8,bits.isNegative?1:0); + var block=bits.value.length,len=block * 4; + writer.write(32,len); + for(var i=block - 1;i >= 0;i--) + {writer.write(8,bits.value[i] >>> 0 & 0xff); + writer.write(8,bits.value[i] >>> 8 & 0xff); + writer.write(8,bits.value[i] >>> 16 & 0xff); + writer.write(8,bits.value[i] >>> 24 & 0xff)} + sz[0] = 4 * (1 + ((len + 3) / 4 | 0)); + sz[1] = 8 * (1 + ((len + 7) / 8 | 0))} + function caml_ephe_blit_data(src,dst) + {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];return 0} + function caml_is_printable(c){return + (c > 31 && c < 127)} + function caml_equal(x,y){return + (caml_compare_val(x,y,false) == 0)} + function re_partial_match(re,s,pos) + {if(pos < 0 || pos > caml_ml_string_length(s)) + caml_invalid_argument("Str.partial_match"); + var res=re_match(re,s,pos,1); + return res?res:[0]} + function caml_sys_random_seed() + {if(globalThis.crypto) + if(typeof globalThis.crypto.getRandomValues === "function") + {var a=new (globalThis.Uint32Array)(1); + globalThis.crypto.getRandomValues(a); + return [0,a[0]]} + else + if(globalThis.crypto.randomBytes === "function") + {var + buff=globalThis.crypto.randomBytes(4), + a=new (globalThis.Uint32Array)(buff); + return [0,a[0]]} + var now=new Date().getTime(),x=now ^ 0xffffffff * Math.random(); + return [0,x]} + function caml_final_register_called_without_value(){return 0} + function caml_ba_get_2(ba,i0,i1){return ba.get(ba.offset([i0,i1]))} + function win_handle_fd(x){return x} + function caml_ba_uint8_set16(ba,i0,v) + {var ofs=ba.offset(i0); + if(ofs + 1 >= ba.data.length)caml_array_bound_error(); + ba.set(ofs + 0,v & 0xff); + ba.set(ofs + 1,v >>> 8 & 0xff); + return 0} + var win_filedescr_of_channel=caml_channel_descriptor; + function caml_js_delete(o,f){delete o[f];return 0} + function caml_int_of_string(s) + {var + r=caml_parse_sign_and_base(s), + i=r[0], + sign=r[1], + base=r[2], + len=caml_ml_string_length(s), + threshold=- 1 >>> 0, + c=i < len?caml_string_unsafe_get(s,i):0, + d=caml_parse_digit(c); + if(d < 0 || d >= base)caml_failwith("int_of_string"); + var res=d; + for(i++;i < len;i++) + {c = caml_string_unsafe_get(s,i); + if(c == 95)continue; + d = caml_parse_digit(c); + if(d < 0 || d >= base)break; + res = base * res + d; + if(res > threshold)caml_failwith("int_of_string")} + if(i != len)caml_failwith("int_of_string"); + res = sign * res; + if(base == 10 && (res | 0) != res)caml_failwith("int_of_string"); + return res | 0} + function caml_list_mount_point() + {var prev=0; + for(var i=0;i < jsoo_mount_point.length;i++) + {var old=prev; + prev = [0,caml_string_of_jsbytes(jsoo_mount_point[i].path),old]} + return prev} + var + caml_marshal_constants= + {PREFIX_SMALL_BLOCK:0x80, + PREFIX_SMALL_INT:0x40, + PREFIX_SMALL_STRING:0x20, + CODE_INT8:0x00, + CODE_INT16:0x01, + CODE_INT32:0x02, + CODE_INT64:0x03, + CODE_SHARED8:0x04, + CODE_SHARED16:0x05, + CODE_SHARED32:0x06, + CODE_BLOCK32:0x08, + CODE_BLOCK64:0x13, + CODE_STRING8:0x09, + CODE_STRING32:0x0A, + CODE_DOUBLE_BIG:0x0B, + CODE_DOUBLE_LITTLE:0x0C, + CODE_DOUBLE_ARRAY8_BIG:0x0D, + CODE_DOUBLE_ARRAY8_LITTLE:0x0E, + CODE_DOUBLE_ARRAY32_BIG:0x0F, + CODE_DOUBLE_ARRAY32_LITTLE:0x07, + CODE_CODEPOINTER:0x10, + CODE_INFIXPOINTER:0x11, + CODE_CUSTOM:0x12, + CODE_CUSTOM_LEN:0x18, + CODE_CUSTOM_FIXED:0x19}; + function caml_obj_raw_field(o,i){return o[i + 1]} + function caml_js_equals(x,y){return + (x == y)} + function bigstring_to_typed_array(bs){return bs.data} + function ml_z_fits_nativeint(z1){return ml_z_fits_int(z1)} + function caml_gr_arc_aux(ctx,cx,cy,ry,rx,a1,a2) + {while(a1 > a2)a2 += 360; + a1 /= 180; + a2 /= 180; + var + rot=0, + xPos, + yPos, + xPos_prev, + yPos_prev, + space=2, + num=(a2 - a1) * Math.PI * ((rx + ry) / 2) / space | 0, + delta=(a2 - a1) * Math.PI / num, + i=a1 * Math.PI; + for(var j=0;j <= num;j++) + {xPos + = + cx + - + rx + * + Math.sin(i) + * + Math.sin(rot * Math.PI) + + + ry + * + Math.cos(i) + * + Math.cos(rot * Math.PI); + xPos = xPos.toFixed(2); + yPos + = + cy + + + ry + * + Math.cos(i) + * + Math.sin(rot * Math.PI) + + + rx + * + Math.sin(i) + * + Math.cos(rot * Math.PI); + yPos = yPos.toFixed(2); + if(j == 0) + ctx.moveTo(xPos,yPos); + else + if(xPos_prev != xPos || yPos_prev != yPos)ctx.lineTo(xPos,yPos); + xPos_prev = xPos; + yPos_prev = yPos; + i -= delta} + return 0} + function caml_gr_fill_arc(x,y,rx,ry,a1,a2) + {var s=caml_gr_state_get(); + s.context.beginPath(); + caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2); + s.context.fill(); + return 0} + function caml_ba_slice(ba,vind) + {vind = caml_js_from_array(vind); + var num_inds=vind.length,index=[],sub_dims=[],ofs; + if(num_inds > ba.dims.length) + caml_invalid_argument("Bigarray.slice: too many indices"); + if(ba.layout == 0) + {for(var i=0;i < num_inds;i++)index[i] = vind[i]; + for(;i < ba.dims.length;i++)index[i] = 0; + sub_dims = ba.dims.slice(num_inds)} + else + {for(var i=0;i < num_inds;i++) + index[ba.dims.length - num_inds + i] = vind[i]; + for(var i=0;i < ba.dims.length - num_inds;i++)index[i] = 1; + sub_dims = ba.dims.slice(0,ba.dims.length - num_inds)} + ofs = ba.offset(index); + var + size=caml_ba_get_size(sub_dims), + size_per_element=caml_ba_get_size_per_element(ba.kind), + new_data= + ba.data.subarray + (ofs * size_per_element,(ofs + size) * size_per_element); + return caml_ba_create_unsafe(ba.kind,ba.layout,sub_dims,new_data)} + function ml_z_of_nativeint(i){return i | 0} + function caml_marshal_data_size(s,ofs) + {function get32(s,i) + {return caml_bytes_unsafe_get(s,i) + << + 24 + | + caml_bytes_unsafe_get(s,i + 1) + << + 16 + | + caml_bytes_unsafe_get(s,i + 2) + << + 8 + | + caml_bytes_unsafe_get(s,i + 3)} + if(get32(s,ofs) != (0x8495A6BE | 0)) + caml_failwith("Marshal.data_size: bad object"); + return get32(s,ofs + 4)} + function caml_input_value(chanid) + {var chan=caml_ml_channels[chanid],buf=caml_create_bytes(8); + chan.file.read(chan.offset,buf,0,8); + var len=caml_marshal_data_size(buf,0) + 20,buf=caml_create_bytes(len); + chan.file.read(chan.offset,buf,0,len); + var offset=[0],res=caml_input_value_from_bytes(buf,offset); + chan.offset = chan.offset + offset[0]; + return res} + function caml_ba_kind(ba){return ba.kind} + function caml_js_fun_call(f,a) + {switch(a.length) + {case 1:return f(); + case 2:return f(a[1]); + case 3:return f(a[1],a[2]); + case 4:return f(a[1],a[2],a[3]); + case 5:return f(a[1],a[2],a[3],a[4]); + case 6:return f(a[1],a[2],a[3],a[4],a[5]); + case 7:return f(a[1],a[2],a[3],a[4],a[5],a[6]); + case 8:return f(a[1],a[2],a[3],a[4],a[5],a[6],a[7]) + } + return f.apply(null,caml_js_from_array(a))} + function caml_gc_major_slice(work){return 0} + function ml_z_invert(a,n) + {a = bigInt(a); + n = bigInt(n); + var zero=bigInt(0),one=bigInt(1); + if(n.abs().equals(one))return 0; + if(n.equals(zero) && a.abs().equals(one))return a; + if(n.equals(zero) || a.equals(zero))caml_raise_zero_divide(); + var + x=ml_z_gcdext_intern(a,n), + r=bigInt(x[2]), + tmp=bigInt(a).multiply(r).mod(n); + if(tmp.lt(zero))tmp = tmp.add(n.abs()); + if(r.lt(zero))r = r.add(n.abs()); + if(tmp.equals(one))return ml_z_normalize(r); + caml_raise_zero_divide()} + function ml_z_powm(z1,z2,z3) + {var zero=bigInt(0),one=bigInt(1); + z1 = bigInt(z1); + z2 = bigInt(z2); + z3 = bigInt(z3); + if(z3.equals(zero))caml_raise_zero_divide(); + if(z3.abs().equals(one))return 0; + if(z2.equals(zero))return 1; + if(z2.lt(0)) + {var inv=bigInt(ml_z_invert(z1,z3)),r=inv.modPow(z2.negate(),z3); + if(r.lt(zero))r = r.add(z3.abs()); + return ml_z_normalize(r)} + else + {var r=bigInt(z1).modPow(z2,z3); + if(r.lt(zero))r = r.add(z3.abs()); + return ml_z_normalize(r)}} + function ml_z_powm_sec(z1,z2,z3) + {z3 = bigInt(z3).abs(); + var one=bigInt(1); + if(bigInt(z2).lt(one)) + caml_invalid_argument("Z.powm_sec: exponent must be positive"); + if(! bigInt(z3).and(one).equals(one)) + caml_invalid_argument("Z.powm_sec: modulus must be odd"); + return ml_z_powm(z1,z2,z3)} + function caml_js_pure_expr(f){return f()} + function compare_digits_nat(nat1,ofs1,nat2,ofs2) + {if(nat1.data[ofs1] > nat2.data[ofs2])return 1; + if(nat1.data[ofs1] < nat2.data[ofs2])return - 1; + return 0} + function caml_ml_input(chanid,s,i,l) + {var chan=caml_ml_channels[chanid],l2=chan.file.length() - chan.offset; + if(l2 == 0 && chan.refill != null)l2 = caml_ml_refill_input(chan); + if(l2 < l)l = l2; + chan.file.read(chan.offset,s,i,l); + chan.offset += l; + return l} + function caml_gr_wait_event(_evl) + {caml_failwith + ("caml_gr_wait_event not Implemented: use Graphics_js instead")} + function caml_gr_sigio_handler(){return 0} + function caml_hash_mix_bigstring(h,bs) + {return caml_hash_mix_bytes_arr(h,bs.data)} + function caml_record_backtrace(){return 0} + function unix_gmtime(t) + {var + d=new Date(t * 1000), + d_num=d.getTime(), + januaryfirst=new Date(Date.UTC(d.getUTCFullYear(),0,1)).getTime(), + doy=Math.floor((d_num - januaryfirst) / 86400000); + return [0, + d.getUTCSeconds(), + d.getUTCMinutes(), + d.getUTCHours(), + d.getUTCDate(), + d.getUTCMonth(), + d.getUTCFullYear() - 1900, + d.getUTCDay(), + doy, + false | 0]} + function caml_sys_const_backend_type() + {return [0,caml_string_of_jsbytes("js_of_ocaml")]} + function caml_sys_get_config() + {return [0,caml_string_of_jsbytes(os_type),32,0]} + function unix_time(){return Math.floor(unix_gettimeofday())} + function caml_ml_out_channels_list() + {var l=0; + for(var c=0;c < caml_ml_channels.length;c++) + if + (caml_ml_channels[c] + && + caml_ml_channels[c].opened + && + caml_ml_channels[c].out) + l = [0,caml_ml_channels[c].fd,l]; + return l} + function caml_asinh_float(x){return Math.asinh(x)} + function ml_z_hash(z1) + {var a=bigInt(z1).toArray(Math.pow(2,32)),acc=0; + for(var i=0;i < a.value.length;i++) + acc = caml_hash_mix_int(acc,a.value[i]); + if(a.value.length % 2 != 0)acc = caml_hash_mix_int(acc,0); + if(a.isNegative)acc = acc + 1; + return acc | 0} + function bigstring_of_array_buffer(ab) + {var ta=new (globalThis.Uint8Array)(ab); + return caml_ba_create_unsafe(12,0,[ta.length],ta)} + function caml_mod(x,y){if(y == 0)caml_raise_zero_divide();return x % y} + function caml_ba_init(){return 0} + function re_string_match(re,s,pos) + {if(pos < 0 || pos > caml_ml_string_length(s)) + caml_invalid_argument("Str.string_match"); + var res=re_match(re,s,pos,0); + return res?res:[0]} + function BigStringReader(bs,i){this.s = bs;this.i = i} + BigStringReader.prototype + = + {read8u:function(){return caml_ba_get_1(this.s,this.i++)}, + read8s:function(){return caml_ba_get_1(this.s,this.i++) << 24 >> 24}, + read16u: + function() + {var s=this.s,i=this.i; + this.i = i + 2; + return caml_ba_get_1(s,i) << 8 | caml_ba_get_1(s,i + 1)}, + read16s: + function() + {var s=this.s,i=this.i; + this.i = i + 2; + return caml_ba_get_1(s,i) << 24 >> 16 | caml_ba_get_1(s,i + 1)}, + read32u: + function() + {var s=this.s,i=this.i; + this.i = i + 4; + return (caml_ba_get_1(s,i) + << + 24 + | + caml_ba_get_1(s,i + 1) + << + 16 + | + caml_ba_get_1(s,i + 2) + << + 8 + | + caml_ba_get_1(s,i + 3)) + >>> + 0}, + read32s: + function() + {var s=this.s,i=this.i; + this.i = i + 4; + return caml_ba_get_1(s,i) + << + 24 + | + caml_ba_get_1(s,i + 1) + << + 16 + | + caml_ba_get_1(s,i + 2) + << + 8 + | + caml_ba_get_1(s,i + 3)}, + readstr: + function(len) + {var i=this.i,arr=new Array(len); + for(var j=0;j < len;j++)arr[j] = caml_ba_get_1(this.s,i + j); + this.i = i + len; + return caml_string_of_array(arr)}}; + function caml_gr_dump_image(im) + {var data=[0]; + for(var i=0;i < im.height;i++) + {data[i + 1] = [0]; + for(var j=0;j < im.width;j++) + {var + o=i * (im.width * 4) + j * 4, + r=im.data[o + 0], + g=im.data[o + 1], + b=im.data[o + 2]; + data[i + 1][j + 1] = (r << 16) + (g << 8) + b}} + return data} + function caml_ba_get_generic(ba,i) + {var ofs=ba.offset(caml_js_from_array(i));return ba.get(ofs)} + function caml_get_exception_backtrace(){return 0} + function caml_format_float(fmt,x) + {function toFixed(x,dp) + {if(Math.abs(x) < 1.0) + return x.toFixed(dp); + else + {var e=parseInt(x.toString().split("+")[1]); + if(e > 20) + {e -= 20; + x /= Math.pow(10,e); + x += new Array(e + 1).join("0"); + if(dp > 0)x = x + "." + new Array(dp + 1).join("0"); + return x} + else + return x.toFixed(dp)}} + var s,f=caml_parse_format(fmt),prec=f.prec < 0?6:f.prec; + if(x < 0 || x == 0 && 1 / x == - Infinity){f.sign = - 1;x = - x} + if(isNaN(x)) + {s = "nan";f.filler = " "} + else + if(! isFinite(x)) + {s = "inf";f.filler = " "} + else + switch(f.conv) + {case "e": + var s=x.toExponential(prec),i=s.length; + if(s.charAt(i - 3) == "e") + s = s.slice(0,i - 1) + "0" + s.slice(i - 1); + break; + case "f":s = toFixed(x,prec);break; + case "g": + prec = prec?prec:1; + s = x.toExponential(prec - 1); + var j=s.indexOf("e"),exp=+ s.slice(j + 1); + if(exp < - 4 || x >= 1e21 || x.toFixed(0).length > prec) + {var i=j - 1; + while(s.charAt(i) == "0")i--; + if(s.charAt(i) == ".")i--; + s = s.slice(0,i + 1) + s.slice(j); + i = s.length; + if(s.charAt(i - 3) == "e") + s = s.slice(0,i - 1) + "0" + s.slice(i - 1); + break} + else + {var p=prec; + if(exp < 0) + {p -= exp + 1;s = x.toFixed(p)} + else + while(s = x.toFixed(p),s.length > prec + 1)p--; + if(p) + {var i=s.length - 1; + while(s.charAt(i) == "0")i--; + if(s.charAt(i) == ".")i--; + s = s.slice(0,i + 1)}} + break + } + return caml_finish_formatting(f,s)} + function caml_mount_autoload(name,f) + {var path=caml_make_path(name),name=caml_trailing_slash(path.join("/")); + jsoo_mount_point.push({path:name,device:new MlFakeDevice(name,f)}); + return 0} + function ml_z_equal(z1,z2){return bigInt(z1).equals(bigInt(z2))?1:0} + function ml_z_fits_int64(z1) + {z1 = bigInt(z1); + return z1.compare(bigInt("9223372036854775807")) + <= + 0 + && + z1.compare(bigInt("-9223372036854775808")) + >= + 0 + ?1 + :0} + function caml_bigstring_blit_ba_to_ba(ba1,pos1,ba2,pos2,len) + {if(12 != ba1.kind) + caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch"); + if(12 != ba2.kind) + caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch"); + if(len == 0)return 0; + var ofs1=ba1.offset(pos1),ofs2=ba2.offset(pos2); + if(ofs1 + len > ba1.data.length)caml_array_bound_error(); + if(ofs2 + len > ba2.data.length)caml_array_bound_error(); + var slice=ba1.data.subarray(ofs1,ofs1 + len); + ba2.data.set(slice,pos2); + return 0} + var caml_blit_bigstring_to_bigstring=caml_bigstring_blit_ba_to_ba; + function ml_z_sqrt_rem(z) + {z = bigInt(z); + var zero=bigInt(0); + if(z.lt(zero)) + caml_invalid_argument("Z.sqrt_rem: square root of a negative number"); + var + root=bigInt(ml_z_root(z,2)), + mul=root.multiply(root), + diff=z.subtract(mul); + return [0,ml_z_normalize(root),ml_z_normalize(diff)]} + function caml_string_lessthan(s1,s2){return caml_bytes_lessthan(s1,s2)} + function caml_string_greaterthan(s1,s2) + {return caml_string_lessthan(s2,s1)} + function caml_div(x,y) + {if(y == 0)caml_raise_zero_divide();return x / y | 0} + function caml_ephe_get_data_copy(x) + {return x[caml_ephe_data_offset] === undefined + ?0 + :[0,caml_obj_dup(x[caml_ephe_data_offset])]} + function caml_memprof_start(rate,stack_size,tracker){return 0} + function ml_z_perfect_square(z) + {z = bigInt(z); + if(z.lt(bigInt(0)))return 0; + var root=bigInt(ml_z_root(z,2)); + return root.multiply(root).eq(z)?1:0} + function caml_sys_get_argv(a){return [0,caml_argv[1],caml_argv]} + function caml_js_to_bool(x){return + x} + function caml_gr_create_image(x,y) + {var s=caml_gr_state_get();return s.context.createImageData(x,y)} + var caml_ephe_get_key_copy=caml_weak_get_copy; + function caml_lessthan(x,y){return + (caml_compare_val(x,y,false) < 0)} + function caml_raw_backtrace_next_slot(){return 0} + function ml_z_to_nativeint(z1){return ml_z_to_int(z1)} + function caml_register_global(n,v,name_opt) + {if(name_opt && globalThis.toplevelReloc) + n = globalThis.toplevelReloc(name_opt); + caml_global_data[n + 1] = v; + if(name_opt)caml_global_data[name_opt] = v} + function mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3,len3) + {var carry=0; + for(var i=0;i < len3;i++) + carry + += + mult_digit_nat(nat1,ofs1 + i,len1 - i,nat2,ofs2,len2,nat3,ofs3 + i); + return carry} + function square_nat(nat1,ofs1,len1,nat2,ofs2,len2) + {var carry=0; + carry += add_nat(nat1,ofs1,len1,nat1,ofs1,len1,0); + carry += mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat2,ofs2,len2); + return carry} + function caml_js_from_float(x){return x} + function caml_floatarray_create(len) + {if(len < 0)caml_array_bound_error(); + var len=len + 1 | 0,b=new Array(len); + b[0] = 254; + for(var i=1;i < len;i++)b[i] = 0; + return b} + function caml_gc_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} + function caml_get_major_credit(n){return 0} + function caml_sys_modify_argv(arg){caml_argv = arg;return 0} + var caml_method_cache=[]; + function caml_get_public_method(obj,tag,cacheid) + {var meths=obj[1],ofs=caml_method_cache[cacheid]; + if(ofs === undefined) + for(var i=caml_method_cache.length;i < cacheid;i++) + caml_method_cache[i] = 0; + else + if(meths[ofs] === tag)return meths[ofs - 1]; + var li=3,hi=meths[1] * 2 + 1,mi; + while(li < hi) + {mi = li + hi >> 1 | 1;if(tag < meths[mi + 1])hi = mi - 2;else li = mi} + caml_method_cache[cacheid] = li + 1; + return tag == meths[li + 1]?meths[li]:0} + function caml_js_get_console() + {var + c=globalThis.console?globalThis.console:{}, + m= + ["log", + "debug", + "info", + "warn", + "error", + "assert", + "dir", + "dirxml", + "trace", + "group", + "groupCollapsed", + "groupEnd", + "time", + "timeEnd"]; + function f(){} + for(var i=0;i < m.length;i++)if(! c[m[i]])c[m[i]] = f; + return c} + function caml_sys_unsafe_getenv(name){return caml_sys_getenv(name)} + function caml_ml_open_descriptor_in(fd) + {var data=caml_global_data.fds[fd]; + if(data.flags.wronly)caml_raise_sys_error("fd " + fd + " is writeonly"); + var refill=null; + if(fd == 0 && fs_node_supported()) + {var fs=require("fs"); + refill + = + function(){return caml_string_of_jsstring(fs.readFileSync(0,"utf8"))}} + var + channel= + {file:data.file, + offset:data.offset, + fd:fd, + opened:true, + out:false, + refill:refill}; + caml_ml_channels[channel.fd] = channel; + return channel.fd} + function bigstring_of_typed_array(ba) + {var + ta= + new + (globalThis.Uint8Array) + (ba.buffer,ba.byteOffset,ba.length * ba.BYTES_PER_ELEMENT); + return caml_ba_create_unsafe(12,0,[ta.length],ta)} + function caml_round_float(x){return Math.round(x)} + function ml_z_of_bits(z1) + {var r=bigInt.zero,base1=bigInt(256),base=bigInt.one; + for(var i=0;i < caml_ml_string_length(z1);i++) + {var d=caml_string_unsafe_get(z1,i); + r = bigInt(base).multiply(d).add(r); + base = bigInt(base).multiply(base1)} + return ml_z_normalize(r)} + function unix_stat(name) + {var root=resolve_fs_device(name); + if(! root.device.stat)caml_failwith("unix_stat: not implemented"); + return root.device.stat(root.rest,true)} + var unix_stat_64=unix_stat; + function caml_ojs_new_arr(c,a) + {switch(a.length) + {case 0:return new c(); + case 1:return new c(a[0]); + case 2:return new c(a[0],a[1]); + case 3:return new c(a[0],a[1],a[2]); + case 4:return new c(a[0],a[1],a[2],a[3]); + case 5:return new c(a[0],a[1],a[2],a[3],a[4]); + case 6:return new c(a[0],a[1],a[2],a[3],a[4],a[5]); + case 7:return new c(a[0],a[1],a[2],a[3],a[4],a[5],a[6]) + } + function F(){return c.apply(this,a)} + F.prototype = c.prototype; + return new F()} + function complement_nat(nat,ofs,len) + {for(var i=0;i < len;i++) + nat.data[ofs + i] = (- 1 >>> 0) - (nat.data[ofs + i] >>> 0)} + function ml_z_logxor(z1,z2) + {return ml_z_normalize(bigInt(z1).xor(bigInt(z2)))} + var caml_js_regexps={amp:/&/g,lt:/ 1023) + {exp -= 1023; + x *= Math.pow(2,1023); + if(exp > 1023){exp -= 1023;x *= Math.pow(2,1023)}} + if(exp < - 1023){exp += 1023;x *= Math.pow(2,- 1023)} + x *= Math.pow(2,exp); + return x} + function caml_gr_state_set(ctx) + {caml_gr_state = ctx;caml_gr_state_init();return 0} + function caml_zarith_unmarshal(reader,sz) + {var negate; + switch(reader.read8u()) + {case 1:negate = true;break; + case 0:negate = false;break; + default:caml_failwith("input_value: z (malformed input)")} + var len=reader.read32u(),x=bigInt(0); + for(var i=0;i < len / 4;i++) + {var y=bigInt(reader.read8u()); + y = y.add(reader.read8u() << 8); + y = y.add(reader.read8u() << 16); + y = y.add(reader.read8u() << 24 >>> 0); + x = y.shiftLeft(i * 32).add(x)} + if(negate)x = x.negate(); + sz[0] = len + 4; + return ml_z_normalize(x)} + function ml_z_trailing_zeros(z) + {z = bigInt(z).abs(); + var zero=bigInt(0),one=bigInt(1); + if(z.equals(zero))return 0x7fffffff; + var i=0; + z = z.xor(z.prev()).shiftRight(1); + for(i = 0;! z.equals(bigInt.zero);i++)z = z.shiftRight(1); + return i} + function caml_js_wrap_callback_strict(arity,f) + {return function() + {var n=arguments.length; + if(n == arity && f.length == arity)return f.apply(null,arguments); + var args=new Array(arity),len=Math.min(arguments.length,arity); + for(var i=0;i < len;i++)args[i] = arguments[i]; + return caml_call_gen(f,args)}} + function caml_gc_minor_words(unit){return 0} + function caml_ba_set_1(ba,i0,v){ba.set(ba.offset(i0),v);return 0} + function caml_get_current_callstack(){return [0]} + function land_digit_nat(nat1,ofs1,nat2,ofs2) + {nat1.data[ofs1] &= nat2.data[ofs2];return 0} + function caml_int64_mod(x,y){return x.mod(y)} + function unix_readlink(name) + {var root=resolve_fs_device(name); + if(! root.device.readlink) + caml_failwith("unix_readlink: not implemented"); + return root.device.readlink(root.rest,true)} + function caml_obj_set_tag(x,tag){x[0] = tag;return 0} + function caml_int32_bswap(x) + {return (x & 0x000000FF) + << + 24 + | + (x & 0x0000FF00) + << + 8 + | + (x & 0x00FF0000) + >>> + 8 + | + (x & 0xFF000000) + >>> + 24} + function win_startup(){} + function caml_ba_set_3(ba,i0,i1,i2,v) + {ba.set(ba.offset([i0,i1,i2]),v);return 0} + function ml_z_jacobi(n,k) + {n = bigInt(n); + k = bigInt(k); + if(k.leq(bigInt(0)) || k.mod(bigInt(2)).neq(bigInt(1))) + caml_invalid_argument("Z.jacobi: second argument is negative or even"); + n = n.mod(k); + if(n.lt(bigInt(0)))n = n.add(k); + var t=1; + while(! n.equals(bigInt(0))) + {while(n.isDivisibleBy(bigInt(2))) + {n = n.divide(bigInt(2)); + var r=k.mod(bigInt(8)); + if(r.equals(bigInt(3)) || r.equals(bigInt(5)))t = - t} + var n1=n,k1=k; + n = k1; + k = n1; + if + (n.mod(bigInt(4)).equals(bigInt(3)) + && + k.mod(bigInt(4)).equals(bigInt(3))) + t = - t; + n = n.mod(k)} + return k.equals(bigInt(1))?t:0} + function ml_z_legendre(a,b){return ml_z_jacobi(a,b)} + function caml_js_instanceof(o,c){return o instanceof c?1:0} + function caml_get_major_bucket(n){return 0} + var caml_blit_bigstring_to_string=caml_bigstring_blit_ba_to_bytes; + function set_digit_nat_native(nat,ofs,digit) + {nat.data[ofs] = digit;return 0} + function nth_digit_nat_native(nat,ofs){return nat.data[ofs]} + function caml_string_set64(s,i,i64){return caml_bytes_set64(s,i,i64)} + function caml_gr_state_create(canvas,w,h) + {var context=canvas.getContext("2d"); + return {context:context, + canvas:canvas, + x:0, + y:0, + width:w, + height:h, + line_width:1, + font:caml_string_of_jsbytes("fixed"), + text_size:26, + color:0x000000, + title:caml_string_of_jsbytes("")}} + function caml_js_wrap_callback(f) + {return function() + {var len=arguments.length; + if(len > 0) + {var args=new Array(len); + for(var i=0;i < len;i++)args[i] = arguments[i]; + return caml_call_gen(f,args)} + else + return caml_call_gen(f,[undefined])}} + function caml_gr_draw_arc(x,y,rx,ry,a1,a2) + {var s=caml_gr_state_get(); + s.context.beginPath(); + caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2); + s.context.stroke(); + return 0} + function caml_ba_map_file(vfd,kind,layout,shared,dims,pos) + {caml_failwith("caml_ba_map_file not implemented")} + function caml_ba_map_file_bytecode(argv,argn) + {return caml_ba_map_file(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5])} + function unix_symlink(to_dir,src,dst) + {var src_root=resolve_fs_device(src),dst_root=resolve_fs_device(dst); + if(src_root.device != dst_root.device) + caml_failwith("unix_symlink: cannot symlink between two filesystems"); + if(! src_root.device.symlink) + caml_failwith("unix_symlink: not implemented"); + return src_root.device.symlink(to_dir,src_root.rest,dst_root.rest,true)} + function caml_ba_create_from(data1,data2,jstyp,kind,layout,dims) + {if(data2 || caml_ba_get_size_per_element(kind) == 2) + caml_invalid_argument + ("caml_ba_create_from: use return caml_ba_create_unsafe"); + return caml_ba_create_unsafe(kind,layout,dims,data1)} + function caml_tanh_float(x){return Math.tanh(x)} + function caml_gr_draw_str(str) + {var s=caml_gr_state_get(),m=s.context.measureText(str),dx=m.width; + s.context.fillText(str,s.x,s.height - s.y); + s.x += dx | 0; + return 0} + function caml_gr_draw_string(str) + {caml_gr_draw_str(caml_jsstring_of_string(str));return 0} + function ml_z_primorial(a) + {var one=bigInt(1),two=bigInt(2),z1=one,res=one; + a = bigInt(a); + while(z1.leq(a)) + {if(z1.isProbablePrime(25))res = res.multiply(z1); + if(z1.equals(one) || z1.equals(two)) + z1 = z1.add(one); + else + z1 = z1.add(two)} + return ml_z_normalize(res)} + function caml_gr_draw_char(c) + {caml_gr_draw_str(String.fromCharCode(c));return 0} + function caml_unmount(name) + {var + path=caml_make_path(name), + name=caml_trailing_slash(path.join("/")), + idx=- 1; + for(var i=0;i < jsoo_mount_point.length;i++) + if(jsoo_mount_point[i].path == name)idx = i; + if(idx > - 1)jsoo_mount_point.splice(idx,1); + return 0} + function ml_z_fib(i) + {if(i < 0)caml_invalid_argument("Z.fib: negative arguments"); + if(i == 0 || i == 1)return i; + var a=bigInt(0),b=bigInt(1); + for(var k=1;k < i;k++){var b2=b;b = a.add(b);a = b2} + return ml_z_normalize(b)} + function caml_input_value_from_string(s,ofs) + {var reader=new MlStringReader(s,typeof ofs == "number"?ofs:ofs[0]); + return caml_input_value_from_reader(reader,ofs)} + function caml_ml_pos_in_64(chanid) + {return caml_int64_of_float(caml_ml_channels[chanid].offset)} + function caml_gr_draw_image(im,x,y) + {var s=caml_gr_state_get(); + if(! im.image) + {var canvas=document.createElement("canvas"); + canvas.width = s.width; + canvas.height = s.height; + canvas.getContext("2d").putImageData(im,0,0); + var image=new (globalThis.Image)(); + image.onload + = + function() + {s.context.drawImage(image,x,s.height - im.height - y); + im.image = image}; + image.src = canvas.toDataURL("image/png")} + else + s.context.drawImage(im.image,x,s.height - im.height - y); + return 0} + function caml_register_channel_for_spacetime(_channel){return 0} + function caml_string_set(s,i,c) + {if(i >>> 0 >= s.l)caml_string_bound_error(); + return caml_string_unsafe_set(s,i,c)} + function caml_sys_rmdir(name) + {var root=resolve_fs_device(name);root.device.rmdir(root.rest);return 0} + function caml_ml_pos_out(chanid) + {caml_ml_flush(chanid);return caml_ml_channels[chanid].offset} + function caml_spacetime_enabled(_unit){return 0} + function caml_bytes_notequal(s1,s2){return 1 - caml_bytes_equal(s1,s2)} + function caml_runtime_parameters(_unit){return caml_string_of_jsbytes("")} + function caml_js_object(a) + {var o={}; + for(var i=1;i < a.length;i++) + {var p=a[i];o[caml_jsstring_of_string(p[1])] = p[2]} + return o} + function caml_ba_create(kind,layout,dims_ml) + {var + dims=caml_js_from_array(dims_ml), + data=caml_ba_create_buffer(kind,caml_ba_get_size(dims)); + return caml_ba_create_unsafe(kind,layout,dims,data)} + function caml_weak_blit(a1,i1,a2,i2,len) + {caml_array_blit + (a1,caml_ephe_key_offset + i1 - 1,a2,caml_ephe_key_offset + i2 - 1,len); + return 0} + function caml_gr_remember_mode() + {caml_failwith("caml_gr_remember_mode not Implemented")} + function caml_fma_float(x,y,z) + {var + SPLIT=Math.pow(2,27) + 1, + MIN_VALUE=Math.pow(2,- 1022), + EPSILON=Math.pow(2,- 52), + C=416, + A=Math.pow(2,+ C), + B=Math.pow(2,- C); + function multiply(a,b) + {var + at=SPLIT * a, + ahi=at - (at - a), + alo=a - ahi, + bt=SPLIT * b, + bhi=bt - (bt - b), + blo=b - bhi, + p=a * b, + e=ahi * bhi - p + ahi * blo + alo * bhi + alo * blo; + return {p:p,e:e}} + function add(a,b) + {var s=a + b,v=s - a,e=a - (s - v) + (b - v);return {s:s,e:e}} + function adjust(x,y) + {return x !== 0 && y !== 0 && SPLIT * x - (SPLIT * x - x) === x + ?x * (1 + (x < 0?- 1:+ 1) * (y < 0?- 1:+ 1) * EPSILON) + :x} + if + (x + === + 0 + || + x + !== + x + || + x + === + + + (1 / 0) + || + x + === + - + (1 / 0) + || + y + === + 0 + || + y + !== + y + || + y + === + + + (1 / 0) + || + y + === + - + (1 / 0)) + return x * y + z; + if(z === 0)return x * y; + if(z !== z || z === + (1 / 0) || z === - (1 / 0))return z; + var scale=1; + while(Math.abs(x) > A){scale *= A;x *= B} + while(Math.abs(y) > A){scale *= A;y *= B} + if(scale === 1 / 0)return x * y * scale; + while(Math.abs(x) < B){scale *= B;x *= A} + while(Math.abs(y) < B){scale *= B;y *= A} + if(scale === 0)return z; + var xs=x,ys=y,zs=z / scale; + if(Math.abs(zs) > Math.abs(xs * ys) * 4 / EPSILON)return z; + if(Math.abs(zs) < Math.abs(xs * ys) * EPSILON / 4 * EPSILON / 4) + zs = (z < 0?- 1:+ 1) * MIN_VALUE; + var + xy=multiply(xs,ys), + s=add(xy.p,zs), + u=add(xy.e,s.e), + i=add(s.s,u.s), + f=i.s + adjust(i.e,u.e); + if(f === 0)return f; + var fs=f * scale; + if(Math.abs(fs) > MIN_VALUE)return fs; + return fs + adjust(f - fs / scale,i.e) * scale} + function caml_bswap16(x){return (x & 0x00FF) << 8 | (x & 0xFF00) >> 8} + function caml_ml_set_binary_mode(chanid,mode) + {var chan=caml_ml_channels[chanid],data=caml_global_data.fds[chan.fd]; + data.flags.text = ! mode; + data.flags.binary = mode; + return 0} + function caml_final_register(){return 0} + function caml_gr_draw_rect(x,y,w,h) + {var s=caml_gr_state_get(); + s.context.strokeRect(x,s.height - y,w,- h); + return 0} + function caml_string_get16(s,i) + {if(i >>> 0 >= caml_ml_string_length(s) - 1)caml_string_bound_error(); + var b1=caml_string_unsafe_get(s,i),b2=caml_string_unsafe_get(s,i + 1); + return b2 << 8 | b1} + function caml_ephe_unset_data(x,data) + {x[caml_ephe_data_offset] = undefined;return 0} + function caml_output_value(chanid,v,flags) + {var s=caml_output_value_to_string(v,flags); + caml_ml_output(chanid,s,0,caml_ml_string_length(s)); + return 0} + function caml_ba_get_3(ba,i0,i1,i2){return ba.get(ba.offset([i0,i1,i2]))} + var caml_ephe_blit_key=caml_weak_blit; + function ml_z_to_int32(z1){return ml_z_to_int(z1)} + var caml_initial_time=new Date().getTime() * 0.001; + function caml_sys_time() + {var now=new Date().getTime();return now * 0.001 - caml_initial_time} + function caml_sys_time_include_children(b){return caml_sys_time()} + function caml_check_bound(array,index) + {if(index >>> 0 >= array.length - 1)caml_array_bound_error(); + return array} + function unix_getpwuid(unit){caml_raise_not_found()} + function ml_z_compare(z1,z2){return bigInt(z1).compare(bigInt(z2))} + function caml_hash_mix_string(h,v) + {return caml_hash_mix_jsbytes(h,caml_jsbytes_of_string(v))} + function caml_hash(count,limit,seed,obj) + {var queue,rd,wr,sz,num,h,v,i,len; + sz = limit; + if(sz < 0 || sz > 256)sz = 256; + num = count; + h = seed; + queue = [obj]; + rd = 0; + wr = 1; + while(rd < wr && num > 0) + {v = queue[rd++]; + if(v && v.caml_custom) + {if + (caml_custom_ops[v.caml_custom] + && + caml_custom_ops[v.caml_custom].hash) + {var hh=caml_custom_ops[v.caml_custom].hash(v); + h = caml_hash_mix_int(h,hh); + num--}} + else + if(v instanceof Array && v[0] === (v[0] | 0)) + switch(v[0]) + {case 248:h = caml_hash_mix_int(h,v[2]);num--;break; + case 250:queue[--rd] = v[1];break; + default: + var tag=v.length - 1 << 10 | v[0]; + h = caml_hash_mix_int(h,tag); + for(i = 1,len = v.length;i < len;i++) + {if(wr >= sz)break;queue[wr++] = v[i]} + break} + else + if(caml_is_ml_bytes(v)) + {h = caml_hash_mix_bytes(h,v);num--} + else + if(caml_is_ml_string(v)) + {h = caml_hash_mix_string(h,v);num--} + else + if(typeof v === "string") + {h = caml_hash_mix_jsbytes(h,v);num--} + else + if(v === (v | 0)) + {h = caml_hash_mix_int(h,v + v + 1);num--} + else + if(v === + v){h = caml_hash_mix_float(h,v);num--}} + h = caml_hash_mix_final(h); + return h & 0x3FFFFFFF} + function caml_obj_tag(x) + {if(x instanceof Array && x[0] == x[0] >>> 0) + return x[0]; + else + if(caml_is_ml_bytes(x)) + return 252; + else + if(caml_is_ml_string(x)) + return 252; + else + if(x instanceof Function || typeof x == "function") + return 247; + else + if(x && x.caml_custom)return 255;else return 1000} + function caml_ba_to_typed_array(ba){return ba.data} + function caml_bytes_get32(s,i) + {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); + var + b1=caml_bytes_unsafe_get(s,i), + b2=caml_bytes_unsafe_get(s,i + 1), + b3=caml_bytes_unsafe_get(s,i + 2), + b4=caml_bytes_unsafe_get(s,i + 3); + return b4 << 24 | b3 << 16 | b2 << 8 | b1} + function caml_frexp_float(x) + {if(x == 0 || ! isFinite(x))return [0,x,0]; + var neg=x < 0; + if(neg)x = - x; + var exp=Math.max(- 1023,jsoo_floor_log2(x) + 1); + x *= Math.pow(2,- exp); + while(x < 0.5){x *= 2;exp--} + while(x >= 1){x *= 0.5;exp++} + if(neg)x = - x; + return [0,x,exp]} + function ml_z_pred(z1){return ml_z_normalize(bigInt(z1).prev())} + function caml_string_get64(s,i) + {if(i >>> 0 >= caml_ml_string_length(s) - 7)caml_string_bound_error(); + var a=new Array(8); + for(var j=0;j < 8;j++)a[7 - j] = caml_string_unsafe_get(s,i + j); + return caml_int64_of_bytes(a)} + function caml_js_error_option_of_exception(exn) + {if(exn.js_error)return [0,exn.js_error];return 0} + function caml_ml_pos_out_64(chanid) + {caml_ml_flush(chanid); + return caml_int64_of_float(caml_ml_channels[chanid].offset)} + function ml_z_extract(z1,pos,len) + {z1 = bigInt(z1); + return ml_z_normalize + (z1.shiftRight(pos).and(bigInt(2).pow(len).subtract(1)))} + function ml_z_remove(a,b) + {var zero=bigInt(0),one=bigInt(1); + a = bigInt(a); + b = bigInt(b); + if(b.equals(zero))caml_raise_zero_divide(); + if(a.equals(zero) || b.abs().equals(one))return [0,a,0]; + var i=0; + while(a.isDivisibleBy(b)){a = a.divide(b);i++} + return [0,ml_z_normalize(a),i]} + function ml_z_of_float(f1) + {if(f1 == Infinity || f1 == - Infinity || f1 != f1) + caml_raise_constant(caml_named_value("ml_z_overflow")); + return ml_z_normalize(bigInt(f1 < 0?Math.ceil(f1):Math.floor(f1)))} + function ml_z_lognot(z1){return ml_z_normalize(bigInt(z1).not())} + function caml_gr_close_subwindow(a) + {caml_failwith("caml_gr_close_subwindow not Implemented")} + function caml_floatarray_blit(a1,i1,a2,i2,len) + {if(i2 <= i1) + for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j]; + else + for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j]; + return 0} + function caml_get_minor_free(unit){return 0} + function caml_set_static_env(k,v) + {if(! globalThis.jsoo_static_env)globalThis.jsoo_static_env = {}; + globalThis.jsoo_static_env[k] = v; + return 0} + function caml_ba_change_layout(ba,layout) + {if(ba.layout == layout)return ba; + var new_dims=[]; + for(var i=0;i < ba.dims.length;i++) + new_dims[i] = ba.dims[ba.dims.length - i - 1]; + return caml_ba_create_unsafe(ba.kind,layout,new_dims,ba.data)} + function caml_js_new(c,a) + {switch(a.length) + {case 1:return new c(); + case 2:return new c(a[1]); + case 3:return new c(a[1],a[2]); + case 4:return new c(a[1],a[2],a[3]); + case 5:return new c(a[1],a[2],a[3],a[4]); + case 6:return new c(a[1],a[2],a[3],a[4],a[5]); + case 7:return new c(a[1],a[2],a[3],a[4],a[5],a[6]); + case 8:return new c(a[1],a[2],a[3],a[4],a[5],a[6],a[7]) + } + function F(){return c.apply(this,caml_js_from_array(a))} + F.prototype = c.prototype; + return new F()} + function unix_mkdir(name,perm) + {var root=resolve_fs_device(name); + if(! root.device.mkdir)caml_failwith("unix_mkdir: not implemented"); + return root.device.mkdir(root.rest,perm,true)} + function caml_gr_current_y(){var s=caml_gr_state_get();return s.y} + function caml_format_int(fmt,i) + {if(caml_jsbytes_of_string(fmt) == "%d") + return caml_string_of_jsbytes("" + i); + var f=caml_parse_format(fmt); + if(i < 0)if(f.signedconv){f.sign = - 1;i = - i}else i >>>= 0; + var s=i.toString(f.base); + if(f.prec >= 0) + {f.filler = " "; + var n=f.prec - s.length; + if(n > 0)s = caml_str_repeat(n,"0") + s} + return caml_finish_formatting(f,s)} + function caml_obj_truncate(x,s) + {if(s <= 0 || s + 1 > x.length)caml_invalid_argument("Obj.truncate"); + if(x.length != s + 1)x.length = s + 1; + return 0} + function caml_js_to_string(s){return caml_string_of_jsstring(s)} + function is_digit_odd(nat,ofs){if(nat.data[ofs] & 1)return 1;return 0} + function caml_runtime_variant(_unit){return caml_string_of_jsbytes("")} + function caml_ml_open_descriptor_out(fd) + {var data=caml_global_data.fds[fd]; + if(data.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly"); + var + channel= + {file:data.file, + offset:data.offset, + fd:fd, + opened:true, + out:true, + buffer:""}; + caml_ml_channels[channel.fd] = channel; + return channel.fd} + function caml_array_concat(l) + {var a=[0]; + while(l !== 0) + {var b=l[1];for(var i=1;i < b.length;i++)a.push(b[i]);l = l[2]} + return a} + function caml_gr_open_graph(info) + {var g=globalThis,info=caml_jsstring_of_string(info); + function get(name) + {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)"); + if(res)return res[2]} + var specs=[]; + if(! (info == ""))specs.push(info); + var target=get("target"); + if(! target)target = ""; + var status=get("status"); + if(! status)specs.push("status=1"); + var w=get("width"); + w = w?parseInt(w):200; + specs.push("width=" + w); + var h=get("height"); + h = h?parseInt(h):200; + specs.push("height=" + h); + var win=g.open("about:blank",target,specs.join(",")); + if(! win)caml_failwith("Graphics.open_graph: cannot open the window"); + var doc=win.document,canvas=doc.createElement("canvas"); + canvas.width = w; + canvas.height = h; + var ctx=caml_gr_state_create(canvas,w,h); + ctx.set_title = function(title){doc.title = title}; + caml_gr_state_set(ctx); + var body=doc.body; + body.style.margin = "0px"; + body.appendChild(canvas); + return 0} + function caml_ephe_set_data(x,data) + {x[caml_ephe_data_offset] = data;return 0} + function caml_make_float_vect(len) + {if(len < 0)caml_array_bound_error(); + var len=len + 1 | 0,b=new Array(len); + b[0] = 254; + for(var i=1;i < len;i++)b[i] = 0; + return b} + function caml_cbrt_float(x){return Math.cbrt(x)} + function caml_memprof_stop(unit){return 0} + function caml_eventlog_pause(unit){return 0} + function caml_greaterequal(x,y) + {return + (caml_compare_val(x,y,false) >= 0)} + function ml_z_numbits(z1) + {z1 = bigInt(z1).abs(); + var n=0,upperBound=bigInt.one; + while(upperBound.leq(z1)){n += 1;upperBound = upperBound.multiply(2)} + return n} + function caml_get_exception_raw_backtrace(){return [0]} + function caml_log1p_float(x){return Math.log1p(x)} + function caml_int64_or(x,y){return x.or(y)} + function caml_lazy_make_forward(v){return [250,v]} + function lor_digit_nat(nat1,ofs1,nat2,ofs2) + {nat1.data[ofs1] |= nat2.data[ofs2];return 0} + function caml_gr_blit_image(im,x,y) + {var + s=caml_gr_state_get(), + im2= + s.context.getImageData(x,s.height - im.height - y,im.width,im.height); + for(var i=0;i < im2.data.length;i += 4) + {im.data[i] = im2.data[i]; + im.data[i + 1] = im2.data[i + 1]; + im.data[i + 2] = im2.data[i + 2]; + im.data[i + 3] = im2.data[i + 3]} + return 0} + function caml_gr_window_id(a) + {caml_failwith("caml_gr_window_id not Implemented")} + function caml_js_on_ie() + {var ua=globalThis.navigator?globalThis.navigator.userAgent:""; + return ua.indexOf("MSIE") != - 1 && ua.indexOf("Opera") != 0} + function caml_int64_shift_right(x,s){return x.shift_right(s)} + function caml_ba_layout(ba){return ba.layout} + function caml_convert_raw_backtrace(){return [0]} + function caml_array_set(array,index,newval) + {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); + array[index + 1] = newval; + return 0} + function caml_bytes_greaterequal(s1,s2) + {return caml_bytes_lessequal(s2,s1)} + function ml_z_perfect_power(z) + {z = bigInt(z); + var zero=bigInt(0),one=bigInt(1); + if(z.equals(zero) || z.equals(one) || z.equals(one.negate()))return 1; + var log2z=ml_z_numbits(z.abs()); + for(var b=2;b <= log2z;b++) + {if(z.lt(zero) && b % 2 == 0)continue; + var zp=z.abs(),p=bigInt(ml_z_root(zp,b)); + if(z.lt(zero))p = p.negate(); + var r=bigInt(ml_z_pow(p,b)); + if(z.equals(r))return 1} + return 0} + function set_digit_nat(nat,ofs,digit){nat.data[ofs] = digit;return 0} + function ml_z_init(unit) + {caml_custom_ops["_z"] + = + {serialize:caml_zarith_marshal, + deserialize:caml_zarith_unmarshal, + hash:ml_z_hash, + compare:ml_z_compare}; + return 0} + function caml_gr_doc_of_state(state) + {if(state.canvas.ownerDocument)return state.canvas.ownerDocument} + function caml_ml_output_int(chanid,i) + {var + arr=[i >> 24 & 0xFF,i >> 16 & 0xFF,i >> 8 & 0xFF,i & 0xFF], + s=caml_string_of_array(arr); + caml_ml_output(chanid,s,0,4); + return 0} + function caml_obj_with_tag(tag,x) + {var l=x.length,a=new Array(l); + a[0] = tag; + for(var i=1;i < l;i++)a[i] = x[i]; + return a} + function caml_ml_channel_size(chanid) + {var chan=caml_ml_channels[chanid];return chan.file.length()} + function caml_raw_backtrace_slot() + {caml_invalid_argument + ("Printexc.get_raw_backtrace_slot: index out of bounds")} + function caml_hexstring_of_float(x,prec,style) + {if(! isFinite(x)) + {if(isNaN(x))return caml_string_of_jsstring("nan"); + return caml_string_of_jsstring(x > 0?"infinity":"-infinity")} + var sign=x == 0 && 1 / x == - Infinity?1:x >= 0?0:1; + if(sign)x = - x; + var exp=0; + if(x == 0) + ; + else + if(x < 1) + while(x < 1 && exp > - 1022){x *= 2;exp--} + else + while(x >= 2){x /= 2;exp++} + var exp_sign=exp < 0?"":"+",sign_str=""; + if(sign) + sign_str = "-"; + else + switch(style) + {case 43:sign_str = "+";break; + case 32:sign_str = " ";break; + default:break} + if(prec >= 0 && prec < 13) + {var cst=Math.pow(2,prec * 4);x = Math.round(x * cst) / cst} + var x_str=x.toString(16); + if(prec >= 0) + {var idx=x_str.indexOf("."); + if(idx < 0) + x_str += "." + caml_str_repeat(prec,"0"); + else + {var size=idx + 1 + prec; + if(x_str.length < size) + x_str += caml_str_repeat(size - x_str.length,"0"); + else + x_str = x_str.substr(0,size)}} + return caml_string_of_jsstring + (sign_str + "0x" + x_str + "p" + exp_sign + exp.toString(10))} + function caml_js_wrap_meth_callback_strict(arity,f) + {return function() + {var args=new Array(arity + 1),len=Math.min(arguments.length,arity); + args[0] = this; + for(var i=0;i < len;i++)args[i + 1] = arguments[i]; + return caml_call_gen(f,args)}} + function ml_z_format(fmt,z1) + {z1 = bigInt(z1); + var + fmt=caml_jsbytes_of_string(fmt), + base=10, + cas=0, + width=0, + alt=0, + dir=0, + sign="", + pad=" ", + idx=0, + prefix=""; + while(fmt[idx] == "%")idx++; + for(;;idx++) + if(fmt[idx] == "#") + alt = 1; + else + if(fmt[idx] == "0") + pad = "0"; + else + if(fmt[idx] == "-") + dir = 1; + else + if(fmt[idx] == " " || fmt[idx] == "+")sign = fmt[idx];else break; + if(z1.lt(bigInt(0))){sign = "-";z1 = z1.negate()} + for(;fmt[idx] >= "0" && fmt[idx] <= "9";idx++) + width = 10 * width + + fmt[idx]; + switch(fmt[idx]) + {case "i": + case "d": + case "u":break; + case "b":base = 2;if(alt)prefix = "0b";break; + case "o":base = 8;if(alt)prefix = "0o";break; + case "x":base = 16;if(alt)prefix = "0x";break; + case "X":base = 16;if(alt)prefix = "0X";cas = 1;break; + default:caml_failwith("Unsupported format '" + fmt + "'")} + if(dir)pad = " "; + var res=z1.toString(base); + if(cas === 1)res = res.toUpperCase(); + var size=res.length; + if(pad == " ") + if(dir) + {res = sign + prefix + res;for(;res.length < width;)res = res + pad} + else + {res = sign + prefix + res;for(;res.length < width;)res = pad + res} + else + {var pre=sign + prefix; + for(;res.length + pre.length < width;)res = pad + res; + res = pre + res} + return caml_string_of_jsbytes(res)} + function ml_z_to_int64(z1) + {z1 = bigInt(z1); + if(! ml_z_fits_int64(z1)) + caml_raise_constant(caml_named_value("ml_z_overflow")); + var + mask=bigInt(0xffffffff), + lo=z1.and(mask).toJSNumber(), + hi=z1.shiftRight(32).and(mask).toJSNumber(), + x=caml_int64_create_lo_hi(lo,hi); + return x} + function ml_z_size(z1) + {return bigInt(z1).toArray(Math.pow(2,32)).value.length} + function caml_backtrace_status(){return 0} + function caml_sys_argv(a){return caml_argv} + function caml_install_signal_handler(){return 0} + function caml_ba_fill(ba,v){ba.fill(v);return 0} + function caml_modf_float(x) + {if(isFinite(x)) + {var neg=1 / x < 0; + x = Math.abs(x); + var i=Math.floor(x),f=x - i; + if(neg){i = - i;f = - f} + return [0,f,i]} + if(isNaN(x))return [0,NaN,NaN]; + return [0,1 / x,x]} + function caml_gc_get(){return [0,0,0,0,0,0,0,0,0]} + function caml_float_compare(x,y) + {if(x === y)return 0; + if(x < y)return - 1; + if(x > y)return 1; + if(x === x)return 1; + if(y === y)return - 1; + return 0} + function ml_z_shift_right_trunc(z1,z2) + {return ml_z_div(bigInt(z1),bigInt(2).pow(z2))} + function caml_string_set32(s,i,i32){return caml_bytes_set32(s,i,i32)} + function caml_parse_engine(tables,env,cmd,arg) + {var + ERRCODE=256, + loop=6, + testshift=7, + shift=8, + shift_recover=9, + reduce=10, + READ_TOKEN=0, + RAISE_PARSE_ERROR=1, + GROW_STACKS_1=2, + GROW_STACKS_2=3, + COMPUTE_SEMANTIC_ACTION=4, + CALL_ERROR_FUNCTION=5, + env_s_stack=1, + env_v_stack=2, + env_symb_start_stack=3, + env_symb_end_stack=4, + env_stacksize=5, + env_stackbase=6, + env_curr_char=7, + env_lval=8, + env_symb_start=9, + env_symb_end=10, + env_asp=11, + env_rule_len=12, + env_rule_number=13, + env_sp=14, + env_state=15, + env_errflag=16, + tbl_transl_const=2, + tbl_transl_block=3, + tbl_lhs=4, + tbl_len=5, + tbl_defred=6, + tbl_dgoto=7, + tbl_sindex=8, + tbl_rindex=9, + tbl_gindex=10, + tbl_tablesize=11, + tbl_table=12, + tbl_check=13; + if(! tables.dgoto) + {tables.defred = caml_lex_array(tables[tbl_defred]); + tables.sindex = caml_lex_array(tables[tbl_sindex]); + tables.check = caml_lex_array(tables[tbl_check]); + tables.rindex = caml_lex_array(tables[tbl_rindex]); + tables.table = caml_lex_array(tables[tbl_table]); + tables.len = caml_lex_array(tables[tbl_len]); + tables.lhs = caml_lex_array(tables[tbl_lhs]); + tables.gindex = caml_lex_array(tables[tbl_gindex]); + tables.dgoto = caml_lex_array(tables[tbl_dgoto])} + var + res=0, + n, + n1, + n2, + state1, + sp=env[env_sp], + state=env[env_state], + errflag=env[env_errflag]; + exit: + for(;;) + switch(cmd) + {case 0:state = 0;errflag = 0; + case 6: + n = tables.defred[state]; + if(n != 0){cmd = reduce;break} + if(env[env_curr_char] >= 0){cmd = testshift;break} + res = READ_TOKEN; + break exit; + case 1: + if(arg instanceof Array) + {env[env_curr_char] = tables[tbl_transl_block][arg[0] + 1]; + env[env_lval] = arg[1]} + else + {env[env_curr_char] = tables[tbl_transl_const][arg + 1]; + env[env_lval] = 0} + case 7: + n1 = tables.sindex[state]; + n2 = n1 + env[env_curr_char]; + if + (n1 + != + 0 + && + n2 + >= + 0 + && + n2 + <= + tables[tbl_tablesize] + && + tables.check[n2] + == + env[env_curr_char]) + {cmd = shift;break} + n1 = tables.rindex[state]; + n2 = n1 + env[env_curr_char]; + if + (n1 + != + 0 + && + n2 + >= + 0 + && + n2 + <= + tables[tbl_tablesize] + && + tables.check[n2] + == + env[env_curr_char]) + {n = tables.table[n2];cmd = reduce;break} + if(errflag <= 0){res = CALL_ERROR_FUNCTION;break exit} + case 5: + if(errflag < 3) + {errflag = 3; + for(;;) + {state1 = env[env_s_stack][sp + 1]; + n1 = tables.sindex[state1]; + n2 = n1 + ERRCODE; + if + (n1 + != + 0 + && + n2 + >= + 0 + && + n2 + <= + tables[tbl_tablesize] + && + tables.check[n2] + == + ERRCODE) + {cmd = shift_recover;break} + else + {if(sp <= env[env_stackbase])return RAISE_PARSE_ERROR;sp--}}} + else + {if(env[env_curr_char] == 0)return RAISE_PARSE_ERROR; + env[env_curr_char] = - 1; + cmd = loop; + break} + case 8:env[env_curr_char] = - 1;if(errflag > 0)errflag--; + case 9: + state = tables.table[n2]; + sp++; + if(sp >= env[env_stacksize]){res = GROW_STACKS_1;break exit} + case 2: + env[env_s_stack][sp + 1] = state; + env[env_v_stack][sp + 1] = env[env_lval]; + env[env_symb_start_stack][sp + 1] = env[env_symb_start]; + env[env_symb_end_stack][sp + 1] = env[env_symb_end]; + cmd = loop; + break; + case 10: + var m=tables.len[n]; + env[env_asp] = sp; + env[env_rule_number] = n; + env[env_rule_len] = m; + sp = sp - m + 1; + m = tables.lhs[n]; + state1 = env[env_s_stack][sp]; + n1 = tables.gindex[m]; + n2 = n1 + state1; + if + (n1 + != + 0 + && + n2 + >= + 0 + && + n2 + <= + tables[tbl_tablesize] + && + tables.check[n2] + == + state1) + state = tables.table[n2]; + else + state = tables.dgoto[m]; + if(sp >= env[env_stacksize]){res = GROW_STACKS_2;break exit} + case 3:res = COMPUTE_SEMANTIC_ACTION;break exit; + case 4: + env[env_s_stack][sp + 1] = state; + env[env_v_stack][sp + 1] = arg; + var asp=env[env_asp]; + env[env_symb_end_stack][sp + 1] = env[env_symb_end_stack][asp + 1]; + if(sp > asp) + env[env_symb_start_stack][sp + 1] + = + env[env_symb_end_stack][asp + 1]; + cmd = loop; + break; + default:return RAISE_PARSE_ERROR} + env[env_sp] = sp; + env[env_state] = state; + env[env_errflag] = errflag; + return res} + function caml_update_dummy(x,y) + {if(typeof y === "function"){x.fun = y;return 0} + if(y.fun){x.fun = y.fun;return 0} + var i=y.length; + while(i--)x[i] = y[i]; + return 0} + function caml_array_fill(array,ofs,len,v) + {for(var i=0;i < len;i++)array[ofs + i + 1] = v;return 0} + function caml_sys_mkdir(name,perm) + {var root=resolve_fs_device(name); + root.device.mkdir(root.rest,perm); + return 0} + function caml_string_notequal(s1,s2){return 1 - caml_string_equal(s1,s2)} + function caml_bytes_greaterthan(s1,s2){return caml_bytes_lessthan(s2,s1)} + function caml_gr_make_image(arr) + {var + s=caml_gr_state_get(), + h=arr.length - 1, + w=arr[1].length - 1, + im=s.context.createImageData(w,h); + for(var i=0;i < h;i++) + for(var j=0;j < w;j++) + {var c=arr[i + 1][j + 1],o=i * (w * 4) + j * 4; + if(c == - 1) + {im.data[o + 0] = 0; + im.data[o + 1] = 0; + im.data[o + 2] = 0; + im.data[o + 3] = 0} + else + {im.data[o + 0] = c >> 16 & 0xff; + im.data[o + 1] = c >> 8 & 0xff; + im.data[o + 2] = c >> 0 & 0Xff; + im.data[o + 3] = 0xff}} + return im} + function caml_ml_set_channel_output(chanid,f) + {var chan=caml_ml_channels[chanid]; + caml_global_data.fds[chan.fd].output = f; + return 0} + function caml_read_file_content(name) + {var + name=typeof name == "string"?caml_string_of_jsbytes(name):name, + root=resolve_fs_device(name); + if(root.device.exists(root.rest)) + {var + file=root.device.open(root.rest,{rdonly:1}), + len=file.length(), + buf=caml_create_bytes(len); + file.read(0,buf,0,len); + return caml_string_of_bytes(buf)} + caml_raise_no_such_file(caml_jsbytes_of_string(name))} + function caml_js_to_float(x){return x} + function caml_setup_uncaught_exception_handler() + {var g=globalThis; + if(g.process && g.process.on) + g.process.on + ("uncaughtException", + function(err,origin) + {caml_fatal_uncaught_exception(err);g.process.exit(2)}); + else + if(g.addEventListener) + g.addEventListener + ("error", + function(event) + {if(event.error)caml_fatal_uncaught_exception(event.error)})} + caml_setup_uncaught_exception_handler(); + globalThis.jsoo_runtime + = + {ml_z_normalize:ml_z_normalize, + ml_z_mul_overflows:ml_z_mul_overflows, + ml_z_init:ml_z_init, + ml_z_neg:ml_z_neg, + ml_z_add:ml_z_add, + ml_z_sub:ml_z_sub, + ml_z_mul:ml_z_mul, + ml_z_div:ml_z_div, + ml_z_cdiv:ml_z_cdiv, + ml_z_fdiv:ml_z_fdiv, + ml_z_rem:ml_z_rem, + ml_z_div_rem:ml_z_div_rem, + ml_z_succ:ml_z_succ, + ml_z_pred:ml_z_pred, + ml_z_abs:ml_z_abs, + ml_z_logand:ml_z_logand, + ml_z_logor:ml_z_logor, + ml_z_logxor:ml_z_logxor, + ml_z_lognot:ml_z_lognot, + ml_z_shift_left:ml_z_shift_left, + ml_z_shift_right:ml_z_shift_right, + ml_z_shift_right_trunc:ml_z_shift_right_trunc, + ml_z_of_int32:ml_z_of_int32, + ml_z_of_nativeint:ml_z_of_nativeint, + ml_z_of_int64:ml_z_of_int64, + ml_z_of_float:ml_z_of_float, + ml_z_to_int:ml_z_to_int, + ml_z_to_int32:ml_z_to_int32, + ml_z_to_int64:ml_z_to_int64, + ml_z_testbit:ml_z_testbit, + ml_z_to_nativeint:ml_z_to_nativeint, + ml_z_format:ml_z_format, + jsoo_z_of_js_string_base:jsoo_z_of_js_string_base, + ml_z_of_substring_base:ml_z_of_substring_base, + ml_z_compare:ml_z_compare, + ml_z_equal:ml_z_equal, + ml_z_sign:ml_z_sign, + ml_z_gcd:ml_z_gcd, + ml_z_numbits:ml_z_numbits, + ml_z_fits_int:ml_z_fits_int, + ml_z_fits_int32:ml_z_fits_int32, + ml_z_fits_int64:ml_z_fits_int64, + ml_z_fits_nativeint:ml_z_fits_nativeint, + ml_z_powm:ml_z_powm, + ml_z_pow:ml_z_pow, + ml_z_hash:ml_z_hash, + ml_z_to_bits:ml_z_to_bits, + ml_z_of_bits:ml_z_of_bits, + ml_z_powm_sec:ml_z_powm_sec, + ml_z_root:ml_z_root, + ml_z_rootrem:ml_z_rootrem, + ml_z_invert:ml_z_invert, + ml_z_perfect_power:ml_z_perfect_power, + ml_z_perfect_square:ml_z_perfect_square, + ml_z_probab_prime:ml_z_probab_prime, + ml_z_nextprime:ml_z_nextprime, + ml_z_extract:ml_z_extract, + ml_z_gcdext_intern:ml_z_gcdext_intern, + ml_z_sqrt:ml_z_sqrt, + ml_z_sqrt_rem:ml_z_sqrt_rem, + ml_z_trailing_zeros:ml_z_trailing_zeros, + ml_z_popcount:ml_z_popcount, + ml_z_hamdist:ml_z_hamdist, + ml_z_size:ml_z_size, + ml_z_divexact:ml_z_divexact, + caml_zarith_marshal:caml_zarith_marshal, + caml_zarith_unmarshal:caml_zarith_unmarshal, + ml_z_divisible:ml_z_divisible, + ml_z_congruent:ml_z_congruent, + ml_z_remove:ml_z_remove, + ml_z_fac:ml_z_fac, + ml_z_fac2:ml_z_fac2, + ml_z_facM:ml_z_facM, + ml_z_fib:ml_z_fib, + ml_z_lucnum:ml_z_lucnum, + ml_z_jacobi:ml_z_jacobi, + ml_z_legendre:ml_z_legendre, + ml_z_kronecker:ml_z_kronecker, + ml_z_primorial:ml_z_primorial, + ml_z_bin:ml_z_bin, + bigInt:bigInt, + caml_ephe_key_offset:caml_ephe_key_offset, + caml_ephe_data_offset:caml_ephe_data_offset, + caml_weak_create:caml_weak_create, + caml_weak_set:caml_weak_set, + caml_weak_get:caml_weak_get, + caml_weak_get_copy:caml_weak_get_copy, + caml_weak_check:caml_weak_check, + caml_weak_blit:caml_weak_blit, + caml_ephe_create:caml_ephe_create, + caml_ephe_blit_key:caml_ephe_blit_key, + caml_ephe_get_key:caml_ephe_get_key, + caml_ephe_get_key_copy:caml_ephe_get_key_copy, + caml_ephe_check_key:caml_ephe_check_key, + caml_ephe_set_key:caml_ephe_set_key, + caml_ephe_unset_key:caml_ephe_unset_key, + caml_ephe_blit_data:caml_ephe_blit_data, + caml_ephe_get_data:caml_ephe_get_data, + caml_ephe_get_data_copy:caml_ephe_get_data_copy, + caml_ephe_set_data:caml_ephe_set_data, + caml_ephe_unset_data:caml_ephe_unset_data, + caml_ephe_check_data:caml_ephe_check_data, + unix_gettimeofday:unix_gettimeofday, + unix_time:unix_time, + unix_gmtime:unix_gmtime, + unix_localtime:unix_localtime, + unix_mktime:unix_mktime, + win_startup:win_startup, + win_cleanup:win_cleanup, + win_handle_fd:win_handle_fd, + unix_isatty:unix_isatty, + make_unix_err_args:make_unix_err_args, + unix_stat:unix_stat, + unix_stat_64:unix_stat_64, + unix_lstat:unix_lstat, + unix_lstat_64:unix_lstat_64, + unix_mkdir:unix_mkdir, + unix_rmdir:unix_rmdir, + unix_symlink:unix_symlink, + unix_readlink:unix_readlink, + unix_unlink:unix_unlink, + unix_getuid:unix_getuid, + unix_getpwuid:unix_getpwuid, + unix_has_symlink:unix_has_symlink, + re_match:re_match, + re_search_forward:re_search_forward, + re_search_backward:re_search_backward, + re_string_match:re_string_match, + re_partial_match:re_partial_match, + re_replacement_text:re_replacement_text, + caml_raise_sys_error:caml_raise_sys_error, + caml_sys_exit:caml_sys_exit, + caml_is_special_exception:caml_is_special_exception, + caml_format_exception:caml_format_exception, + caml_fatal_uncaught_exception:caml_fatal_uncaught_exception, + caml_set_static_env:caml_set_static_env, + caml_sys_getenv:caml_sys_getenv, + caml_sys_unsafe_getenv:caml_sys_unsafe_getenv, + caml_argv:caml_argv, + caml_executable_name:caml_executable_name, + caml_sys_get_argv:caml_sys_get_argv, + caml_sys_argv:caml_sys_argv, + caml_sys_modify_argv:caml_sys_modify_argv, + caml_sys_executable_name:caml_sys_executable_name, + caml_sys_system_command:caml_sys_system_command, + caml_sys_time:caml_sys_time, + caml_sys_time_include_children:caml_sys_time_include_children, + caml_sys_random_seed:caml_sys_random_seed, + caml_sys_const_big_endian:caml_sys_const_big_endian, + caml_sys_const_word_size:caml_sys_const_word_size, + caml_sys_const_int_size:caml_sys_const_int_size, + caml_sys_const_max_wosize:caml_sys_const_max_wosize, + caml_sys_const_ostype_unix:caml_sys_const_ostype_unix, + caml_sys_const_ostype_win32:caml_sys_const_ostype_win32, + caml_sys_const_ostype_cygwin:caml_sys_const_ostype_cygwin, + caml_sys_const_backend_type:caml_sys_const_backend_type, + os_type:os_type, + caml_sys_get_config:caml_sys_get_config, + caml_sys_isatty:caml_sys_isatty, + caml_runtime_variant:caml_runtime_variant, + caml_runtime_parameters:caml_runtime_parameters, + caml_install_signal_handler:caml_install_signal_handler, + unix_inet_addr_of_string:unix_inet_addr_of_string, + caml_runtime_warnings:caml_runtime_warnings, + caml_ml_enable_runtime_warnings:caml_ml_enable_runtime_warnings, + caml_ml_runtime_warnings_enabled:caml_ml_runtime_warnings_enabled, + caml_spacetime_enabled:caml_spacetime_enabled, + caml_sys_const_naked_pointers_checked: + caml_sys_const_naked_pointers_checked, + caml_register_channel_for_spacetime:caml_register_channel_for_spacetime, + caml_spacetime_only_works_for_native_code: + caml_spacetime_only_works_for_native_code, + caml_call_gen:caml_call_gen, + caml_named_values:caml_named_values, + caml_register_named_value:caml_register_named_value, + caml_named_value:caml_named_value, + caml_global_data:caml_global_data, + caml_register_global:caml_register_global, + caml_get_global_data:caml_get_global_data, + caml_is_printable:caml_is_printable, + caml_parse_engine:caml_parse_engine, + caml_set_parser_trace:caml_set_parser_trace, + caml_update_dummy:caml_update_dummy, + caml_obj_is_block:caml_obj_is_block, + caml_obj_tag:caml_obj_tag, + caml_obj_set_tag:caml_obj_set_tag, + caml_obj_block:caml_obj_block, + caml_obj_with_tag:caml_obj_with_tag, + caml_obj_dup:caml_obj_dup, + caml_obj_truncate:caml_obj_truncate, + caml_obj_make_forward:caml_obj_make_forward, + caml_lazy_make_forward:caml_lazy_make_forward, + caml_get_public_method:caml_get_public_method, + caml_oo_last_id:caml_oo_last_id, + caml_set_oo_id:caml_set_oo_id, + caml_fresh_oo_id:caml_fresh_oo_id, + caml_obj_raw_field:caml_obj_raw_field, + caml_obj_set_raw_field:caml_obj_set_raw_field, + caml_obj_reachable_words:caml_obj_reachable_words, + caml_obj_add_offset:caml_obj_add_offset, + initialize_nat:initialize_nat, + MlNat:MlNat, + caml_hash_nat:caml_hash_nat, + nat_of_array:nat_of_array, + create_nat:create_nat, + set_to_zero_nat:set_to_zero_nat, + blit_nat:blit_nat, + set_digit_nat:set_digit_nat, + nth_digit_nat:nth_digit_nat, + set_digit_nat_native:set_digit_nat_native, + nth_digit_nat_native:nth_digit_nat_native, + num_digits_nat:num_digits_nat, + num_leading_zero_bits_in_digit:num_leading_zero_bits_in_digit, + is_digit_int:is_digit_int, + is_digit_zero:is_digit_zero, + is_digit_odd:is_digit_odd, + incr_nat:incr_nat, + add_nat:add_nat, + complement_nat:complement_nat, + decr_nat:decr_nat, + sub_nat:sub_nat, + mult_digit_nat:mult_digit_nat, + mult_nat:mult_nat, + square_nat:square_nat, + shift_left_nat:shift_left_nat, + div_helper:div_helper, + div_digit_nat:div_digit_nat, + div_nat:div_nat, + shift_right_nat:shift_right_nat, + compare_digits_nat:compare_digits_nat, + compare_nat:compare_nat, + compare_nat_real:compare_nat_real, + land_digit_nat:land_digit_nat, + lor_digit_nat:lor_digit_nat, + lxor_digit_nat:lxor_digit_nat, + serialize_nat:serialize_nat, + deserialize_nat:deserialize_nat, + caml_str_repeat:caml_str_repeat, + caml_subarray_to_jsbytes:caml_subarray_to_jsbytes, + caml_utf8_of_utf16:caml_utf8_of_utf16, + caml_utf16_of_utf8:caml_utf16_of_utf8, + jsoo_is_ascii:jsoo_is_ascii, + caml_bytes_unsafe_get:caml_bytes_unsafe_get, + caml_bytes_unsafe_set:caml_bytes_unsafe_set, + caml_string_bound_error:caml_string_bound_error, + caml_bytes_bound_error:caml_bytes_bound_error, + caml_string_get:caml_string_get, + caml_string_get16:caml_string_get16, + caml_bytes_get16:caml_bytes_get16, + caml_string_get32:caml_string_get32, + caml_bytes_get32:caml_bytes_get32, + caml_string_get64:caml_string_get64, + caml_bytes_get64:caml_bytes_get64, + caml_bytes_get:caml_bytes_get, + caml_string_set:caml_string_set, + caml_bytes_set16:caml_bytes_set16, + caml_string_set16:caml_string_set16, + caml_bytes_set32:caml_bytes_set32, + caml_string_set32:caml_string_set32, + caml_bytes_set64:caml_bytes_set64, + caml_string_set64:caml_string_set64, + caml_bytes_set:caml_bytes_set, + caml_bytes_of_utf16_jsstring:caml_bytes_of_utf16_jsstring, + MlBytes:MlBytes, + caml_convert_string_to_bytes:caml_convert_string_to_bytes, + caml_convert_bytes_to_array:caml_convert_bytes_to_array, + caml_array_of_bytes:caml_array_of_bytes, + caml_array_of_string:caml_array_of_string, + caml_create_string:caml_create_string, + caml_create_bytes:caml_create_bytes, + caml_string_of_array:caml_string_of_array, + caml_bytes_of_array:caml_bytes_of_array, + caml_bytes_compare:caml_bytes_compare, + caml_bytes_equal:caml_bytes_equal, + caml_string_notequal:caml_string_notequal, + caml_bytes_notequal:caml_bytes_notequal, + caml_bytes_lessequal:caml_bytes_lessequal, + caml_bytes_lessthan:caml_bytes_lessthan, + caml_string_greaterequal:caml_string_greaterequal, + caml_bytes_greaterequal:caml_bytes_greaterequal, + caml_string_greaterthan:caml_string_greaterthan, + caml_bytes_greaterthan:caml_bytes_greaterthan, + caml_fill_bytes:caml_fill_bytes, + caml_fill_string:caml_fill_string, + caml_blit_bytes:caml_blit_bytes, + caml_blit_string:caml_blit_string, + caml_ml_bytes_length:caml_ml_bytes_length, + caml_bytes_of_jsbytes:caml_bytes_of_jsbytes, + caml_string_unsafe_get:caml_string_unsafe_get, + caml_string_unsafe_set:caml_string_unsafe_set, + caml_ml_string_length:caml_ml_string_length, + caml_string_compare:caml_string_compare, + caml_string_equal:caml_string_equal, + caml_string_lessequal:caml_string_lessequal, + caml_string_lessthan:caml_string_lessthan, + caml_string_of_bytes:caml_string_of_bytes, + caml_bytes_of_string:caml_bytes_of_string, + caml_string_of_jsbytes:caml_string_of_jsbytes, + caml_jsbytes_of_string:caml_jsbytes_of_string, + caml_jsstring_of_string:caml_jsstring_of_string, + caml_string_of_jsstring:caml_string_of_jsstring, + caml_is_ml_bytes:caml_is_ml_bytes, + caml_ml_bytes_content:caml_ml_bytes_content, + caml_is_ml_string:caml_is_ml_string, + caml_js_to_byte_string:caml_js_to_byte_string, + caml_new_string:caml_new_string, + caml_js_from_string:caml_js_from_string, + caml_to_js_string:caml_to_js_string, + caml_js_to_string:caml_js_to_string, + caml_md5_chan:caml_md5_chan, + caml_md5_string:caml_md5_string, + caml_md5_bytes:caml_md5_bytes, + caml_marshal_constants:caml_marshal_constants, + MlStringReader:MlStringReader, + BigStringReader:BigStringReader, + caml_float_of_bytes:caml_float_of_bytes, + caml_input_value_from_string:caml_input_value_from_string, + caml_input_value_from_bytes:caml_input_value_from_bytes, + caml_int64_unmarshal:caml_int64_unmarshal, + caml_int64_marshal:caml_int64_marshal, + caml_int32_unmarshal:caml_int32_unmarshal, + caml_nativeint_unmarshal:caml_nativeint_unmarshal, + caml_custom_ops:caml_custom_ops, + caml_input_value_from_reader:caml_input_value_from_reader, + caml_marshal_data_size:caml_marshal_data_size, + MlObjectTable:MlObjectTable, + caml_legacy_custom_code:caml_legacy_custom_code, + caml_output_val:caml_output_val, + caml_output_value_to_string:caml_output_value_to_string, + caml_output_value_to_bytes:caml_output_value_to_bytes, + caml_output_value_to_buffer:caml_output_value_to_buffer, + caml_lex_array:caml_lex_array, + caml_lex_engine:caml_lex_engine, + caml_new_lex_engine:caml_new_lex_engine, + caml_js_on_ie:caml_js_on_ie, + caml_js_html_escape:caml_js_html_escape, + caml_js_html_entities:caml_js_html_entities, + caml_js_get_console:caml_js_get_console, + caml_xmlhttprequest_create:caml_xmlhttprequest_create, + caml_js_error_of_exception:caml_js_error_of_exception, + caml_js_pure_expr:caml_js_pure_expr, + caml_js_set:caml_js_set, + caml_js_get:caml_js_get, + caml_js_delete:caml_js_delete, + caml_js_instanceof:caml_js_instanceof, + caml_js_typeof:caml_js_typeof, + caml_trampoline:caml_trampoline, + caml_trampoline_return:caml_trampoline_return, + js_print_stdout:js_print_stdout, + js_print_stderr:js_print_stderr, + caml_is_js:caml_is_js, + caml_wrap_exception:caml_wrap_exception, + caml_exn_with_js_backtrace:caml_exn_with_js_backtrace, + caml_js_error_option_of_exception:caml_js_error_option_of_exception, + caml_js_from_bool:caml_js_from_bool, + caml_js_to_bool:caml_js_to_bool, + caml_js_from_float:caml_js_from_float, + caml_js_to_float:caml_js_to_float, + caml_js_from_array:caml_js_from_array, + caml_js_to_array:caml_js_to_array, + caml_list_of_js_array:caml_list_of_js_array, + caml_list_to_js_array:caml_list_to_js_array, + caml_js_var:caml_js_var, + caml_js_call:caml_js_call, + caml_js_fun_call:caml_js_fun_call, + caml_js_meth_call:caml_js_meth_call, + caml_js_new:caml_js_new, + caml_ojs_new_arr:caml_ojs_new_arr, + caml_js_wrap_callback:caml_js_wrap_callback, + caml_js_wrap_callback_arguments:caml_js_wrap_callback_arguments, + caml_js_wrap_callback_strict:caml_js_wrap_callback_strict, + caml_js_wrap_meth_callback:caml_js_wrap_meth_callback, + caml_js_wrap_meth_callback_arguments:caml_js_wrap_meth_callback_arguments, + caml_js_wrap_meth_callback_strict:caml_js_wrap_meth_callback_strict, + caml_js_wrap_meth_callback_unsafe:caml_js_wrap_meth_callback_unsafe, + caml_js_equals:caml_js_equals, + caml_js_eval_string:caml_js_eval_string, + caml_js_expr:caml_js_expr, + caml_pure_js_expr:caml_pure_js_expr, + caml_js_object:caml_js_object, + caml_sys_close:caml_sys_close, + caml_std_output:caml_std_output, + caml_sys_open:caml_sys_open, + caml_ml_set_channel_name:caml_ml_set_channel_name, + caml_ml_channels:caml_ml_channels, + caml_ml_out_channels_list:caml_ml_out_channels_list, + caml_ml_open_descriptor_out:caml_ml_open_descriptor_out, + caml_ml_open_descriptor_in:caml_ml_open_descriptor_in, + caml_channel_descriptor:caml_channel_descriptor, + win_filedescr_of_channel:win_filedescr_of_channel, + caml_ml_set_binary_mode:caml_ml_set_binary_mode, + caml_ml_close_channel:caml_ml_close_channel, + caml_ml_channel_size:caml_ml_channel_size, + caml_ml_channel_size_64:caml_ml_channel_size_64, + caml_ml_set_channel_output:caml_ml_set_channel_output, + caml_ml_set_channel_refill:caml_ml_set_channel_refill, + caml_ml_refill_input:caml_ml_refill_input, + caml_ml_may_refill_input:caml_ml_may_refill_input, + caml_ml_input:caml_ml_input, + caml_input_value:caml_input_value, + caml_ml_input_char:caml_ml_input_char, + caml_ml_input_int:caml_ml_input_int, + caml_ml_seek_in:caml_ml_seek_in, + caml_ml_seek_in_64:caml_ml_seek_in_64, + caml_ml_pos_in:caml_ml_pos_in, + caml_ml_pos_in_64:caml_ml_pos_in_64, + caml_ml_input_scan_line:caml_ml_input_scan_line, + caml_ml_flush:caml_ml_flush, + caml_ml_output_bytes:caml_ml_output_bytes, + caml_ml_output:caml_ml_output, + caml_ml_output_char:caml_ml_output_char, + caml_output_value:caml_output_value, + caml_ml_seek_out:caml_ml_seek_out, + caml_ml_seek_out_64:caml_ml_seek_out_64, + caml_ml_pos_out:caml_ml_pos_out, + caml_ml_pos_out_64:caml_ml_pos_out_64, + caml_ml_output_int:caml_ml_output_int, + caml_ml_is_buffered:caml_ml_is_buffered, + caml_ml_set_buffered:caml_ml_set_buffered, + caml_format_int:caml_format_int, + caml_parse_sign_and_base:caml_parse_sign_and_base, + caml_parse_digit:caml_parse_digit, + caml_int_of_string:caml_int_of_string, + caml_mul:caml_mul, + caml_div:caml_div, + caml_mod:caml_mod, + caml_bswap16:caml_bswap16, + caml_int32_bswap:caml_int32_bswap, + caml_int64_bswap:caml_int64_bswap, + caml_int64_offset:caml_int64_offset, + MlInt64:MlInt64, + caml_int64_ult:caml_int64_ult, + caml_int64_compare:caml_int64_compare, + caml_int64_neg:caml_int64_neg, + caml_int64_add:caml_int64_add, + caml_int64_sub:caml_int64_sub, + caml_int64_mul:caml_int64_mul, + caml_int64_is_zero:caml_int64_is_zero, + caml_int64_is_negative:caml_int64_is_negative, + caml_int64_and:caml_int64_and, + caml_int64_or:caml_int64_or, + caml_int64_xor:caml_int64_xor, + caml_int64_shift_left:caml_int64_shift_left, + caml_int64_shift_right_unsigned:caml_int64_shift_right_unsigned, + caml_int64_shift_right:caml_int64_shift_right, + caml_int64_div:caml_int64_div, + caml_int64_mod:caml_int64_mod, + caml_int64_of_int32:caml_int64_of_int32, + caml_int64_to_int32:caml_int64_to_int32, + caml_int64_to_float:caml_int64_to_float, + caml_int64_of_float:caml_int64_of_float, + caml_int64_format:caml_int64_format, + caml_int64_of_string:caml_int64_of_string, + caml_int64_create_lo_mi_hi:caml_int64_create_lo_mi_hi, + caml_int64_create_lo_hi:caml_int64_create_lo_hi, + caml_int64_lo32:caml_int64_lo32, + caml_int64_hi32:caml_int64_hi32, + caml_int64_of_bytes:caml_int64_of_bytes, + caml_int64_to_bytes:caml_int64_to_bytes, + caml_int64_hash:caml_int64_hash, + jsoo_floor_log2:jsoo_floor_log2, + caml_int64_bits_of_float:caml_int64_bits_of_float, + caml_int32_bits_of_float:caml_int32_bits_of_float, + caml_hexstring_of_float:caml_hexstring_of_float, + caml_int64_float_of_bits:caml_int64_float_of_bits, + caml_nextafter_float:caml_nextafter_float, + caml_trunc_float:caml_trunc_float, + caml_int32_float_of_bits:caml_int32_float_of_bits, + caml_classify_float:caml_classify_float, + caml_modf_float:caml_modf_float, + caml_ldexp_float:caml_ldexp_float, + caml_frexp_float:caml_frexp_float, + caml_float_compare:caml_float_compare, + caml_copysign_float:caml_copysign_float, + caml_signbit_float:caml_signbit_float, + caml_expm1_float:caml_expm1_float, + caml_exp2_float:caml_exp2_float, + caml_log1p_float:caml_log1p_float, + caml_log2_float:caml_log2_float, + caml_hypot_float:caml_hypot_float, + caml_log10_float:caml_log10_float, + caml_cosh_float:caml_cosh_float, + caml_acosh_float:caml_acosh_float, + caml_sinh_float:caml_sinh_float, + caml_asinh_float:caml_asinh_float, + caml_tanh_float:caml_tanh_float, + caml_atanh_float:caml_atanh_float, + caml_round_float:caml_round_float, + caml_cbrt_float:caml_cbrt_float, + caml_erf_float:caml_erf_float, + caml_erfc_float:caml_erfc_float, + caml_fma_float:caml_fma_float, + caml_format_float:caml_format_float, + caml_float_of_string:caml_float_of_string, + caml_hash_univ_param:caml_hash_univ_param, + caml_hash_mix_int:caml_hash_mix_int, + caml_hash_mix_final:caml_hash_mix_final, + caml_hash_mix_float:caml_hash_mix_float, + caml_hash_mix_int64:caml_hash_mix_int64, + caml_hash_mix_jsbytes:caml_hash_mix_jsbytes, + caml_hash_mix_bytes_arr:caml_hash_mix_bytes_arr, + caml_hash_mix_bytes:caml_hash_mix_bytes, + caml_hash_mix_string:caml_hash_mix_string, + caml_hash:caml_hash, + caml_gr_state:caml_gr_state, + caml_gr_state_get:caml_gr_state_get, + caml_gr_state_set:caml_gr_state_set, + caml_gr_open_graph:caml_gr_open_graph, + caml_gr_state_init:caml_gr_state_init, + caml_gr_state_create:caml_gr_state_create, + caml_gr_doc_of_state:caml_gr_doc_of_state, + caml_gr_close_graph:caml_gr_close_graph, + caml_gr_set_window_title:caml_gr_set_window_title, + caml_gr_resize_window:caml_gr_resize_window, + caml_gr_clear_graph:caml_gr_clear_graph, + caml_gr_size_x:caml_gr_size_x, + caml_gr_size_y:caml_gr_size_y, + caml_gr_set_color:caml_gr_set_color, + caml_gr_plot:caml_gr_plot, + caml_gr_point_color:caml_gr_point_color, + caml_gr_moveto:caml_gr_moveto, + caml_gr_current_x:caml_gr_current_x, + caml_gr_current_y:caml_gr_current_y, + caml_gr_lineto:caml_gr_lineto, + caml_gr_draw_rect:caml_gr_draw_rect, + caml_gr_arc_aux:caml_gr_arc_aux, + caml_gr_draw_arc:caml_gr_draw_arc, + caml_gr_set_line_width:caml_gr_set_line_width, + caml_gr_fill_rect:caml_gr_fill_rect, + caml_gr_fill_poly:caml_gr_fill_poly, + caml_gr_fill_arc:caml_gr_fill_arc, + caml_gr_draw_str:caml_gr_draw_str, + caml_gr_draw_char:caml_gr_draw_char, + caml_gr_draw_string:caml_gr_draw_string, + caml_gr_set_font:caml_gr_set_font, + caml_gr_set_text_size:caml_gr_set_text_size, + caml_gr_text_size:caml_gr_text_size, + caml_gr_make_image:caml_gr_make_image, + caml_gr_dump_image:caml_gr_dump_image, + caml_gr_draw_image:caml_gr_draw_image, + caml_gr_create_image:caml_gr_create_image, + caml_gr_blit_image:caml_gr_blit_image, + caml_gr_sigio_handler:caml_gr_sigio_handler, + caml_gr_sigio_signal:caml_gr_sigio_signal, + caml_gr_wait_event:caml_gr_wait_event, + caml_gr_synchronize:caml_gr_synchronize, + caml_gr_remember_mode:caml_gr_remember_mode, + caml_gr_display_mode:caml_gr_display_mode, + caml_gr_window_id:caml_gr_window_id, + caml_gr_open_subwindow:caml_gr_open_subwindow, + caml_gr_close_subwindow:caml_gr_close_subwindow, + caml_gc_minor:caml_gc_minor, + caml_gc_major:caml_gc_major, + caml_gc_full_major:caml_gc_full_major, + caml_gc_compaction:caml_gc_compaction, + caml_gc_counters:caml_gc_counters, + caml_gc_quick_stat:caml_gc_quick_stat, + caml_gc_stat:caml_gc_stat, + caml_gc_set:caml_gc_set, + caml_gc_get:caml_gc_get, + caml_memprof_set:caml_memprof_set, + caml_final_register:caml_final_register, + caml_final_register_called_without_value: + caml_final_register_called_without_value, + caml_final_release:caml_final_release, + caml_memprof_start:caml_memprof_start, + caml_memprof_stop:caml_memprof_stop, + caml_eventlog_resume:caml_eventlog_resume, + caml_eventlog_pause:caml_eventlog_pause, + caml_gc_huge_fallback_count:caml_gc_huge_fallback_count, + caml_gc_major_slice:caml_gc_major_slice, + caml_gc_minor_words:caml_gc_minor_words, + caml_get_minor_free:caml_get_minor_free, + caml_get_major_bucket:caml_get_major_bucket, + caml_get_major_credit:caml_get_major_credit, + fs_node_supported:fs_node_supported, + MlNodeDevice:MlNodeDevice, + MlNodeFile:MlNodeFile, + MlFakeDevice:MlFakeDevice, + MlFakeFile:MlFakeFile, + caml_trailing_slash:caml_trailing_slash, + caml_current_dir:caml_current_dir, + caml_get_root:caml_get_root, + caml_root:caml_root, + MlFile:MlFile, + path_is_absolute:path_is_absolute, + caml_make_path:caml_make_path, + jsoo_mount_point:jsoo_mount_point, + caml_list_mount_point:caml_list_mount_point, + resolve_fs_device:resolve_fs_device, + caml_mount_autoload:caml_mount_autoload, + caml_unmount:caml_unmount, + caml_sys_getcwd:caml_sys_getcwd, + caml_sys_chdir:caml_sys_chdir, + caml_raise_no_such_file:caml_raise_no_such_file, + caml_raise_not_a_dir:caml_raise_not_a_dir, + caml_sys_file_exists:caml_sys_file_exists, + caml_sys_read_directory:caml_sys_read_directory, + caml_sys_remove:caml_sys_remove, + caml_sys_is_directory:caml_sys_is_directory, + caml_sys_rename:caml_sys_rename, + caml_sys_mkdir:caml_sys_mkdir, + caml_sys_rmdir:caml_sys_rmdir, + caml_ba_map_file:caml_ba_map_file, + caml_ba_map_file_bytecode:caml_ba_map_file_bytecode, + jsoo_create_file_extern:jsoo_create_file_extern, + caml_fs_init:caml_fs_init, + caml_create_file:caml_create_file, + jsoo_create_file:jsoo_create_file, + caml_read_file_content:caml_read_file_content, + caml_parse_format:caml_parse_format, + caml_finish_formatting:caml_finish_formatting, + caml_raise_constant:caml_raise_constant, + caml_return_exn_constant:caml_return_exn_constant, + caml_raise_with_arg:caml_raise_with_arg, + caml_raise_with_args:caml_raise_with_args, + caml_raise_with_string:caml_raise_with_string, + caml_failwith:caml_failwith, + caml_invalid_argument:caml_invalid_argument, + caml_raise_end_of_file:caml_raise_end_of_file, + caml_raise_zero_divide:caml_raise_zero_divide, + caml_raise_not_found:caml_raise_not_found, + caml_array_bound_error:caml_array_bound_error, + caml_compare_val_tag:caml_compare_val_tag, + caml_compare_val_get_custom:caml_compare_val_get_custom, + caml_compare_val_number_custom:caml_compare_val_number_custom, + caml_compare_val:caml_compare_val, + caml_compare:caml_compare, + caml_int_compare:caml_int_compare, + caml_equal:caml_equal, + caml_notequal:caml_notequal, + caml_greaterequal:caml_greaterequal, + caml_greaterthan:caml_greaterthan, + caml_lessequal:caml_lessequal, + caml_lessthan:caml_lessthan, + caml_blit_bigstring_to_bigstring:caml_blit_bigstring_to_bigstring, + caml_blit_bigstring_to_string:caml_blit_bigstring_to_string, + caml_blit_string_to_bigstring:caml_blit_string_to_bigstring, + caml_hash_mix_bigstring:caml_hash_mix_bigstring, + bigstring_to_array_buffer:bigstring_to_array_buffer, + bigstring_to_typed_array:bigstring_to_typed_array, + bigstring_of_array_buffer:bigstring_of_array_buffer, + bigstring_of_typed_array:bigstring_of_typed_array, + caml_bigstring_memcmp:caml_bigstring_memcmp, + caml_bigstring_blit_ba_to_ba:caml_bigstring_blit_ba_to_ba, + caml_bigstring_blit_string_to_ba:caml_bigstring_blit_string_to_ba, + caml_bigstring_blit_bytes_to_ba:caml_bigstring_blit_bytes_to_ba, + caml_bigstring_blit_ba_to_bytes:caml_bigstring_blit_ba_to_bytes, + caml_ba_init:caml_ba_init, + caml_ba_get_size:caml_ba_get_size, + caml_ba_get_size_per_element:caml_ba_get_size_per_element, + caml_ba_create_buffer:caml_ba_create_buffer, + caml_ba_custom_name:caml_ba_custom_name, + Ml_Bigarray:Ml_Bigarray, + Ml_Bigarray_c_1_1:Ml_Bigarray_c_1_1, + caml_ba_compare:caml_ba_compare, + caml_ba_create_unsafe:caml_ba_create_unsafe, + caml_ba_create:caml_ba_create, + caml_ba_change_layout:caml_ba_change_layout, + caml_ba_kind:caml_ba_kind, + caml_ba_layout:caml_ba_layout, + caml_ba_num_dims:caml_ba_num_dims, + caml_ba_dim:caml_ba_dim, + caml_ba_dim_1:caml_ba_dim_1, + caml_ba_dim_2:caml_ba_dim_2, + caml_ba_dim_3:caml_ba_dim_3, + caml_ba_get_generic:caml_ba_get_generic, + caml_ba_uint8_get16:caml_ba_uint8_get16, + caml_ba_uint8_get32:caml_ba_uint8_get32, + caml_ba_uint8_get64:caml_ba_uint8_get64, + caml_ba_get_1:caml_ba_get_1, + caml_ba_get_2:caml_ba_get_2, + caml_ba_get_3:caml_ba_get_3, + caml_ba_set_generic:caml_ba_set_generic, + caml_ba_uint8_set16:caml_ba_uint8_set16, + caml_ba_uint8_set32:caml_ba_uint8_set32, + caml_ba_uint8_set64:caml_ba_uint8_set64, + caml_ba_set_1:caml_ba_set_1, + caml_ba_set_2:caml_ba_set_2, + caml_ba_set_3:caml_ba_set_3, + caml_ba_fill:caml_ba_fill, + caml_ba_blit:caml_ba_blit, + caml_ba_sub:caml_ba_sub, + caml_ba_slice:caml_ba_slice, + caml_ba_reshape:caml_ba_reshape, + caml_ba_serialize:caml_ba_serialize, + caml_ba_deserialize:caml_ba_deserialize, + caml_ba_create_from:caml_ba_create_from, + caml_ba_hash:caml_ba_hash, + caml_ba_to_typed_array:caml_ba_to_typed_array, + caml_ba_kind_of_typed_array:caml_ba_kind_of_typed_array, + caml_ba_from_typed_array:caml_ba_from_typed_array, + caml_ml_debug_info_status:caml_ml_debug_info_status, + caml_backtrace_status:caml_backtrace_status, + caml_get_exception_backtrace:caml_get_exception_backtrace, + caml_get_exception_raw_backtrace:caml_get_exception_raw_backtrace, + caml_record_backtrace:caml_record_backtrace, + caml_convert_raw_backtrace:caml_convert_raw_backtrace, + caml_raw_backtrace_length:caml_raw_backtrace_length, + caml_raw_backtrace_next_slot:caml_raw_backtrace_next_slot, + caml_raw_backtrace_slot:caml_raw_backtrace_slot, + caml_restore_raw_backtrace:caml_restore_raw_backtrace, + caml_get_current_callstack:caml_get_current_callstack, + caml_convert_raw_backtrace_slot:caml_convert_raw_backtrace_slot, + caml_array_sub:caml_array_sub, + caml_array_append:caml_array_append, + caml_array_concat:caml_array_concat, + caml_array_blit:caml_array_blit, + caml_floatarray_blit:caml_floatarray_blit, + caml_array_set:caml_array_set, + caml_array_get:caml_array_get, + caml_array_fill:caml_array_fill, + caml_check_bound:caml_check_bound, + caml_make_vect:caml_make_vect, + caml_make_float_vect:caml_make_float_vect, + caml_floatarray_create:caml_floatarray_create}; + caml_fs_init(); + caml_register_global + (0,[248,caml_string_of_jsbytes("Out_of_memory"),-1],"Out_of_memory"); + caml_register_global + (1,[248,caml_string_of_jsbytes("Sys_error"),-2],"Sys_error"); + caml_register_global + (2,[248,caml_string_of_jsbytes("Failure"),-3],"Failure"); + caml_register_global + (3, + [248,caml_string_of_jsbytes("Invalid_argument"),-4], + "Invalid_argument"); + caml_register_global + (4,[248,caml_string_of_jsbytes("End_of_file"),-5],"End_of_file"); + caml_register_global + (5, + [248,caml_string_of_jsbytes("Division_by_zero"),-6], + "Division_by_zero"); + caml_register_global + (6,[248,caml_string_of_jsbytes("Not_found"),-7],"Not_found"); + caml_register_global + (7,[248,caml_string_of_jsbytes("Match_failure"),-8],"Match_failure"); + caml_register_global + (8,[248,caml_string_of_jsbytes("Stack_overflow"),-9],"Stack_overflow"); + caml_register_global + (9,[248,caml_string_of_jsbytes("Sys_blocked_io"),-10],"Sys_blocked_io"); + caml_register_global + (10,[248,caml_string_of_jsbytes("Assert_failure"),-11],"Assert_failure"); + caml_register_global + (11, + [248,caml_string_of_jsbytes("Undefined_recursive_module"),-12], + "Undefined_recursive_module"); + return} + (globalThis)); + + +//# 1 "../../.js/stdlib/stdlib.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_array_concat=runtime.caml_array_concat, + caml_array_get=runtime.caml_array_get, + caml_array_set=runtime.caml_array_set, + caml_array_sub=runtime.caml_array_sub, + caml_ba_change_layout=runtime.caml_ba_change_layout, + caml_ba_create=runtime.caml_ba_create, + caml_ba_dim_1=runtime.caml_ba_dim_1, + caml_ba_dim_2=runtime.caml_ba_dim_2, + caml_ba_kind=runtime.caml_ba_kind, + caml_ba_num_dims=runtime.caml_ba_num_dims, + caml_ba_reshape=runtime.caml_ba_reshape, + caml_ba_set_1=runtime.caml_ba_set_1, + caml_ba_set_2=runtime.caml_ba_set_2, + caml_ba_set_3=runtime.caml_ba_set_3, + caml_ba_set_generic=runtime.caml_ba_set_generic, + caml_ba_slice=runtime.caml_ba_slice, + caml_blit_bytes=runtime.caml_blit_bytes, + caml_blit_string=runtime.caml_blit_string, + caml_bswap16=runtime.caml_bswap16, + caml_bytes_get=runtime.caml_bytes_get, + caml_bytes_get16=runtime.caml_bytes_get16, + caml_bytes_get32=runtime.caml_bytes_get32, + caml_bytes_get64=runtime.caml_bytes_get64, + caml_bytes_of_string=runtime.caml_bytes_of_string, + caml_bytes_set=runtime.caml_bytes_set, + caml_bytes_set16=runtime.caml_bytes_set16, + caml_bytes_set32=runtime.caml_bytes_set32, + caml_bytes_set64=runtime.caml_bytes_set64, + caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get, + caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set, + caml_check_bound=runtime.caml_check_bound, + caml_compare=runtime.caml_compare, + caml_create_bytes=runtime.caml_create_bytes, + caml_div=runtime.caml_div, + caml_ephe_set_key=runtime.caml_ephe_set_key, + caml_ephe_unset_key=runtime.caml_ephe_unset_key, + caml_equal=runtime.caml_equal, + caml_fill_bytes=runtime.caml_fill_bytes, + caml_float_compare=runtime.caml_float_compare, + caml_float_of_string=runtime.caml_float_of_string, + caml_floatarray_blit=runtime.caml_floatarray_blit, + caml_floatarray_create=runtime.caml_floatarray_create, + caml_format_float=runtime.caml_format_float, + caml_format_int=runtime.caml_format_int, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_get_exception_raw_backtra=runtime.caml_get_exception_raw_backtrace, + caml_get_public_method=runtime.caml_get_public_method, + caml_greaterequal=runtime.caml_greaterequal, + caml_greaterthan=runtime.caml_greaterthan, + caml_hash=runtime.caml_hash, + caml_input_value=runtime.caml_input_value, + caml_int32_bswap=runtime.caml_int32_bswap, + caml_int64_add=runtime.caml_int64_add, + caml_int64_bswap=runtime.caml_int64_bswap, + caml_int64_compare=runtime.caml_int64_compare, + caml_int64_float_of_bits=runtime.caml_int64_float_of_bits, + caml_int64_format=runtime.caml_int64_format, + caml_int64_mul=runtime.caml_int64_mul, + caml_int64_of_int32=runtime.caml_int64_of_int32, + caml_int64_of_string=runtime.caml_int64_of_string, + caml_int64_or=runtime.caml_int64_or, + caml_int64_shift_left=runtime.caml_int64_shift_left, + caml_int64_shift_right_unsigne=runtime.caml_int64_shift_right_unsigned, + caml_int64_sub=runtime.caml_int64_sub, + caml_int_compare=runtime.caml_int_compare, + caml_int_of_string=runtime.caml_int_of_string, + caml_lessequal=runtime.caml_lessequal, + caml_lessthan=runtime.caml_lessthan, + caml_make_vect=runtime.caml_make_vect, + caml_marshal_data_size=runtime.caml_marshal_data_size, + caml_md5_string=runtime.caml_md5_string, + caml_ml_bytes_length=runtime.caml_ml_bytes_length, + caml_ml_channel_size=runtime.caml_ml_channel_size, + caml_ml_channel_size_64=runtime.caml_ml_channel_size_64, + caml_ml_close_channel=runtime.caml_ml_close_channel, + caml_ml_flush=runtime.caml_ml_flush, + caml_ml_input=runtime.caml_ml_input, + caml_ml_input_char=runtime.caml_ml_input_char, + caml_ml_open_descriptor_in=runtime.caml_ml_open_descriptor_in, + caml_ml_open_descriptor_out=runtime.caml_ml_open_descriptor_out, + caml_ml_output=runtime.caml_ml_output, + caml_ml_output_bytes=runtime.caml_ml_output_bytes, + caml_ml_output_char=runtime.caml_ml_output_char, + caml_ml_pos_in=runtime.caml_ml_pos_in, + caml_ml_set_binary_mode=runtime.caml_ml_set_binary_mode, + caml_ml_set_channel_name=runtime.caml_ml_set_channel_name, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_mod=runtime.caml_mod, + caml_mul=runtime.caml_mul, + caml_nextafter_float=runtime.caml_nextafter_float, + caml_notequal=runtime.caml_notequal, + caml_obj_block=runtime.caml_obj_block, + caml_obj_make_forward=runtime.caml_obj_make_forward, + caml_obj_tag=runtime.caml_obj_tag, + caml_output_value=runtime.caml_output_value, + caml_register_global=runtime.caml_register_global, + caml_register_named_value=runtime.caml_register_named_value, + caml_restore_raw_backtrace=runtime.caml_restore_raw_backtrace, + caml_set_oo_id=runtime.caml_set_oo_id, + caml_signbit_float=runtime.caml_signbit_float, + caml_string_compare=runtime.caml_string_compare, + caml_string_equal=runtime.caml_string_equal, + caml_string_get=runtime.caml_string_get, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_bytes=runtime.caml_string_of_bytes, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_string_unsafe_get=runtime.caml_string_unsafe_get, + caml_sys_argv=runtime.caml_sys_argv, + caml_sys_getenv=runtime.caml_sys_getenv, + caml_sys_open=runtime.caml_sys_open, + caml_sys_random_seed=runtime.caml_sys_random_seed, + caml_trampoline=runtime.caml_trampoline, + caml_trampoline_return=runtime.caml_trampoline_return, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + function caml_call5(f,a0,a1,a2,a3,a4) + {return f.length == 5 + ?f(a0,a1,a2,a3,a4) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} + function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) + {return f.length == 7 + ?f(a0,a1,a2,a3,a4,a5,a6) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} + var + global_data=runtime.caml_get_global_data(), + cst$0=caml_string_of_jsbytes("%,"), + cst_really_input=caml_string_of_jsbytes("really_input"), + cst_input=caml_string_of_jsbytes("input"), + cst_output_substring=caml_string_of_jsbytes("output_substring"), + cst_output=caml_string_of_jsbytes("output"), + cst_12g=caml_string_of_jsbytes("%.12g"), + cst=caml_string_of_jsbytes("."), + cst_false$1=caml_string_of_jsbytes("false"), + cst_true$1=caml_string_of_jsbytes("true"), + cst_false$0=caml_string_of_jsbytes("false"), + cst_true$0=caml_string_of_jsbytes("true"), + cst_bool_of_string=caml_string_of_jsbytes("bool_of_string"), + cst_true=caml_string_of_jsbytes("true"), + cst_false=caml_string_of_jsbytes("false"), + cst_char_of_int=caml_string_of_jsbytes("char_of_int"), + cst_Stdlib_Exit=caml_string_of_jsbytes("Stdlib.Exit"), + cst_Stdlib_Pervasives_Exit= + caml_string_of_jsbytes("Stdlib.Pervasives.Exit"), + cst_Stdlib_Sys_Break=caml_string_of_jsbytes("Stdlib.Sys.Break"), + ocaml_version=caml_string_of_jsbytes("4.14.0"), + ocaml_release=[0,4,14,0,0], + cst_Obj_Ephemeron_blit_key= + caml_string_of_jsbytes("Obj.Ephemeron.blit_key"), + cst_Obj_Ephemeron_check_key= + caml_string_of_jsbytes("Obj.Ephemeron.check_key"), + cst_Obj_Ephemeron_unset_key= + caml_string_of_jsbytes("Obj.Ephemeron.unset_key"), + cst_Obj_Ephemeron_set_key=caml_string_of_jsbytes("Obj.Ephemeron.set_key"), + cst_Obj_Ephemeron_get_key_copy= + caml_string_of_jsbytes("Obj.Ephemeron.get_key_copy"), + cst_Obj_Ephemeron_get_key=caml_string_of_jsbytes("Obj.Ephemeron.get_key"), + cst_Obj_Ephemeron_create=caml_string_of_jsbytes("Obj.Ephemeron.create"), + cst_Obj_extension_constructor$0= + caml_string_of_jsbytes("Obj.extension_constructor"), + cst_Obj_extension_constructor= + caml_string_of_jsbytes("Obj.extension_constructor"), + cst_CamlinternalLazy_Undefined= + caml_string_of_jsbytes("CamlinternalLazy.Undefined"), + cst_Seq_drop=caml_string_of_jsbytes("Seq.drop"), + cst_Seq_take=caml_string_of_jsbytes("Seq.take"), + cst_Seq_init=caml_string_of_jsbytes("Seq.init"), + cst_Stdlib_Seq_Forced_twice= + caml_string_of_jsbytes("Stdlib.Seq.Forced_twice"), + cst_option_is_None=caml_string_of_jsbytes("option is None"), + cst_result_is_Ok=caml_string_of_jsbytes("result is Ok _"), + cst_result_is_Error=caml_string_of_jsbytes("result is Error _"), + cst_true$2=caml_string_of_jsbytes("true"), + cst_false$2=caml_string_of_jsbytes("false"), + cst$1=caml_string_of_jsbytes("\\\\"), + cst$2=caml_string_of_jsbytes("\\'"), + cst_b=caml_string_of_jsbytes("\\b"), + cst_t=caml_string_of_jsbytes("\\t"), + cst_n=caml_string_of_jsbytes("\\n"), + cst_r=caml_string_of_jsbytes("\\r"), + cst_Char_chr=caml_string_of_jsbytes("Char.chr"), + cst_is_not_a_latin1_character= + caml_string_of_jsbytes(" is not a latin1 character"), + cst_04X=caml_string_of_jsbytes("%04X"), + cst_U=caml_string_of_jsbytes("U+"), + cst_is_not_an_Unicode_scalar_v= + caml_string_of_jsbytes(" is not an Unicode scalar value"), + cst_X=caml_string_of_jsbytes("%X"), + err_no_pred=caml_string_of_jsbytes("U+0000 has no predecessor"), + err_no_succ=caml_string_of_jsbytes("U+10FFFF has no successor"), + cst_List_map2=caml_string_of_jsbytes("List.map2"), + cst_List_iter2=caml_string_of_jsbytes("List.iter2"), + cst_List_fold_left2=caml_string_of_jsbytes("List.fold_left2"), + cst_List_fold_right2=caml_string_of_jsbytes("List.fold_right2"), + cst_List_for_all2=caml_string_of_jsbytes("List.for_all2"), + cst_List_exists2=caml_string_of_jsbytes("List.exists2"), + cst_List_combine=caml_string_of_jsbytes("List.combine"), + cst_List_rev_map2=caml_string_of_jsbytes("List.rev_map2"), + cst_List_init=caml_string_of_jsbytes("List.init"), + cst_List_nth$0=caml_string_of_jsbytes("List.nth"), + cst_nth=caml_string_of_jsbytes("nth"), + cst_List_nth=caml_string_of_jsbytes("List.nth"), + cst_tl=caml_string_of_jsbytes("tl"), + cst_hd=caml_string_of_jsbytes("hd"), + cst_index_out_of_bounds$2=caml_string_of_jsbytes("index out of bounds"), + cst_index_out_of_bounds$1=caml_string_of_jsbytes("index out of bounds"), + cst_index_out_of_bounds$0=caml_string_of_jsbytes("index out of bounds"), + cst_index_out_of_bounds=caml_string_of_jsbytes("index out of bounds"), + cst_Bytes_of_seq_cannot_grow_b= + caml_string_of_jsbytes("Bytes.of_seq: cannot grow bytes"), + cst_String_rcontains_from_Byte= + caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"), + cst_String_contains_from_Bytes= + caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"), + cst_String_rindex_from_opt_Byt= + caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"), + cst_String_rindex_from_Bytes_r= + caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"), + cst_String_index_from_opt_Byte= + caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"), + cst_String_index_from_Bytes_in= + caml_string_of_jsbytes("String.index_from / Bytes.index_from"), + cst_Bytes_concat=caml_string_of_jsbytes("Bytes.concat"), + cst_String_blit_Bytes_blit_str= + caml_string_of_jsbytes("String.blit / Bytes.blit_string"), + cst_Bytes_blit=caml_string_of_jsbytes("Bytes.blit"), + cst_String_fill_Bytes_fill= + caml_string_of_jsbytes("String.fill / Bytes.fill"), + cst_Bytes_extend=caml_string_of_jsbytes("Bytes.extend"), + cst_String_sub_Bytes_sub=caml_string_of_jsbytes("String.sub / Bytes.sub"), + cst_String_rcontains_from_Byte$0= + caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"), + cst_String_contains_from_Bytes$0= + caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"), + cst_String_rindex_from_opt_Byt$0= + caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"), + cst_String_rindex_from_Bytes_r$0= + caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"), + cst_String_index_from_opt_Byte$0= + caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"), + cst_String_index_from_Bytes_in$0= + caml_string_of_jsbytes("String.index_from / Bytes.index_from"), + cst$4=caml_string_of_jsbytes(""), + cst$3=caml_string_of_jsbytes(""), + cst_String_concat=caml_string_of_jsbytes("String.concat"), + empty$1=caml_string_of_jsbytes(""), + cst$5=caml_string_of_jsbytes("()"), + cst_Marshal_from_bytes=caml_string_of_jsbytes("Marshal.from_bytes"), + cst_Marshal_from_bytes$0=caml_string_of_jsbytes("Marshal.from_bytes"), + cst_Marshal_data_size=caml_string_of_jsbytes("Marshal.data_size"), + cst_Marshal_to_buffer_substrin= + caml_string_of_jsbytes("Marshal.to_buffer: substring out of bounds"), + cst_Array_combine=caml_string_of_jsbytes("Array.combine"), + cst_Array_exists2=caml_string_of_jsbytes("Array.exists2"), + cst_Array_for_all2=caml_string_of_jsbytes("Array.for_all2"), + cst_Array_map2_arrays_must_hav= + caml_string_of_jsbytes("Array.map2: arrays must have the same length"), + cst_Array_iter2_arrays_must_ha= + caml_string_of_jsbytes("Array.iter2: arrays must have the same length"), + cst_Array_blit=caml_string_of_jsbytes("Array.blit"), + cst_Array_fill=caml_string_of_jsbytes("Array.fill"), + cst_Array_sub=caml_string_of_jsbytes("Array.sub"), + cst_Array_init=caml_string_of_jsbytes("Array.init"), + cst_Stdlib_Array_Bottom=caml_string_of_jsbytes("Stdlib.Array.Bottom"), + cst_Float_Array_map2_arrays_mu= + caml_string_of_jsbytes + ("Float.Array.map2: arrays must have the same length"), + cst_Float_Array_iter2_arrays_m= + caml_string_of_jsbytes + ("Float.Array.iter2: arrays must have the same length"), + cst_Float_array_blit=caml_string_of_jsbytes("Float.array.blit"), + cst_Float_array_blit$0=caml_string_of_jsbytes("Float.array.blit"), + cst_Float_Array_fill=caml_string_of_jsbytes("Float.Array.fill"), + cst_Float_Array_sub=caml_string_of_jsbytes("Float.Array.sub"), + cst_Float_Array_concat=caml_string_of_jsbytes("Float.Array.concat"), + cst_Float_Array_init=caml_string_of_jsbytes("Float.Array.init"), + cst_Stdlib_Float_Array_Bottom= + caml_string_of_jsbytes("Stdlib.Float.Array.Bottom"), + cst_d=caml_string_of_jsbytes("%d"), + cst_d$0=caml_string_of_jsbytes("%d"), + zero$2=runtime.caml_int64_create_lo_mi_hi(0,0,0), + one$2=runtime.caml_int64_create_lo_mi_hi(1,0,0), + minus_one$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), + min_int$2=runtime.caml_int64_create_lo_mi_hi(0,0,32768), + max_int$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767), + cst_d$1=caml_string_of_jsbytes("%d"), + cst_Lexing_lex_refill_cannot_g= + caml_string_of_jsbytes("Lexing.lex_refill: cannot grow buffer"), + dummy_pos=[0,caml_string_of_jsbytes(""),0,0,-1], + zero_pos=[0,caml_string_of_jsbytes(""),1,0,0], + cst_syntax_error=caml_string_of_jsbytes("syntax error"), + cst_Stdlib_Parsing_YYexit=caml_string_of_jsbytes("Stdlib.Parsing.YYexit"), + cst_Stdlib_Parsing_Parse_error= + caml_string_of_jsbytes("Stdlib.Parsing.Parse_error"), + cst_Set_remove_min_elt=caml_string_of_jsbytes("Set.remove_min_elt"), + cst_Set_bal=caml_string_of_jsbytes("Set.bal"), + cst_Set_bal$0=caml_string_of_jsbytes("Set.bal"), + cst_Set_bal$1=caml_string_of_jsbytes("Set.bal"), + cst_Set_bal$2=caml_string_of_jsbytes("Set.bal"), + cst_Map_remove_min_elt=caml_string_of_jsbytes("Map.remove_min_elt"), + cst_Map_bal=caml_string_of_jsbytes("Map.bal"), + cst_Map_bal$0=caml_string_of_jsbytes("Map.bal"), + cst_Map_bal$1=caml_string_of_jsbytes("Map.bal"), + cst_Map_bal$2=caml_string_of_jsbytes("Map.bal"), + cst_Stdlib_Stack_Empty=caml_string_of_jsbytes("Stdlib.Stack.Empty"), + cst_Stdlib_Queue_Empty=caml_string_of_jsbytes("Stdlib.Queue.Empty"), + cst_count=caml_string_of_jsbytes("{count = "), + cst_data=caml_string_of_jsbytes("; data = "), + cst$6=caml_string_of_jsbytes("}"), + cst_Sempty=caml_string_of_jsbytes("Sempty"), + cst_Scons=caml_string_of_jsbytes("Scons ("), + cst$7=caml_string_of_jsbytes(", "), + cst$8=caml_string_of_jsbytes(")"), + cst_Sapp=caml_string_of_jsbytes("Sapp ("), + cst$9=caml_string_of_jsbytes(", "), + cst$10=caml_string_of_jsbytes(")"), + cst_Slazy=caml_string_of_jsbytes("Slazy"), + cst_Sgen=caml_string_of_jsbytes("Sgen"), + cst_Sbuffio=caml_string_of_jsbytes("Sbuffio"), + cst_Stdlib_Stream_Failure=caml_string_of_jsbytes("Stdlib.Stream.Failure"), + cst_Stdlib_Stream_Error=caml_string_of_jsbytes("Stdlib.Stream.Error"), + cst_Buffer_truncate=caml_string_of_jsbytes("Buffer.truncate"), + cst_Buffer_add_channel=caml_string_of_jsbytes("Buffer.add_channel"), + cst_Buffer_add_substring_add_s= + caml_string_of_jsbytes("Buffer.add_substring/add_subbytes"), + cst_Buffer_add_cannot_grow_buf= + caml_string_of_jsbytes("Buffer.add: cannot grow buffer"), + cst_Buffer_nth=caml_string_of_jsbytes("Buffer.nth"), + cst_Buffer_blit=caml_string_of_jsbytes("Buffer.blit"), + cst_Buffer_sub=caml_string_of_jsbytes("Buffer.sub"), + cst_c=caml_string_of_jsbytes("%c"), + cst_s=caml_string_of_jsbytes("%s"), + cst_i=caml_string_of_jsbytes("%i"), + cst_li=caml_string_of_jsbytes("%li"), + cst_ni=caml_string_of_jsbytes("%ni"), + cst_Li=caml_string_of_jsbytes("%Li"), + cst_f=caml_string_of_jsbytes("%f"), + cst_B=caml_string_of_jsbytes("%B"), + cst$21=caml_string_of_jsbytes("%{"), + cst$22=caml_string_of_jsbytes("%}"), + cst$23=caml_string_of_jsbytes("%("), + cst$24=caml_string_of_jsbytes("%)"), + cst_a=caml_string_of_jsbytes("%a"), + cst_t$0=caml_string_of_jsbytes("%t"), + cst$25=caml_string_of_jsbytes("%?"), + cst_r$0=caml_string_of_jsbytes("%r"), + cst_r$1=caml_string_of_jsbytes("%_r"), + cst_u$0=caml_string_of_jsbytes("%u"), + cst_Printf_bad_conversion= + caml_string_of_jsbytes("Printf: bad conversion %["), + cst_Printf_bad_conversion$0= + caml_string_of_jsbytes("Printf: bad conversion %_"), + cst$30=caml_string_of_jsbytes("@{"), + cst$31=caml_string_of_jsbytes("@["), + cst$32=caml_string_of_jsbytes("@{"), + cst$33=caml_string_of_jsbytes("@["), + cst$34=caml_string_of_jsbytes("@{"), + cst$35=caml_string_of_jsbytes("@["), + cst_0=caml_string_of_jsbytes("0"), + cst_padding=caml_string_of_jsbytes("padding"), + cst_precision=caml_string_of_jsbytes("precision"), + cst$40=caml_string_of_jsbytes("'*'"), + cst$38=caml_string_of_jsbytes("'-'"), + cst_0$2=caml_string_of_jsbytes("'0'"), + cst$39=caml_string_of_jsbytes("'*'"), + cst_0$0=caml_string_of_jsbytes("0"), + cst_0$1=caml_string_of_jsbytes("0"), + cst_precision$0=caml_string_of_jsbytes("precision"), + cst_precision$1=caml_string_of_jsbytes("precision"), + cst$41=caml_string_of_jsbytes("'+'"), + cst$42=caml_string_of_jsbytes("'#'"), + cst$43=caml_string_of_jsbytes("' '"), + cst_padding$0=caml_string_of_jsbytes("`padding'"), + cst_precision$2=caml_string_of_jsbytes("`precision'"), + cst$44=caml_string_of_jsbytes("'+'"), + cst$45=caml_string_of_jsbytes("'_'"), + sub_format=[0,0,caml_string_of_jsbytes("")], + formatting_lit=[0,caml_string_of_jsbytes("@;"),1,0], + cst_digit=caml_string_of_jsbytes("digit"), + cst_character=caml_string_of_jsbytes("character ')'"), + cst_character$0=caml_string_of_jsbytes("character '}'"), + cst$49=caml_string_of_jsbytes("'#'"), + cst$46=caml_string_of_jsbytes("'+'"), + cst$47=caml_string_of_jsbytes("'+'"), + cst$48=caml_string_of_jsbytes("' '"), + cst$50=caml_string_of_jsbytes("'+'"), + cst_non_zero_widths_are_unsupp= + caml_string_of_jsbytes + ("non-zero widths are unsupported for %c conversions"), + cst_unexpected_end_of_format= + caml_string_of_jsbytes("unexpected end of format"), + cst$36=caml_string_of_jsbytes(""), + cst$37=caml_string_of_jsbytes(""), + cst_b$0=caml_string_of_jsbytes("b"), + cst_h=caml_string_of_jsbytes("h"), + cst_hov=caml_string_of_jsbytes("hov"), + cst_hv=caml_string_of_jsbytes("hv"), + cst_v=caml_string_of_jsbytes("v"), + cst_nan=caml_string_of_jsbytes("nan"), + cst_neg_infinity=caml_string_of_jsbytes("neg_infinity"), + cst_infinity=caml_string_of_jsbytes("infinity"), + cst$29=caml_string_of_jsbytes("."), + cst_nd$0=caml_string_of_jsbytes("%+nd"), + cst_nd$1=caml_string_of_jsbytes("% nd"), + cst_ni$1=caml_string_of_jsbytes("%+ni"), + cst_ni$2=caml_string_of_jsbytes("% ni"), + cst_nx=caml_string_of_jsbytes("%nx"), + cst_nx$0=caml_string_of_jsbytes("%#nx"), + cst_nX=caml_string_of_jsbytes("%nX"), + cst_nX$0=caml_string_of_jsbytes("%#nX"), + cst_no=caml_string_of_jsbytes("%no"), + cst_no$0=caml_string_of_jsbytes("%#no"), + cst_nd=caml_string_of_jsbytes("%nd"), + cst_ni$0=caml_string_of_jsbytes("%ni"), + cst_nu=caml_string_of_jsbytes("%nu"), + cst_ld$0=caml_string_of_jsbytes("%+ld"), + cst_ld$1=caml_string_of_jsbytes("% ld"), + cst_li$1=caml_string_of_jsbytes("%+li"), + cst_li$2=caml_string_of_jsbytes("% li"), + cst_lx=caml_string_of_jsbytes("%lx"), + cst_lx$0=caml_string_of_jsbytes("%#lx"), + cst_lX=caml_string_of_jsbytes("%lX"), + cst_lX$0=caml_string_of_jsbytes("%#lX"), + cst_lo=caml_string_of_jsbytes("%lo"), + cst_lo$0=caml_string_of_jsbytes("%#lo"), + cst_ld=caml_string_of_jsbytes("%ld"), + cst_li$0=caml_string_of_jsbytes("%li"), + cst_lu=caml_string_of_jsbytes("%lu"), + cst_Ld$0=caml_string_of_jsbytes("%+Ld"), + cst_Ld$1=caml_string_of_jsbytes("% Ld"), + cst_Li$1=caml_string_of_jsbytes("%+Li"), + cst_Li$2=caml_string_of_jsbytes("% Li"), + cst_Lx=caml_string_of_jsbytes("%Lx"), + cst_Lx$0=caml_string_of_jsbytes("%#Lx"), + cst_LX=caml_string_of_jsbytes("%LX"), + cst_LX$0=caml_string_of_jsbytes("%#LX"), + cst_Lo=caml_string_of_jsbytes("%Lo"), + cst_Lo$0=caml_string_of_jsbytes("%#Lo"), + cst_Ld=caml_string_of_jsbytes("%Ld"), + cst_Li$0=caml_string_of_jsbytes("%Li"), + cst_Lu=caml_string_of_jsbytes("%Lu"), + cst_d$3=caml_string_of_jsbytes("%+d"), + cst_d$4=caml_string_of_jsbytes("% d"), + cst_i$1=caml_string_of_jsbytes("%+i"), + cst_i$2=caml_string_of_jsbytes("% i"), + cst_x=caml_string_of_jsbytes("%x"), + cst_x$0=caml_string_of_jsbytes("%#x"), + cst_X$0=caml_string_of_jsbytes("%X"), + cst_X$1=caml_string_of_jsbytes("%#X"), + cst_o=caml_string_of_jsbytes("%o"), + cst_o$0=caml_string_of_jsbytes("%#o"), + cst_d$2=caml_string_of_jsbytes("%d"), + cst_i$0=caml_string_of_jsbytes("%i"), + cst_u=caml_string_of_jsbytes("%u"), + cst$26=caml_string_of_jsbytes("%!"), + cst$27=caml_string_of_jsbytes("@{"), + cst$28=caml_string_of_jsbytes("@["), + cst_0c=caml_string_of_jsbytes("0c"), + cst$20=caml_string_of_jsbytes("%%"), + cst$12=caml_string_of_jsbytes("@]"), + cst$13=caml_string_of_jsbytes("@}"), + cst$14=caml_string_of_jsbytes("@?"), + cst$15=caml_string_of_jsbytes("@\n"), + cst$16=caml_string_of_jsbytes("@."), + cst$17=caml_string_of_jsbytes("@@"), + cst$18=caml_string_of_jsbytes("@%"), + cst$19=caml_string_of_jsbytes("@"), + cst$11=caml_string_of_jsbytes(".*"), + cst_CamlinternalFormat_Type_mi= + caml_string_of_jsbytes("CamlinternalFormat.Type_mismatch"), + cst$58=caml_string_of_jsbytes(""), + cst$59=caml_string_of_jsbytes("\n"), + cst_a_boolean=caml_string_of_jsbytes("a boolean"), + cst_an_integer=caml_string_of_jsbytes("an integer"), + cst_an_integer$0=caml_string_of_jsbytes("an integer"), + cst_a_float=caml_string_of_jsbytes("a float"), + cst_a_float$0=caml_string_of_jsbytes("a float"), + cst$55=caml_string_of_jsbytes(""), + cst$56=caml_string_of_jsbytes(" "), + cst$57=caml_string_of_jsbytes(""), + cst_one_of=caml_string_of_jsbytes("one of: "), + cst_Arg_Expand_is_is_only_allo= + caml_string_of_jsbytes + ("Arg.Expand is is only allowed with Arg.parse_and_expand_argv_dynamic"), + cst_no_argument=caml_string_of_jsbytes("no argument"), + cst$54=caml_string_of_jsbytes("(?)"), + cst_help$3=caml_string_of_jsbytes("--help"), + cst_help$4=caml_string_of_jsbytes("-help"), + cst_help$2=caml_string_of_jsbytes("-help"), + cst_Display_this_list_of_optio= + caml_string_of_jsbytes(" Display this list of options"), + cst_help=caml_string_of_jsbytes("-help"), + cst_help$1=caml_string_of_jsbytes("--help"), + cst_Display_this_list_of_optio$0= + caml_string_of_jsbytes(" Display this list of options"), + cst_help$0=caml_string_of_jsbytes("--help"), + cst$51=caml_string_of_jsbytes("}"), + cst$52=caml_string_of_jsbytes("|"), + cst$53=caml_string_of_jsbytes("{"), + cst_none=caml_string_of_jsbytes(""), + cst_Stdlib_Arg_Bad=caml_string_of_jsbytes("Stdlib.Arg.Bad"), + cst_Stdlib_Arg_Help=caml_string_of_jsbytes("Stdlib.Arg.Help"), + cst_Stdlib_Arg_Stop=caml_string_of_jsbytes("Stdlib.Arg.Stop"), + cst$61=caml_string_of_jsbytes(""), + cst_Fatal_error_out_of_memory_= + caml_string_of_jsbytes + ("Fatal error: out of memory in uncaught exception handler"), + cst$65=caml_string_of_jsbytes(""), + cst_Program_not_linked_with_g_= + caml_string_of_jsbytes + ("(Program not linked with -g, cannot print stack backtrace)\n"), + cst_Raised_at=caml_string_of_jsbytes("Raised at"), + cst_Re_raised_at=caml_string_of_jsbytes("Re-raised at"), + cst_Raised_by_primitive_operat= + caml_string_of_jsbytes("Raised by primitive operation at"), + cst_Called_from=caml_string_of_jsbytes("Called from"), + cst_inlined=caml_string_of_jsbytes(" (inlined)"), + cst$64=caml_string_of_jsbytes(""), + partial=[4,0,0,0,[12,45,[4,0,0,0,0]]], + cst_Out_of_memory=caml_string_of_jsbytes("Out of memory"), + cst_Stack_overflow=caml_string_of_jsbytes("Stack overflow"), + cst_Pattern_matching_failed= + caml_string_of_jsbytes("Pattern matching failed"), + cst_Assertion_failed=caml_string_of_jsbytes("Assertion failed"), + cst_Undefined_recursive_module= + caml_string_of_jsbytes("Undefined recursive module"), + cst$62=caml_string_of_jsbytes(""), + cst$63=caml_string_of_jsbytes(""), + cst$60=caml_string_of_jsbytes("_"), + locfmt= + [0, + [11, + caml_string_of_jsbytes('File "'), + [2, + 0, + [11, + caml_string_of_jsbytes('", line '), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", characters "), + [4, + 0, + 0, + 0, + [12,45,[4,0,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]]]]]], + caml_string_of_jsbytes('File "%s", line %d, characters %d-%d: %s')], + cst_Fun_Finally_raised=caml_string_of_jsbytes("Fun.Finally_raised: "), + cst_Stdlib_Fun_Finally_raised= + caml_string_of_jsbytes("Stdlib.Fun.Finally_raised"), + cst_Digest_from_hex$0=caml_string_of_jsbytes("Digest.from_hex"), + cst_Digest_from_hex=caml_string_of_jsbytes("Digest.from_hex"), + cst_Digest_to_hex=caml_string_of_jsbytes("Digest.to_hex"), + cst_Digest_substring=caml_string_of_jsbytes("Digest.substring"), + cst_Random_int64=caml_string_of_jsbytes("Random.int64"), + cst_Random_int32=caml_string_of_jsbytes("Random.int32"), + cst_Random_full_int=caml_string_of_jsbytes("Random.full_int"), + cst_Random_int=caml_string_of_jsbytes("Random.int"), + cst_x$1=caml_string_of_jsbytes("x"), + cst_Hashtbl_unsupported_hash_t= + caml_string_of_jsbytes("Hashtbl: unsupported hash table format"), + cst_OCAMLRUNPARAM=caml_string_of_jsbytes("OCAMLRUNPARAM"), + cst_CAMLRUNPARAM=caml_string_of_jsbytes("CAMLRUNPARAM"), + cst$66=caml_string_of_jsbytes(""), + cst_Weak_Make_hash_bucket_cann= + caml_string_of_jsbytes("Weak.Make: hash bucket cannot grow more"), + cst_Weak_fill=caml_string_of_jsbytes("Weak.fill"), + cst_Weak_blit=caml_string_of_jsbytes("Weak.blit"), + cst_Weak_check=caml_string_of_jsbytes("Weak.check"), + cst_Weak_get_copy=caml_string_of_jsbytes("Weak.get_copy"), + cst_Weak_get=caml_string_of_jsbytes("Weak.get"), + cst_Weak_set=caml_string_of_jsbytes("Weak.set"), + cst_Weak_create=caml_string_of_jsbytes("Weak.create"), + cst$84=caml_string_of_jsbytes(""), + cst$85=caml_string_of_jsbytes(""), + cst$83=caml_string_of_jsbytes("."), + cst$80=caml_string_of_jsbytes(">"), + cst$81=caml_string_of_jsbytes("<\/"), + cst$82=caml_string_of_jsbytes(""), + cst$77=caml_string_of_jsbytes(">"), + cst$78=caml_string_of_jsbytes("<"), + cst$79=caml_string_of_jsbytes(""), + cst$76=caml_string_of_jsbytes("\n"), + cst_Format_pp_set_geometry= + caml_string_of_jsbytes("Format.pp_set_geometry: "), + cst$72=caml_string_of_jsbytes(""), + cst$73=caml_string_of_jsbytes(""), + cst$74=caml_string_of_jsbytes(""), + cst$75=caml_string_of_jsbytes(""), + cst$68=caml_string_of_jsbytes(""), + cst$69=caml_string_of_jsbytes(""), + cst$70=caml_string_of_jsbytes(""), + cst$71=caml_string_of_jsbytes(""), + cst$67=caml_string_of_jsbytes(""), + cst_Stdlib_Format_String_tag= + caml_string_of_jsbytes("Stdlib.Format.String_tag"), + cst_end_of_input_not_found= + caml_string_of_jsbytes("end of input not found"), + cst_scanf_bad_conversion_a= + caml_string_of_jsbytes('scanf: bad conversion "%a"'), + cst_scanf_bad_conversion_t= + caml_string_of_jsbytes('scanf: bad conversion "%t"'), + cst_scanf_missing_reader=caml_string_of_jsbytes("scanf: missing reader"), + cst_scanf_bad_conversion_custo= + caml_string_of_jsbytes('scanf: bad conversion "%?" (custom converter)'), + cst_scanf_bad_conversion= + caml_string_of_jsbytes('scanf: bad conversion "%*"'), + cst_scanf_bad_conversion$0= + caml_string_of_jsbytes('scanf: bad conversion "%*"'), + cst_scanf_bad_conversion$1= + caml_string_of_jsbytes('scanf: bad conversion "%-"'), + cst_scanf_bad_conversion$2= + caml_string_of_jsbytes('scanf: bad conversion "%*"'), + cst$91=caml_string_of_jsbytes('"'), + cst$92=caml_string_of_jsbytes('"'), + cst$89=caml_string_of_jsbytes('"'), + cst$90=caml_string_of_jsbytes('"'), + cst$88=caml_string_of_jsbytes('"'), + cst_in_format=caml_string_of_jsbytes(' in format "'), + cst_an=caml_string_of_jsbytes("an"), + cst_x$2=caml_string_of_jsbytes("x"), + cst_nfinity=caml_string_of_jsbytes("nfinity"), + cst_digits=caml_string_of_jsbytes("digits"), + cst_decimal_digits=caml_string_of_jsbytes("decimal digits"), + cst_0b=caml_string_of_jsbytes("0b"), + cst_0o=caml_string_of_jsbytes("0o"), + cst_0u=caml_string_of_jsbytes("0u"), + cst_0x=caml_string_of_jsbytes("0x"), + cst_false$3=caml_string_of_jsbytes("false"), + cst_true$3=caml_string_of_jsbytes("true"), + cst_not_a_valid_float_in_hexad= + caml_string_of_jsbytes("not a valid float in hexadecimal notation"), + cst_no_dot_or_exponent_part_fo= + caml_string_of_jsbytes("no dot or exponent part found in float token"), + cst$87=caml_string_of_jsbytes("-"), + cst_unnamed_function=caml_string_of_jsbytes("unnamed function"), + cst_unnamed_character_string= + caml_string_of_jsbytes("unnamed character string"), + cst_unnamed_Stdlib_input_chann= + caml_string_of_jsbytes("unnamed Stdlib input channel"), + cst$86=caml_string_of_jsbytes("-"), + cst_Stdlib_Scanf_Scan_failure= + caml_string_of_jsbytes("Stdlib.Scanf.Scan_failure"), + cst_binary=caml_string_of_jsbytes("binary"), + cst_octal=caml_string_of_jsbytes("octal"), + cst_hexadecimal=caml_string_of_jsbytes("hexadecimal"), + cst_a_Char=caml_string_of_jsbytes("a Char"), + cst_a_String=caml_string_of_jsbytes("a String"), + cst$93=caml_string_of_jsbytes(""), + cst_CamlinternalMod_update_mod= + caml_string_of_jsbytes("CamlinternalMod.update_mod: not a module"), + cst_CamlinternalMod_init_mod_n= + caml_string_of_jsbytes("CamlinternalMod.init_mod: not a module"), + cst$94=caml_string_of_jsbytes(""), + cst$95=caml_string_of_jsbytes(""), + cst$96=caml_string_of_jsbytes(""), + cst$97=caml_string_of_jsbytes(""), + cst$99=caml_string_of_jsbytes(""), + cst$98=caml_string_of_jsbytes(""), + cst_Illegal_character=caml_string_of_jsbytes("Illegal character "), + cst_Filename_chop_extension= + caml_string_of_jsbytes("Filename.chop_extension"), + cst$127=caml_string_of_jsbytes(""), + cst_Filename_chop_suffix=caml_string_of_jsbytes("Filename.chop_suffix"), + cst$126=caml_string_of_jsbytes(""), + cst_2_1$0=caml_string_of_jsbytes(" 2>&1"), + cst_2$0=caml_string_of_jsbytes(" 2>"), + cst$125=caml_string_of_jsbytes(""), + cst$117=caml_string_of_jsbytes(" >"), + cst$124=caml_string_of_jsbytes(""), + cst$118=caml_string_of_jsbytes(" <"), + cst$123=caml_string_of_jsbytes(""), + cst$119=caml_string_of_jsbytes(" "), + cst$120=caml_string_of_jsbytes(" "), + cst$121=caml_string_of_jsbytes('"'), + cst$122=caml_string_of_jsbytes(""), + cst_Filename_quote_command_bad= + caml_string_of_jsbytes("Filename.quote_command: bad file name "), + cst$115=caml_string_of_jsbytes('"'), + cst$116=caml_string_of_jsbytes('"'), + cst$113=caml_string_of_jsbytes("./"), + cst$112=caml_string_of_jsbytes(".\\"), + cst$111=caml_string_of_jsbytes("../"), + cst$110=caml_string_of_jsbytes("..\\"), + cst_2_1=caml_string_of_jsbytes(" 2>&1"), + cst_2=caml_string_of_jsbytes(" 2>"), + cst$109=caml_string_of_jsbytes(""), + cst$104=caml_string_of_jsbytes(" >"), + cst$108=caml_string_of_jsbytes(""), + cst$105=caml_string_of_jsbytes(" <"), + cst$107=caml_string_of_jsbytes(""), + cst$106=caml_string_of_jsbytes(" "), + cst$103=caml_string_of_jsbytes("./"), + cst$102=caml_string_of_jsbytes("../"), + cst$101=caml_string_of_jsbytes(""), + cst$100=caml_string_of_jsbytes(""), + null$0=caml_string_of_jsbytes("/dev/null"), + current_dir_name=caml_string_of_jsbytes("."), + parent_dir_name=caml_string_of_jsbytes(".."), + dir_sep=caml_string_of_jsbytes("/"), + cst_TMPDIR=caml_string_of_jsbytes("TMPDIR"), + cst_tmp=caml_string_of_jsbytes("/tmp"), + quotequote=caml_string_of_jsbytes("'\\''"), + null$1=caml_string_of_jsbytes("NUL"), + current_dir_name$0=caml_string_of_jsbytes("."), + parent_dir_name$0=caml_string_of_jsbytes(".."), + dir_sep$0=caml_string_of_jsbytes("\\"), + cst_TEMP=caml_string_of_jsbytes("TEMP"), + cst$114=caml_string_of_jsbytes("."), + null$2=caml_string_of_jsbytes("/dev/null"), + current_dir_name$1=caml_string_of_jsbytes("."), + parent_dir_name$1=caml_string_of_jsbytes(".."), + dir_sep$1=caml_string_of_jsbytes("/"), + cst_Cygwin=caml_string_of_jsbytes("Cygwin"), + cst_Win32=caml_string_of_jsbytes("Win32"), + zero$4=[254,0.,0.], + one$4=[254,1.,0.], + i=[254,0.,1.], + cst_Bigarray_array3_of_genarra= + caml_string_of_jsbytes("Bigarray.array3_of_genarray"), + cst_Bigarray_array2_of_genarra= + caml_string_of_jsbytes("Bigarray.array2_of_genarray"), + cst_Bigarray_array1_of_genarra= + caml_string_of_jsbytes("Bigarray.array1_of_genarray"), + cst_Bigarray_array0_of_genarra= + caml_string_of_jsbytes("Bigarray.array0_of_genarray"), + cst_Bigarray_Array3_of_array_n= + caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"), + cst_Bigarray_Array3_of_array_n$0= + caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"), + cst_Bigarray_Array2_of_array_n= + caml_string_of_jsbytes("Bigarray.Array2.of_array: non-rectangular data"), + cst_In_channel_input_all_chann= + caml_string_of_jsbytes + ("In_channel.input_all: channel content is larger than maximum string length"), + Invalid_argument=global_data.Invalid_argument, + Failure=global_data.Failure, + Match_failure=global_data.Match_failure, + Assert_failure=global_data.Assert_failure, + Not_found=global_data.Not_found, + Out_of_memory=global_data.Out_of_memory, + Stack_overflow=global_data.Stack_overflow, + Sys_error=global_data.Sys_error, + End_of_file=global_data.End_of_file, + Division_by_zero=global_data.Division_by_zero, + Sys_blocked_io=global_data.Sys_blocked_io, + Undefined_recursive_module=global_data.Undefined_recursive_module, + _l_=[0,0,[0,6,0]], + _k_=[0,0,[0,7,0]], + _j_=[0,1,[0,3,[0,4,[0,6,0]]]], + _i_=[0,1,[0,3,[0,4,[0,7,0]]]], + _g_=[0,1], + _h_=[0,0], + _a_=runtime.caml_int64_create_lo_mi_hi(0,0,32752), + _b_=runtime.caml_int64_create_lo_mi_hi(0,0,65520), + _c_=runtime.caml_int64_create_lo_mi_hi(1,0,32752), + _d_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32751), + _e_=runtime.caml_int64_create_lo_mi_hi(0,0,16), + _f_=runtime.caml_int64_create_lo_mi_hi(0,0,15536), + _n_=[0,caml_string_of_jsbytes("obj.ml"),95,4], + _r_=[0,caml_string_of_jsbytes("seq.ml"),596,4], + _x_=[0,caml_string_of_jsbytes("uchar.ml"),88,18], + _w_=[0,caml_string_of_jsbytes("uchar.ml"),91,7], + _v_=[0,caml_string_of_jsbytes("uchar.ml"),80,18], + _u_=[0,caml_string_of_jsbytes("uchar.ml"),85,7], + _A_=[0,0,0], + _G_=[0,caml_string_of_jsbytes("bytes.ml"),808,20], + _F_=[0,caml_string_of_jsbytes("bytes.ml"),819,9], + _E_=[0,caml_string_of_jsbytes("bytes.ml"),754,20], + _D_=[0,caml_string_of_jsbytes("bytes.ml"),765,9], + _C_=[0,caml_string_of_jsbytes("bytes.ml"),642,20], + _B_=[0,caml_string_of_jsbytes("bytes.ml"),667,9], + _H_=[0,caml_string_of_jsbytes("array.ml"),322,4], + _J_=[0,caml_string_of_jsbytes("float.ml"),395,6], + _I_=[0,caml_string_of_jsbytes("float.ml"),222,14], + _U_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), + _T_=runtime.caml_int64_create_lo_mi_hi(0,0,0), + _S_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _R_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _V_=[0,0,0,0], + _W_=[0,0,0], + _X_=[0,caml_string_of_jsbytes("set.ml"),570,18], + _Y_=[0,0,0,0], + _Z_=[0,caml_string_of_jsbytes("map.ml"),400,10], + ___=[0,0,0], + _$_=[0,caml_string_of_jsbytes("stream.ml"),53,12], + _aa_=[0,0], + _ab_=[0,caml_string_of_jsbytes("stream.ml"),82,12], + _af_=[0,caml_string_of_jsbytes("buffer.ml"),231,9], + _ae_=[0,caml_string_of_jsbytes("buffer.ml"),212,2], + _ad_=[0,caml_string_of_jsbytes("buffer.ml"),93,2], + _ac_=[0,caml_string_of_jsbytes("buffer.ml"),94,2], + _ah_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),850,23], + _as_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),814,21], + _ak_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),815,21], + _at_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),818,21], + _al_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),819,21], + _au_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),822,19], + _am_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),823,19], + _av_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),826,22], + _an_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),827,22], + _aw_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),831,30], + _ao_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),832,30], + _aq_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),836,26], + _ai_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),837,26], + _ar_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),846,28], + _aj_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),847,28], + _ap_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),851,23], + _ay_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1558,4], + _az_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1626,39], + _aA_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1649,31], + _aB_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1650,31], + _aC_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1830,8], + _a6_= + [0, + [11, + caml_string_of_jsbytes("bad input: format type mismatch between "), + [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]], + caml_string_of_jsbytes + ("bad input: format type mismatch between %S and %S")], + _a5_= + [0, + [11, + caml_string_of_jsbytes("bad input: format type mismatch between "), + [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]], + caml_string_of_jsbytes + ("bad input: format type mismatch between %S and %S")], + _aI_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4,0,0,0,[11,caml_string_of_jsbytes(", duplicate flag "),[1,0]]]]]], + caml_string_of_jsbytes + ("invalid format %S: at character number %d, duplicate flag %C")], + _aJ_=[0,1,0], + _aK_=[0,0], + _aL_=[1,0], + _aM_=[1,1], + _aO_=[1,1], + _aN_=[1,1], + _aS_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", flag "), + [1, + [11, + caml_string_of_jsbytes(" is only allowed after the '"), + [12, + 37, + [11, + caml_string_of_jsbytes("', before padding and precision"), + 0]]]]]]]]], + caml_string_of_jsbytes + ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")], + _aP_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(', invalid conversion "'), + [12,37,[0,[12,34,0]]]]]]]], + caml_string_of_jsbytes + ('invalid format %S: at character number %d, invalid conversion "%%%c"')], + _aQ_=[0,0], + _aR_=[0,0], + _aT_=[0,[12,64,0]], + _aU_=[0,caml_string_of_jsbytes("@ "),1,0], + _aV_=[0,caml_string_of_jsbytes("@,"),0,0], + _aW_=[2,60], + _aX_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": '"), + [12, + 37, + [11, + caml_string_of_jsbytes + ("' alone is not accepted in character sets, use "), + [12, + 37, + [12, + 37, + [11, + caml_string_of_jsbytes(" instead at position "), + [4,0,0,0,[12,46,0]]]]]]]]]], + caml_string_of_jsbytes + ("invalid format %S: '%%' alone is not accepted in character sets, use %%%% instead at position %d.")], + _aY_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": integer "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(" is greater than the limit "), + [4,0,0,0,0]]]]]], + caml_string_of_jsbytes + ("invalid format %S: integer %d is greater than the limit %d")], + _aZ_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11], + _a0_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(': unclosed sub-format, expected "'), + [12, + 37, + [0, + [11,caml_string_of_jsbytes('" at character number '),[4,0,0,0,0]]]]]]], + caml_string_of_jsbytes + ('invalid format %S: unclosed sub-format, expected "%%%c" at character number %d')], + _a1_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2899,34], + _a2_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2935,28], + _a3_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2957,11], + _a4_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", "), + [2, + 0, + [11, + caml_string_of_jsbytes(" is incompatible with '"), + [0,[11,caml_string_of_jsbytes("' in sub-format "),[3,0,0]]]]]]]]]], + caml_string_of_jsbytes + ("invalid format %S: at character number %d, %s is incompatible with '%c' in sub-format %S")], + _aH_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", "), + [2,0,[11,caml_string_of_jsbytes(" expected, read "),[1,0]]]]]]]], + caml_string_of_jsbytes + ("invalid format %S: at character number %d, %s expected, read %C")], + _aG_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(", '"), + [0,[11,caml_string_of_jsbytes("' without "),[2,0,0]]]]]]]], + caml_string_of_jsbytes + ("invalid format %S: at character number %d, '%c' without %s")], + _aF_= + [0, + [11, + caml_string_of_jsbytes("invalid format "), + [3, + 0, + [11, + caml_string_of_jsbytes(": at character number "), + [4,0,0,0,[11,caml_string_of_jsbytes(", "),[2,0,0]]]]]], + caml_string_of_jsbytes("invalid format %S: at character number %d, %s")], + _aE_= + [0, + [11,caml_string_of_jsbytes("invalid box description "),[3,0,0]], + caml_string_of_jsbytes("invalid box description %S")], + _aD_=[0,0,4], + _ax_=[0,103], + _ag_=[0,0,0], + _bq_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")], + _bk_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _bl_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _bi_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _bj_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _bg_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _bh_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _ba_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(": unknown option '"), + [2,0,[11,caml_string_of_jsbytes("'.\n"),0]]]], + caml_string_of_jsbytes("%s: unknown option '%s'.\n")], + _bd_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(": wrong argument '"), + [2, + 0, + [11, + caml_string_of_jsbytes("'; option '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' expects "), + [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]], + caml_string_of_jsbytes + ("%s: wrong argument '%s'; option '%s' expects %s.\n")], + _be_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(": option '"), + [2,0,[11,caml_string_of_jsbytes("' needs an argument.\n"),0]]]], + caml_string_of_jsbytes("%s: option '%s' needs an argument.\n")], + _bf_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(": "), + [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]], + caml_string_of_jsbytes("%s: %s.\n")], + _bb_=[0,caml_string_of_jsbytes("-help")], + _bc_=[0,caml_string_of_jsbytes("--help")], + _a$_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _a__=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _a9_=[0,caml_string_of_jsbytes("-help")], + _a7_= + [0, + [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[12,10,0]]]]], + caml_string_of_jsbytes(" %s %s\n")], + _a8_= + [0, + [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[2,0,[12,10,0]]]]]], + caml_string_of_jsbytes(" %s %s%s\n")], + _bv_= + [0, + [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]], + caml_string_of_jsbytes(", %s%s")], + _bH_= + [0, + [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], + caml_string_of_jsbytes("Fatal error: exception %s\n")], + _bI_= + [0, + [11, + caml_string_of_jsbytes + ("Fatal error in uncaught exception handler: exception "), + [2,0,[12,10,0]]], + caml_string_of_jsbytes + ("Fatal error in uncaught exception handler: exception %s\n")], + _bG_= + [0, + [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], + caml_string_of_jsbytes("Fatal error: exception %s\n")], + _bE_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _bC_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _bD_= + [0, + [11, + caml_string_of_jsbytes + ("(Program not linked with -g, cannot print stack backtrace)\n"), + 0], + caml_string_of_jsbytes + ("(Program not linked with -g, cannot print stack backtrace)\n")], + _bA_= + [0, + [2, + 0, + [12, + 32, + [2, + 0, + [11, + caml_string_of_jsbytes(' in file "'), + [2, + 0, + [12, + 34, + [2, + 0, + [11, + caml_string_of_jsbytes(", line "), + [4,0,0,0,[11,caml_string_of_jsbytes(", characters "),partial]]]]]]]]]], + caml_string_of_jsbytes + ('%s %s in file "%s"%s, line %d, characters %d-%d')], + _bB_= + [0, + [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]], + caml_string_of_jsbytes("%s unknown location")], + _bz_= + [0, + [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], + caml_string_of_jsbytes("Uncaught exception: %s\n")], + _by_= + [0, + [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], + caml_string_of_jsbytes("Uncaught exception: %s\n")], + _bw_=[0,[12,40,[2,0,[2,0,[12,41,0]]]],caml_string_of_jsbytes("(%s%s)")], + _bx_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")], + _bu_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _bt_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bF_= + [0, + caml_string_of_jsbytes(""), + caml_string_of_jsbytes + ("(Cannot print locations:\n bytecode executable program file not found)"), + caml_string_of_jsbytes + ("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"), + caml_string_of_jsbytes + ("(Cannot print locations:\n bytecode executable program file has wrong magic number)"), + caml_string_of_jsbytes + ("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")], + _bP_= + [0, + [11, + caml_string_of_jsbytes("minor_collections: "), + [4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("minor_collections: %d\n")], + _bQ_= + [0, + [11, + caml_string_of_jsbytes("major_collections: "), + [4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("major_collections: %d\n")], + _bR_= + [0, + [11, + caml_string_of_jsbytes("compactions: "), + [4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("compactions: %d\n")], + _bS_= + [0, + [11, + caml_string_of_jsbytes("forced_major_collections: "), + [4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("forced_major_collections: %d\n")], + _bT_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _bU_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")], + _bV_= + [0, + [11, + caml_string_of_jsbytes("minor_words: "), + [8,[0,0,0],[1,1],[0,0],[12,10,0]]], + caml_string_of_jsbytes("minor_words: %*.0f\n")], + _bW_= + [0, + [11, + caml_string_of_jsbytes("promoted_words: "), + [8,[0,0,0],[1,1],[0,0],[12,10,0]]], + caml_string_of_jsbytes("promoted_words: %*.0f\n")], + _bX_= + [0, + [11, + caml_string_of_jsbytes("major_words: "), + [8,[0,0,0],[1,1],[0,0],[12,10,0]]], + caml_string_of_jsbytes("major_words: %*.0f\n")], + _bY_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _bZ_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _b0_= + [0, + [11,caml_string_of_jsbytes("top_heap_words: "),[4,0,[1,1],0,[12,10,0]]], + caml_string_of_jsbytes("top_heap_words: %*d\n")], + _b1_= + [0, + [11,caml_string_of_jsbytes("heap_words: "),[4,0,[1,1],0,[12,10,0]]], + caml_string_of_jsbytes("heap_words: %*d\n")], + _b2_= + [0, + [11,caml_string_of_jsbytes("live_words: "),[4,0,[1,1],0,[12,10,0]]], + caml_string_of_jsbytes("live_words: %*d\n")], + _b3_= + [0, + [11,caml_string_of_jsbytes("free_words: "),[4,0,[1,1],0,[12,10,0]]], + caml_string_of_jsbytes("free_words: %*d\n")], + _b4_= + [0, + [11,caml_string_of_jsbytes("largest_free: "),[4,0,[1,1],0,[12,10,0]]], + caml_string_of_jsbytes("largest_free: %*d\n")], + _b5_= + [0, + [11,caml_string_of_jsbytes("fragments: "),[4,0,[1,1],0,[12,10,0]]], + caml_string_of_jsbytes("fragments: %*d\n")], + _b6_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _b7_= + [0, + [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("live_blocks: %d\n")], + _b8_= + [0, + [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("free_blocks: %d\n")], + _b9_= + [0, + [11,caml_string_of_jsbytes("heap_chunks: "),[4,0,0,0,[12,10,0]]], + caml_string_of_jsbytes("heap_chunks: %d\n")], + _cf_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _cg_=runtime.caml_int64_create_lo_mi_hi(0,0,0), + _ch_= + [0, + 987910699, + 495797812, + 364182224, + 414272206, + 318284740, + 990407751, + 383018966, + 270373319, + 840823159, + 24560019, + 536292337, + 512266505, + 189156120, + 730249596, + 143776328, + 51606627, + 140166561, + 366354223, + 1003410265, + 700563762, + 981890670, + 913149062, + 526082594, + 1021425055, + 784300257, + 667753350, + 630144451, + 949649812, + 48546892, + 415514493, + 258888527, + 511570777, + 89983870, + 283659902, + 308386020, + 242688715, + 482270760, + 865188196, + 1027664170, + 207196989, + 193777847, + 619708188, + 671350186, + 149669678, + 257044018, + 87658204, + 558145612, + 183450813, + 28133145, + 901332182, + 710253903, + 510646120, + 652377910, + 409934019, + 801085050], + _ck_=[0,0], + _cq_=[3,0,3], + _cp_=[1,caml_string_of_jsbytes("max_indent < 2")], + _cn_=[1,caml_string_of_jsbytes("margin <= max_indent")], + _co_=[0,0], + _cm_=[0,caml_string_of_jsbytes("")], + _cl_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("")], + _cG_=[0,91], + _cF_=[0,123], + _cH_=[0,caml_string_of_jsbytes("scanf.ml"),1453,13], + _cI_=[0,[3,0,[10,0]],caml_string_of_jsbytes("%S%!")], + _cE_=[0,37,caml_string_of_jsbytes("")], + _cD_= + [0, + [11, + caml_string_of_jsbytes("scanf: bad input at char number "), + [4,3,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]], + caml_string_of_jsbytes("scanf: bad input at char number %i: %s")], + _cC_= + [0, + [11, + caml_string_of_jsbytes("the character "), + [1,[11,caml_string_of_jsbytes(" cannot start a boolean"),0]]], + caml_string_of_jsbytes("the character %C cannot start a boolean")], + _cB_= + [0, + [11, + caml_string_of_jsbytes("bad character hexadecimal encoding \\"), + [0,[0,0]]], + caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")], + _cA_= + [0, + [11, + caml_string_of_jsbytes("bad character decimal encoding \\"), + [0,[0,[0,0]]]], + caml_string_of_jsbytes("bad character decimal encoding \\%c%c%c")], + _cz_= + [0, + [11, + caml_string_of_jsbytes("character "), + [1, + [11, + caml_string_of_jsbytes(" is not a valid "), + [2,0,[11,caml_string_of_jsbytes(" digit"),0]]]]], + caml_string_of_jsbytes("character %C is not a valid %s digit")], + _cy_= + [0, + [11, + caml_string_of_jsbytes("character "), + [1,[11,caml_string_of_jsbytes(" is not a decimal digit"),0]]], + caml_string_of_jsbytes("character %C is not a decimal digit")], + _cx_=[0,caml_string_of_jsbytes("scanf.ml"),555,9], + _cw_= + [0, + [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]], + caml_string_of_jsbytes("invalid boolean '%s'")], + _cv_= + [0, + [11, + caml_string_of_jsbytes("looking for "), + [1,[11,caml_string_of_jsbytes(", found "),[1,0]]]], + caml_string_of_jsbytes("looking for %C, found %C")], + _cu_= + [0, + [11, + caml_string_of_jsbytes("scanning of "), + [2, + 0, + [11, + caml_string_of_jsbytes + (" failed: premature end of file occurred before end of token"), + 0]]], + caml_string_of_jsbytes + ("scanning of %s failed: premature end of file occurred before end of token")], + _ct_= + [0, + [11, + caml_string_of_jsbytes("scanning of "), + [2, + 0, + [11, + caml_string_of_jsbytes + (" failed: the specified length was too short for token"), + 0]]], + caml_string_of_jsbytes + ("scanning of %s failed: the specified length was too short for token")], + _cs_= + [0, + [11,caml_string_of_jsbytes("illegal escape character "),[1,0]], + caml_string_of_jsbytes("illegal escape character %C")], + _cP_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),439,17], + _cO_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),421,13], + _cN_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),418,13], + _cM_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),415,13], + _cL_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),412,13], + _cK_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),409,13], + _cJ_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),281,50], + _cQ_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),72,5], + _cR_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),81,2], + _cU_=[0,0], + _cT_=[0,0], + _cS_=[0,0], + _cZ_=[0,7,0], + _cY_=[0,1,[0,3,[0,5,0]]], + _cX_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")], + _cW_=[0,caml_string_of_jsbytes('"'),0], + _c0_=[254,0.,0.], + _c1_=[0,0]; + function erase_rel(param) + {if(typeof param === "number") + return 0; + else + switch(param[0]) + {case 0:var rest=param[1];return [0,erase_rel(rest)]; + case 1:var rest$0=param[1];return [1,erase_rel(rest$0)]; + case 2:var rest$1=param[1];return [2,erase_rel(rest$1)]; + case 3:var rest$2=param[1];return [3,erase_rel(rest$2)]; + case 4:var rest$3=param[1];return [4,erase_rel(rest$3)]; + case 5:var rest$4=param[1];return [5,erase_rel(rest$4)]; + case 6:var rest$5=param[1];return [6,erase_rel(rest$5)]; + case 7:var rest$6=param[1];return [7,erase_rel(rest$6)]; + case 8: + var rest$7=param[2],ty=param[1];return [8,ty,erase_rel(rest$7)]; + case 9: + var rest$8=param[3],ty1=param[1]; + return [9,ty1,ty1,erase_rel(rest$8)]; + case 10:var rest$9=param[1];return [10,erase_rel(rest$9)]; + case 11:var rest$10=param[1];return [11,erase_rel(rest$10)]; + case 12:var rest$11=param[1];return [12,erase_rel(rest$11)]; + case 13:var rest$12=param[1];return [13,erase_rel(rest$12)]; + default:var rest$13=param[1];return [14,erase_rel(rest$13)]}} + function concat_fmtty(fmtty1,fmtty2) + {if(typeof fmtty1 === "number") + return fmtty2; + else + switch(fmtty1[0]) + {case 0:var rest=fmtty1[1];return [0,concat_fmtty(rest,fmtty2)]; + case 1:var rest$0=fmtty1[1];return [1,concat_fmtty(rest$0,fmtty2)]; + case 2:var rest$1=fmtty1[1];return [2,concat_fmtty(rest$1,fmtty2)]; + case 3:var rest$2=fmtty1[1];return [3,concat_fmtty(rest$2,fmtty2)]; + case 4:var rest$3=fmtty1[1];return [4,concat_fmtty(rest$3,fmtty2)]; + case 5:var rest$4=fmtty1[1];return [5,concat_fmtty(rest$4,fmtty2)]; + case 6:var rest$5=fmtty1[1];return [6,concat_fmtty(rest$5,fmtty2)]; + case 7:var rest$6=fmtty1[1];return [7,concat_fmtty(rest$6,fmtty2)]; + case 8: + var rest$7=fmtty1[2],ty=fmtty1[1]; + return [8,ty,concat_fmtty(rest$7,fmtty2)]; + case 9: + var rest$8=fmtty1[3],ty2=fmtty1[2],ty1=fmtty1[1]; + return [9,ty1,ty2,concat_fmtty(rest$8,fmtty2)]; + case 10:var rest$9=fmtty1[1];return [10,concat_fmtty(rest$9,fmtty2)]; + case 11: + var rest$10=fmtty1[1];return [11,concat_fmtty(rest$10,fmtty2)]; + case 12: + var rest$11=fmtty1[1];return [12,concat_fmtty(rest$11,fmtty2)]; + case 13: + var rest$12=fmtty1[1];return [13,concat_fmtty(rest$12,fmtty2)]; + default: + var rest$13=fmtty1[1];return [14,concat_fmtty(rest$13,fmtty2)]}} + function concat_fmt(fmt1,fmt2) + {if(typeof fmt1 === "number") + return fmt2; + else + switch(fmt1[0]) + {case 0:var rest=fmt1[1];return [0,concat_fmt(rest,fmt2)]; + case 1:var rest$0=fmt1[1];return [1,concat_fmt(rest$0,fmt2)]; + case 2: + var rest$1=fmt1[2],pad=fmt1[1]; + return [2,pad,concat_fmt(rest$1,fmt2)]; + case 3: + var rest$2=fmt1[2],pad$0=fmt1[1]; + return [3,pad$0,concat_fmt(rest$2,fmt2)]; + case 4: + var rest$3=fmt1[4],prec=fmt1[3],pad$1=fmt1[2],iconv=fmt1[1]; + return [4,iconv,pad$1,prec,concat_fmt(rest$3,fmt2)]; + case 5: + var rest$4=fmt1[4],prec$0=fmt1[3],pad$2=fmt1[2],iconv$0=fmt1[1]; + return [5,iconv$0,pad$2,prec$0,concat_fmt(rest$4,fmt2)]; + case 6: + var rest$5=fmt1[4],prec$1=fmt1[3],pad$3=fmt1[2],iconv$1=fmt1[1]; + return [6,iconv$1,pad$3,prec$1,concat_fmt(rest$5,fmt2)]; + case 7: + var rest$6=fmt1[4],prec$2=fmt1[3],pad$4=fmt1[2],iconv$2=fmt1[1]; + return [7,iconv$2,pad$4,prec$2,concat_fmt(rest$6,fmt2)]; + case 8: + var rest$7=fmt1[4],prec$3=fmt1[3],pad$5=fmt1[2],fconv=fmt1[1]; + return [8,fconv,pad$5,prec$3,concat_fmt(rest$7,fmt2)]; + case 9: + var rest$8=fmt1[2],pad$6=fmt1[1]; + return [9,pad$6,concat_fmt(rest$8,fmt2)]; + case 10:var rest$9=fmt1[1];return [10,concat_fmt(rest$9,fmt2)]; + case 11: + var rest$10=fmt1[2],str=fmt1[1]; + return [11,str,concat_fmt(rest$10,fmt2)]; + case 12: + var rest$11=fmt1[2],chr=fmt1[1]; + return [12,chr,concat_fmt(rest$11,fmt2)]; + case 13: + var rest$12=fmt1[3],fmtty=fmt1[2],pad$7=fmt1[1]; + return [13,pad$7,fmtty,concat_fmt(rest$12,fmt2)]; + case 14: + var rest$13=fmt1[3],fmtty$0=fmt1[2],pad$8=fmt1[1]; + return [14,pad$8,fmtty$0,concat_fmt(rest$13,fmt2)]; + case 15:var rest$14=fmt1[1];return [15,concat_fmt(rest$14,fmt2)]; + case 16:var rest$15=fmt1[1];return [16,concat_fmt(rest$15,fmt2)]; + case 17: + var rest$16=fmt1[2],fmting_lit=fmt1[1]; + return [17,fmting_lit,concat_fmt(rest$16,fmt2)]; + case 18: + var rest$17=fmt1[2],fmting_gen=fmt1[1]; + return [18,fmting_gen,concat_fmt(rest$17,fmt2)]; + case 19:var rest$18=fmt1[1];return [19,concat_fmt(rest$18,fmt2)]; + case 20: + var rest$19=fmt1[3],char_set=fmt1[2],width_opt=fmt1[1]; + return [20,width_opt,char_set,concat_fmt(rest$19,fmt2)]; + case 21: + var rest$20=fmt1[2],counter=fmt1[1]; + return [21,counter,concat_fmt(rest$20,fmt2)]; + case 22:var rest$21=fmt1[1];return [22,concat_fmt(rest$21,fmt2)]; + case 23: + var rest$22=fmt1[2],ign=fmt1[1]; + return [23,ign,concat_fmt(rest$22,fmt2)]; + default: + var rest$23=fmt1[3],f=fmt1[2],arity=fmt1[1]; + return [24,arity,f,concat_fmt(rest$23,fmt2)]}} + var CamlinternalFormatBasics=[0,concat_fmtty,erase_rel,concat_fmt]; + caml_register_global + (761,CamlinternalFormatBasics,"CamlinternalFormatBasics"); + function make(v){return [0,v]} + function get(r){return r[1]} + function set(r,v){r[1] = v;return 0} + function exchange(r,v){var cur=r[1];r[1] = v;return cur} + function compare_and_set(r,seen,v) + {var cur=r[1];return cur === seen?(r[1] = v,1):0} + function fetch_and_add(r,n){var cur=r[1];r[1] = cur + n | 0;return cur} + function incr(r){fetch_and_add(r,1);return 0} + function decr(r){fetch_and_add(r,-1);return 0} + var + include= + [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr]; + caml_register_global(762,include,"CamlinternalAtomic"); + function failwith(s){throw [0,Failure,s]} + function invalid_arg(s){throw [0,Invalid_argument,s]} + var Exit=[248,cst_Stdlib_Exit,caml_fresh_oo_id(0)]; + function min(x,y){return caml_lessequal(x,y)?x:y} + function max(x,y){return caml_greaterequal(x,y)?x:y} + function abs(x){return 0 <= x?x:- x | 0} + function lnot(x){return x ^ -1} + var + infinity=caml_int64_float_of_bits(_a_), + neg_infinity=caml_int64_float_of_bits(_b_), + nan=caml_int64_float_of_bits(_c_), + max_float=caml_int64_float_of_bits(_d_), + min_float=caml_int64_float_of_bits(_e_), + epsilon=caml_int64_float_of_bits(_f_), + max_int=2147483647, + min_int=-2147483648; + function cat(s1,s2) + {var + l1=caml_ml_string_length(s1), + l2=caml_ml_string_length(s2), + s=caml_create_bytes(l1 + l2 | 0); + caml_blit_string(s1,0,s,0,l1); + caml_blit_string(s2,0,s,l1,l2); + return caml_string_of_bytes(s)} + function char_of_int(n) + {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_char_of_int)} + function string_of_bool(b){return b?cst_true:cst_false} + function bool_of_string(param) + {return caml_string_notequal(param,cst_false$0) + ?caml_string_notequal(param,cst_true$0) + ?invalid_arg(cst_bool_of_string) + :1 + :0} + function bool_of_string_opt(param) + {return caml_string_notequal(param,cst_false$1) + ?caml_string_notequal(param,cst_true$1)?0:_g_ + :_h_} + function string_of_int(n){return caml_string_of_jsbytes("" + n)} + function int_of_string_opt(s) + {try + {var _EE_=[0,caml_int_of_string(s)];return _EE_} + catch(_EF_) + {_EF_ = caml_wrap_exception(_EF_); + if(_EF_[1] === Failure)return 0; + throw _EF_}} + function valid_float_lexem(s) + {var l=caml_ml_string_length(s),i=0; + for(;;) + {if(l <= i)return cat(s,cst); + var match=caml_string_get(s,i),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + else + if(45 === match)switch$0 = 1; + if(switch$0){var i$0=i + 1 | 0,i=i$0;continue} + return s}} + function to_string(f) + {return valid_float_lexem(caml_format_float(cst_12g,f))} + function of_string_opt(s) + {try + {var _EC_=[0,caml_float_of_string(s)];return _EC_} + catch(_ED_) + {_ED_ = caml_wrap_exception(_ED_); + if(_ED_[1] === Failure)return 0; + throw _ED_}} + function append(l1,l2) + {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2} + var + stdin=caml_ml_open_descriptor_in(0), + stdout=caml_ml_open_descriptor_out(1), + stderr=caml_ml_open_descriptor_out(2); + function open_gen(mode,perm,name) + {var c=caml_ml_open_descriptor_out(caml_sys_open(name,mode,perm)); + caml_ml_set_channel_name(c,name); + return c} + function open_text(name){return open_gen(_i_,438,name)} + function open_bin(name){return open_gen(_j_,438,name)} + function flush_all(param) + {function iter(param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],a=param$0[1]; + try + {caml_ml_flush(a)} + catch(_EB_) + {_EB_ = caml_wrap_exception(_EB_); + if(_EB_[1] !== Sys_error)throw _EB_; + var _EA_=_EB_} + var param$0=l; + continue} + return 0}} + return iter(runtime.caml_ml_out_channels_list(0))} + function output_bytes(oc,s) + {return caml_ml_output_bytes(oc,s,0,caml_ml_bytes_length(s))} + function output_string(oc,s) + {return caml_ml_output(oc,s,0,caml_ml_string_length(s))} + function output(oc,s,ofs,len) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + return caml_ml_output_bytes(oc,s,ofs,len); + return invalid_arg(cst_output)} + function output_substring(oc,s,ofs,len) + {if + (0 + <= + ofs + && + 0 + <= + len + && + ! + ((caml_ml_string_length(s) - len | 0) < ofs)) + return caml_ml_output(oc,s,ofs,len); + return invalid_arg(cst_output_substring)} + function output_value(chan,v){return caml_output_value(chan,v,0)} + function close(oc){caml_ml_flush(oc);return caml_ml_close_channel(oc)} + function close_noerr(oc) + {try {caml_ml_flush(oc)}catch(_Ez_){} + try + {var _Ex_=caml_ml_close_channel(oc);return _Ex_} + catch(_Ey_){return 0}} + function open_gen$0(mode,perm,name) + {var c=caml_ml_open_descriptor_in(caml_sys_open(name,mode,perm)); + caml_ml_set_channel_name(c,name); + return c} + function open_text$0(name){return open_gen$0(_k_,0,name)} + function open_bin$0(name){return open_gen$0(_l_,0,name)} + function input(ic,s,ofs,len) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + return caml_ml_input(ic,s,ofs,len); + return invalid_arg(cst_input)} + function unsafe_really_input(ic,s,ofs,len) + {var ofs$0=ofs,len$0=len; + for(;;) + {if(0 < len$0) + {var r=caml_ml_input(ic,s,ofs$0,len$0); + if(0 === r)throw End_of_file; + var len$1=len$0 - r | 0,ofs$1=ofs$0 + r | 0,ofs$0=ofs$1,len$0=len$1; + continue} + return 0}} + function really_input(ic,s,ofs,len) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + return unsafe_really_input(ic,s,ofs,len); + return invalid_arg(cst_really_input)} + function really_input_string(ic,len) + {var s=caml_create_bytes(len); + really_input(ic,s,0,len); + return caml_string_of_bytes(s)} + function input_line(chan) + {function build_result(buf,pos,param) + {var pos$0=pos,param$0=param; + for(;;) + {if(param$0) + {var tl=param$0[2],hd=param$0[1],len=caml_ml_bytes_length(hd); + caml_blit_bytes(hd,0,buf,pos$0 - len | 0,len); + var pos$1=pos$0 - len | 0,pos$0=pos$1,param$0=tl; + continue} + return buf}} + var accu=0,len=0; + for(;;) + {var n=runtime.caml_ml_input_scan_line(chan); + if(0 === n) + {if(! accu)throw End_of_file; + var _Ew_=build_result(caml_create_bytes(len),len,accu)} + else + {if(! (0 < n)) + {var beg=caml_create_bytes(- n | 0); + caml_ml_input(chan,beg,0,- n | 0); + var len$1=len - n | 0,accu$0=[0,beg,accu],accu=accu$0,len=len$1; + continue} + var res=caml_create_bytes(n - 1 | 0); + caml_ml_input(chan,res,0,n - 1 | 0); + caml_ml_input_char(chan); + if(accu) + var + len$0=(len + n | 0) - 1 | 0, + _Ew_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); + else + var _Ew_=res} + return caml_string_of_bytes(_Ew_)}} + function close_noerr$0(ic) + {try + {var _Eu_=caml_ml_close_channel(ic);return _Eu_} + catch(_Ev_){return 0}} + function print_char(c){return caml_ml_output_char(stdout,c)} + function print_string(s){return output_string(stdout,s)} + function print_bytes(s){return output_bytes(stdout,s)} + function print_int(i) + {return output_string(stdout,caml_string_of_jsbytes("" + i))} + function print_float(f){return output_string(stdout,to_string(f))} + function print_endline(s) + {output_string(stdout,s); + caml_ml_output_char(stdout,10); + return caml_ml_flush(stdout)} + function print_newline(param) + {caml_ml_output_char(stdout,10);return caml_ml_flush(stdout)} + function prerr_char(c){return caml_ml_output_char(stderr,c)} + function prerr_string(s){return output_string(stderr,s)} + function prerr_bytes(s){return output_bytes(stderr,s)} + function prerr_int(i) + {return output_string(stderr,caml_string_of_jsbytes("" + i))} + function prerr_float(f){return output_string(stderr,to_string(f))} + function prerr_endline(s) + {output_string(stderr,s); + caml_ml_output_char(stderr,10); + return caml_ml_flush(stderr)} + function prerr_newline(param) + {caml_ml_output_char(stderr,10);return caml_ml_flush(stderr)} + function read_line(param){caml_ml_flush(stdout);return input_line(stdin)} + function read_int(param){return caml_int_of_string(read_line(0))} + function read_int_opt(param){return int_of_string_opt(read_line(0))} + function read_float(param){return caml_float_of_string(read_line(0))} + function read_float_opt(param){return of_string_opt(read_line(0))} + function string_of_format(param){var str=param[2];return str} + function symbol(param,_Es_) + {var + str2=_Es_[2], + fmt2=_Es_[1], + str1=param[2], + fmt1=param[1], + _Et_=cat(str1,cat(cst$0,str2)); + return [0,concat_fmt(fmt1,fmt2),_Et_]} + var exit_function=[0,flush_all]; + function at_exit(f) + {for(;;) + {var + f_yet_to_run=[0,1], + old_exit=exit_function[1], + new_exit$0= + function(f_yet_to_run,old_exit) + {function new_exit(param) + {if(compare_and_set(f_yet_to_run,1,0))caml_call1(f,0); + return caml_call1(old_exit,0)} + return new_exit}, + new_exit=new_exit$0(f_yet_to_run,old_exit), + success=compare_and_set(exit_function,old_exit,new_exit), + _Er_=1 - success; + if(_Er_)continue; + return _Er_}} + function do_at_exit(param){return caml_call1(exit_function[1],0)} + function exit(retcode) + {do_at_exit(0);return runtime.caml_sys_exit(retcode)} + caml_register_named_value + (caml_string_of_jsbytes("Pervasives.do_at_exit"),do_at_exit); + var + _m_= + [0, + runtime.caml_ml_seek_out_64, + runtime.caml_ml_pos_out_64, + caml_ml_channel_size_64, + runtime.caml_ml_seek_in_64, + runtime.caml_ml_pos_in_64, + caml_ml_channel_size_64], + set_binary_mode=caml_ml_set_binary_mode, + close$0=caml_ml_close_channel, + in_channel_length=caml_ml_channel_size, + pos_in=caml_ml_pos_in, + seek_in=runtime.caml_ml_seek_in, + input_value=caml_input_value, + input_binary_int=runtime.caml_ml_input_int, + input_byte=caml_ml_input_char, + input_char=caml_ml_input_char, + set_binary_mode$0=caml_ml_set_binary_mode, + out_channel_length=caml_ml_channel_size, + pos_out=runtime.caml_ml_pos_out, + seek_out=runtime.caml_ml_seek_out, + output_binary_int=runtime.caml_ml_output_int, + output_byte=caml_ml_output_char, + output_char=caml_ml_output_char, + flush=caml_ml_flush, + Stdlib= + [0, + invalid_arg, + failwith, + Exit, + Match_failure, + Assert_failure, + Invalid_argument, + Failure, + Not_found, + Out_of_memory, + Stack_overflow, + Sys_error, + End_of_file, + Division_by_zero, + Sys_blocked_io, + Undefined_recursive_module, + min, + max, + abs, + max_int, + min_int, + lnot, + infinity, + neg_infinity, + nan, + max_float, + min_float, + epsilon, + cat, + char_of_int, + string_of_bool, + bool_of_string_opt, + bool_of_string, + string_of_int, + int_of_string_opt, + to_string, + of_string_opt, + append, + stdin, + stdout, + stderr, + print_char, + print_string, + print_bytes, + print_int, + print_float, + print_endline, + print_newline, + prerr_char, + prerr_string, + prerr_bytes, + prerr_int, + prerr_float, + prerr_endline, + prerr_newline, + read_line, + read_int_opt, + read_int, + read_float_opt, + read_float, + open_text, + open_bin, + open_gen, + flush, + flush_all, + output_char, + output_string, + output_bytes, + output, + output_substring, + output_byte, + output_binary_int, + output_value, + seek_out, + pos_out, + out_channel_length, + close, + close_noerr, + set_binary_mode$0, + open_text$0, + open_bin$0, + open_gen$0, + input_char, + input_line, + input, + really_input, + really_input_string, + input_byte, + input_binary_int, + input_value, + seek_in, + pos_in, + in_channel_length, + close$0, + close_noerr$0, + set_binary_mode, + _m_, + string_of_format, + symbol, + exit, + at_exit, + valid_float_lexem, + unsafe_really_input, + do_at_exit]; + caml_register_global(775,Stdlib,"Stdlib"); + var + Exit$0=[248,cst_Stdlib_Pervasives_Exit,caml_fresh_oo_id(0)], + Stdlib_Pervasives= + [0, + invalid_arg, + failwith, + Exit$0, + min, + max, + abs, + max_int, + min_int, + lnot, + infinity, + neg_infinity, + nan, + max_float, + min_float, + epsilon, + cat, + char_of_int, + string_of_bool, + bool_of_string, + bool_of_string_opt, + string_of_int, + int_of_string_opt, + to_string, + of_string_opt, + append, + stdin, + stdout, + stderr, + print_char, + print_string, + print_bytes, + print_int, + print_float, + print_endline, + print_newline, + prerr_char, + prerr_string, + prerr_bytes, + prerr_int, + prerr_float, + prerr_endline, + prerr_newline, + read_line, + read_int, + read_int_opt, + read_float, + read_float_opt, + open_text, + open_bin, + open_gen, + flush, + flush_all, + output_char, + output_string, + output_bytes, + output, + output_substring, + output_byte, + output_binary_int, + output_value, + seek_out, + pos_out, + out_channel_length, + close, + close_noerr, + set_binary_mode$0, + open_text$0, + open_bin$0, + open_gen$0, + input_char, + input_line, + input, + really_input, + really_input_string, + input_byte, + input_binary_int, + input_value, + seek_in, + pos_in, + in_channel_length, + close$0, + close_noerr$0, + set_binary_mode, + string_of_format, + symbol, + exit, + at_exit, + valid_float_lexem, + do_at_exit]; + caml_register_global(776,Stdlib_Pervasives,"Stdlib__Pervasives"); + function left(v){return [0,v]} + function right(v){return [1,v]} + function is_left(param){return 0 === param[0]?1:0} + function is_right(param){return 0 === param[0]?0:1} + function find_left(param) + {if(0 === param[0]){var v=param[1];return [0,v]}return 0} + function find_right(param) + {if(0 === param[0])return 0;var v=param[1];return [0,v]} + function map_left(f,e) + {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} + function map_right(f,e) + {if(0 === e[0])return e;var v=e[1];return [1,caml_call1(f,v)]} + function map(left,right,param) + {if(0 === param[0]){var v=param[1];return [0,caml_call1(left,v)]} + var v$0=param[1]; + return [1,caml_call1(right,v$0)]} + function fold(left,right,param) + {if(0 === param[0]){var v=param[1];return caml_call1(left,v)} + var v$0=param[1]; + return caml_call1(right,v$0)} + function equal(left,right,e1,e2) + {if(0 === e1[0]) + {var _Ep_=e1[1]; + if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Ep_,v2)}} + else + {var _Eq_=e1[1]; + if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Eq_,v2$0)}} + return 0} + function compare(left,right,e1,e2) + {if(0 === e1[0]) + {var _En_=e1[1]; + if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_En_,v2)} + return -1} + var _Eo_=e1[1]; + if(0 === e2[0])return 1; + var v2$0=e2[1]; + return caml_call2(right,_Eo_,v2$0)} + var + Stdlib_Either= + [0, + left, + right, + is_left, + is_right, + find_left, + find_right, + map_left, + map_right, + map, + fold, + fold, + fold, + equal, + compare]; + caml_register_global(777,Stdlib_Either,"Stdlib__Either"); + var + executable_name=runtime.caml_sys_executable_name(0), + match=runtime.caml_sys_get_config(0), + os_type=match[1], + match$0=[0,caml_string_of_jsbytes("js_of_ocaml")], + unix=runtime.caml_sys_const_ostype_unix(0), + win32=runtime.caml_sys_const_ostype_win32(0), + cygwin=runtime.caml_sys_const_ostype_cygwin(0), + max_array_length=runtime.caml_sys_const_max_wosize(0), + max_floatarray_length=max_array_length / 2 | 0, + max_string_length=(4 * max_array_length | 0) - 1 | 0, + big_endian=0, + match$1=32, + int_size=32; + function getenv_opt(s) + {try + {var _El_=[0,caml_sys_getenv(s)];return _El_} + catch(_Em_) + {_Em_ = caml_wrap_exception(_Em_); + if(_Em_ === Not_found)return 0; + throw _Em_}} + var interactive=[0,0]; + function set_signal(sig_num,sig_beh){return 0} + var + Break=[248,cst_Stdlib_Sys_Break,caml_fresh_oo_id(0)], + sigabrt=-1, + sigalrm=-2, + sigfpe=-3, + sighup=-4, + sigill=-5, + sigint=-6, + sigkill=-7, + sigpipe=-8, + sigquit=-9, + sigsegv=-10, + sigterm=-11, + sigusr1=-12, + sigusr2=-13, + sigchld=-14, + sigcont=-15, + sigstop=-16, + sigtstp=-17, + sigttin=-18, + sigttou=-19, + sigvtalrm=-20, + sigprof=-21, + sigbus=-22, + sigpoll=-23, + sigsys=-24, + sigtrap=-25, + sigurg=-26, + sigxcpu=-27, + sigxfsz=-28; + function catch_break(on){return on?0:0} + var development_version=0; + function Make(_Ek_,_Ej_){return [0,1]} + var + Immediate64=[0,Make], + Stdlib_Sys= + [0, + executable_name, + getenv_opt, + interactive, + os_type, + match$0, + unix, + win32, + cygwin, + match$1, + int_size, + big_endian, + max_string_length, + max_array_length, + max_floatarray_length, + set_signal, + sigabrt, + sigalrm, + sigfpe, + sighup, + sigill, + sigint, + sigkill, + sigpipe, + sigquit, + sigsegv, + sigterm, + sigusr1, + sigusr2, + sigchld, + sigcont, + sigstop, + sigtstp, + sigttin, + sigttou, + sigvtalrm, + sigprof, + sigbus, + sigpoll, + sigsys, + sigtrap, + sigurg, + sigxcpu, + sigxfsz, + Break, + catch_break, + ocaml_version, + development_version, + ocaml_release, + runtime.caml_ml_enable_runtime_warnings, + runtime.caml_ml_runtime_warnings_enabled, + Immediate64]; + caml_register_global(778,Stdlib_Sys,"Stdlib__Sys"); + function is_block(a){return 1 - (typeof a === "number"?1:0)} + function double_field(x,i){return caml_array_get(x,i)} + function set_double_field(x,i,v){return caml_array_set(x,i,v)} + var + first_non_constant_constructor=0, + last_non_constant_constructor_=245, + lazy_tag=246, + closure_tag=247, + object_tag=248, + infix_tag=249, + forward_tag=250, + no_scan_tag=251, + abstract_tag=251, + string_tag=252, + double_tag=253, + double_array_tag=254, + custom_tag=255, + int_tag=1000, + out_of_heap_tag=1001, + unaligned_tag=1002; + function info(obj) + {if(caml_obj_tag(obj) === 247) + {var + info=runtime.caml_obj_raw_field(obj,1), + arity=info >> 24, + start_env=info << 8 >>> 9 | 0; + return [0,arity,start_env]} + throw [0,Assert_failure,_n_]} + function of_val(x) + {var switch$0=0; + if(is_block(x) && caml_obj_tag(x) !== 248 && 1 <= x.length - 1) + {var slot=x[1];switch$0 = 1} + if(! switch$0)var slot=x; + var switch$1=0; + if(is_block(slot) && caml_obj_tag(slot) === 248) + {var name=slot[1];switch$1 = 1} + if(! switch$1)var name=invalid_arg(cst_Obj_extension_constructor$0); + return caml_obj_tag(name) === 252 + ?slot + :invalid_arg(cst_Obj_extension_constructor)} + function name(slot){return slot[1]} + function id(slot){return slot[2]} + var + Extension_constructor=[0,of_val,name,id], + extension_constructor=Extension_constructor[1], + extension_name=Extension_constructor[2], + extension_id=Extension_constructor[3], + max_ephe_length=max_array_length - 2 | 0; + function create(l) + {var _Eh_=0 <= l?1:0,_Ei_=_Eh_?l <= max_ephe_length?1:0:_Eh_; + if(1 - _Ei_)invalid_arg(cst_Obj_Ephemeron_create); + return runtime.caml_ephe_create(l)} + function length(x){return x.length - 1 - 2 | 0} + function raise_if_invalid_offset(e,o,msg) + {var _Ee_=0 <= o?1:0,_Ef_=_Ee_?o < length(e)?1:0:_Ee_,_Eg_=1 - _Ef_; + return _Eg_?invalid_arg(msg):_Eg_} + function get_key(e,o) + {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key); + return runtime.caml_ephe_get_key(e,o)} + function get_key_copy(e,o) + {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key_copy); + return runtime.caml_ephe_get_key_copy(e,o)} + function set_key(e,o,x) + {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_set_key); + return caml_ephe_set_key(e,o,x)} + function unset_key(e,o) + {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_unset_key); + return caml_ephe_unset_key(e,o)} + function check_key(e,o) + {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_check_key); + return runtime.caml_ephe_check_key(e,o)} + function blit_key(e1,o1,e2,o2,l) + {if + (0 + <= + l + && + 0 + <= + o1 + && + ! + ((length(e1) - l | 0) < o1) + && + 0 + <= + o2 + && + ! + ((length(e2) - l | 0) < o2)) + {var + _Ec_=0 !== l?1:0, + _Ed_=_Ec_?runtime.caml_ephe_blit_key(e1,o1,e2,o2,l):_Ec_; + return _Ed_} + return invalid_arg(cst_Obj_Ephemeron_blit_key)} + var + _o_=runtime.caml_ephe_blit_data, + _p_=runtime.caml_ephe_check_data, + _q_= + [0, + create, + length, + get_key, + get_key_copy, + set_key, + unset_key, + check_key, + blit_key, + runtime.caml_ephe_get_data, + runtime.caml_ephe_get_data_copy, + runtime.caml_ephe_set_data, + function(_Eb_){return runtime.caml_ephe_unset_data(_Eb_)}, + _p_, + _o_, + max_ephe_length], + Stdlib_Obj= + [0, + is_block, + double_field, + set_double_field, + first_non_constant_constructor, + last_non_constant_constructor_, + lazy_tag, + closure_tag, + object_tag, + infix_tag, + forward_tag, + no_scan_tag, + abstract_tag, + string_tag, + double_tag, + double_array_tag, + custom_tag, + custom_tag, + int_tag, + out_of_heap_tag, + unaligned_tag, + [0,info], + Extension_constructor, + extension_constructor, + extension_name, + extension_id, + _q_]; + caml_register_global(779,Stdlib_Obj,"Stdlib__Obj"); + var Undefined=[248,cst_CamlinternalLazy_Undefined,caml_fresh_oo_id(0)]; + function raise_undefined(param){throw Undefined} + function force_lazy_block(blk) + {var closure=blk[1]; + blk[1] = raise_undefined; + try + {var result=caml_call1(closure,0); + caml_obj_make_forward(blk,result); + return result} + catch(e) + {e = caml_wrap_exception(e);blk[1] = function(param){throw e};throw e}} + function force_val_lazy_block(blk) + {var closure=blk[1]; + blk[1] = raise_undefined; + var result=caml_call1(closure,0); + caml_obj_make_forward(blk,result); + return result} + function force(lzv) + {var t=caml_obj_tag(lzv); + return t === 250?lzv[1]:t !== 246?lzv:force_lazy_block(lzv)} + function force_val(lzv) + {var t=caml_obj_tag(lzv); + return t === 250?lzv[1]:t !== 246?lzv:force_val_lazy_block(lzv)} + var + CamlinternalLazy= + [0,Undefined,force_lazy_block,force_val_lazy_block,force,force_val]; + caml_register_global(780,CamlinternalLazy,"CamlinternalLazy"); + function to_lazy(f){var x=caml_obj_block(246,1);x[1] = f;return x} + function from_val(v) + {var t=caml_obj_tag(v); + if(t !== 250 && t !== 246 && t !== 253)return v; + return runtime.caml_lazy_make_forward(v)} + function is_val(l){return caml_obj_tag(l) !== 246?1:0} + function map$0(f,x) + {return [246, + function(_D__) + {var + _D$_=caml_obj_tag(x), + _Ea_=250 === _D$_?x[1]:246 === _D$_?force_lazy_block(x):x; + return caml_call1(f,_Ea_)}]} + function map_val(f,x) + {if(is_val(x)) + {var + _D5_=caml_obj_tag(x), + _D6_=250 === _D5_?x[1]:246 === _D5_?force_lazy_block(x):x; + return from_val(caml_call1(f,_D6_))} + return [246, + function(_D7_) + {var + _D8_=caml_obj_tag(x), + _D9_=250 === _D8_?x[1]:246 === _D8_?force_lazy_block(x):x; + return caml_call1(f,_D9_)}]} + var + Stdlib_Lazy= + [0, + Undefined, + map$0, + is_val, + from_val, + map_val, + to_lazy, + force_val, + to_lazy, + from_val, + is_val]; + caml_register_global(781,Stdlib_Lazy,"Stdlib__Lazy"); + function empty(param){return 0} + function return$0(x,param){return [0,x,empty]} + function cons(x,next,param){return [0,x,next]} + function append$0(seq1,seq2,param) + {var match=caml_call1(seq1,0); + if(match) + {var next=match[2],x=match[1]; + return [0,x,function(_D4_){return append$0(next,seq2,_D4_)}]} + return caml_call1(seq2,0)} + function map$1(f,seq,param) + {var match=caml_call1(seq,0); + if(match) + {var + next=match[2], + x=match[1], + _D2_=function(_D3_){return map$1(f,next,_D3_)}; + return [0,caml_call1(f,x),_D2_]} + return 0} + function filter_map(f,seq,param) + {var seq$0=seq; + for(;;) + {var match=caml_call1(seq$0,0); + if(match) + {var next=match[2],x=match[1],match$0=caml_call1(f,x); + if(match$0) + {var y=match$0[1]; + return [0,y,function(_D1_){return filter_map(f,next,_D1_)}]} + var seq$0=next; + continue} + return 0}} + function filter(f,seq,param) + {var seq$0=seq; + for(;;) + {var match=caml_call1(seq$0,0); + if(match) + {var next=match[2],x=match[1]; + if(caml_call1(f,x)) + return [0,x,function(_D0_){return filter(f,next,_D0_)}]; + var seq$0=next; + continue} + return 0}} + function concat(seq,param) + {var match=caml_call1(seq,0); + if(match) + {var next=match[2],x=match[1],_DY_=0; + return append$0(x,function(_DZ_){return concat(next,_DZ_)},_DY_)} + return 0} + function flat_map(f,seq,param) + {var match=caml_call1(seq,0); + if(match) + {var + next=match[2], + x=match[1], + _DV_=0, + _DW_=function(_DX_){return flat_map(f,next,_DX_)}; + return append$0(caml_call1(f,x),_DW_,_DV_)} + return 0} + function fold_left(f,acc,seq) + {var acc$0=acc,seq$0=seq; + for(;;) + {var match=caml_call1(seq$0,0); + if(match) + {var + next=match[2], + x=match[1], + acc$1=caml_call2(f,acc$0,x), + acc$0=acc$1, + seq$0=next; + continue} + return acc$0}} + function iter(f,seq) + {var seq$0=seq; + for(;;) + {var match=caml_call1(seq$0,0); + if(match) + {var next=match[2],x=match[1]; + caml_call1(f,x); + var seq$0=next; + continue} + return 0}} + function unfold(f,u,param) + {var match=caml_call1(f,u); + if(match) + {var match$0=match[1],u$0=match$0[2],x=match$0[1]; + return [0,x,function(_DU_){return unfold(f,u$0,_DU_)}]} + return 0} + function is_empty(xs){var match=caml_call1(xs,0);return match?0:1} + function uncons(xs) + {var match=caml_call1(xs,0); + if(match){var xs$0=match[2],x=match[1];return [0,[0,x,xs$0]]} + return 0} + function length$0(xs$1) + {var accu=0,xs=xs$1; + for(;;) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],accu$0=accu + 1 | 0,accu=accu$0,xs=xs$0;continue} + return accu}} + function iteri(f,xs$1) + {var i=0,xs=xs$1; + for(;;) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1]; + caml_call2(f,i,x); + var i$0=i + 1 | 0,i=i$0,xs=xs$0; + continue} + return 0}} + function fold_lefti(f,accu$1,xs$1) + {var accu=accu$1,i=0,xs=xs$1; + for(;;) + {var match=caml_call1(xs,0); + if(match) + {var + xs$0=match[2], + x=match[1], + accu$0=caml_call3(f,accu,i,x), + i$0=i + 1 | 0, + accu=accu$0, + i=i$0, + xs=xs$0; + continue} + return accu}} + function for_all(p,xs) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],_DT_=caml_call1(p,x); + if(_DT_){var xs$0=xs$1;continue} + return _DT_} + return 1}} + function exists(p,xs) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],_DS_=caml_call1(p,x); + if(_DS_)return _DS_; + var xs$0=xs$1; + continue} + return 0}} + function find(p,xs) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1]; + if(caml_call1(p,x))return [0,x]; + var xs$0=xs$1; + continue} + return 0}} + function find_map(f,xs) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],result=caml_call1(f,x); + if(result)return result; + var xs$0=xs$1; + continue} + return 0}} + function iter2(f,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); + if(match$0) + {var ys$1=match$0[2],y=match$0[1]; + caml_call2(f,x,y); + var xs$0=xs$1,ys$0=ys$1; + continue} + return 0} + return 0}} + function fold_left2(f,accu,xs,ys) + {var accu$0=accu,xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); + if(match$0) + {var + ys$1=match$0[2], + y=match$0[1], + accu$1=caml_call3(f,accu$0,x,y), + accu$0=accu$1, + xs$0=xs$1, + ys$0=ys$1; + continue} + return accu$0} + return accu$0}} + function for_all2(f,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); + if(match$0) + {var ys$1=match$0[2],y=match$0[1],_DR_=caml_call2(f,x,y); + if(_DR_){var xs$0=xs$1,ys$0=ys$1;continue} + return _DR_} + return 1} + return 1}} + function exists2(f,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); + if(match$0) + {var ys$1=match$0[2],y=match$0[1],_DQ_=caml_call2(f,x,y); + if(_DQ_)return _DQ_; + var xs$0=xs$1,ys$0=ys$1; + continue} + return 0} + return 0}} + function equal$0(eq,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0),match$0=caml_call1(ys$0,0); + if(match) + {if(match$0) + {var + ys$1=match$0[2], + y=match$0[1], + xs$1=match[2], + x=match[1], + _DP_=caml_call2(eq,x,y); + if(_DP_){var xs$0=xs$1,ys$0=ys$1;continue} + return _DP_}} + else + if(! match$0)return 1; + return 0}} + function compare$0(cmp,xs,ys) + {var xs$0=xs,ys$0=ys; + for(;;) + {var match=caml_call1(xs$0,0),match$0=caml_call1(ys$0,0); + if(match) + {var _DN_=match[2],_DO_=match[1]; + if(match$0) + {var ys$1=match$0[2],y=match$0[1],c=caml_call2(cmp,_DO_,y); + if(0 === c){var xs$0=_DN_,ys$0=ys$1;continue} + return c} + return 1} + return match$0?-1:0}} + function init_aux(f,i,j,param) + {if(i < j) + {var + _DK_=i + 1 | 0, + _DL_=function(_DM_){return init_aux(f,_DK_,j,_DM_)}; + return [0,caml_call1(f,i),_DL_]} + return 0} + function init(n,f) + {if(0 <= n) + {var _DI_=0;return function(_DJ_){return init_aux(f,_DI_,n,_DJ_)}} + return invalid_arg(cst_Seq_init)} + function repeat(x,param) + {return [0,x,function(_DH_){return repeat(x,_DH_)}]} + function forever(f,param) + {function _DF_(_DG_){return forever(f,_DG_)} + return [0,caml_call1(f,0),_DF_]} + function cycle_nonempty(xs,param) + {var _DD_=0; + return append$0(xs,function(_DE_){return cycle_nonempty(xs,_DE_)},_DD_)} + function cycle(xs,param) + {var match=caml_call1(xs,0); + if(match) + {var + xs$0=match[2], + x=match[1], + _DA_=function(_DC_){return cycle_nonempty(xs,_DC_)}; + return [0,x,function(_DB_){return append$0(xs$0,_DA_,_DB_)}]} + return 0} + function iterate1(f,x,param) + {var y=caml_call1(f,x); + return [0,y,function(_Dz_){return iterate1(f,y,_Dz_)}]} + function iterate(f,x) + {function _Dw_(_Dy_){return iterate1(f,x,_Dy_)} + return function(_Dx_){return [0,x,_Dw_]}} + function mapi_aux(f,i,xs,param) + {var match=caml_call1(xs,0); + if(match) + {var + xs$0=match[2], + x=match[1], + _Dt_=i + 1 | 0, + _Du_=function(_Dv_){return mapi_aux(f,_Dt_,xs$0,_Dv_)}; + return [0,caml_call2(f,i,x),_Du_]} + return 0} + function mapi(f,xs) + {var _Dr_=0;return function(_Ds_){return mapi_aux(f,_Dr_,xs,_Ds_)}} + function tail_scan(f,s,xs,param) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1],s$0=caml_call2(f,s,x); + return [0,s$0,function(_Dq_){return tail_scan(f,s$0,xs$0,_Dq_)}]} + return 0} + function scan(f,s,xs) + {function _Dn_(_Dp_){return tail_scan(f,s,xs,_Dp_)} + return function(_Do_){return [0,s,_Dn_]}} + function take_aux(n,xs) + {return 0 === n + ?empty + :function(param) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1]; + return [0,x,take_aux(n - 1 | 0,xs$0)]} + return 0}} + function take(n,xs) + {if(n < 0)invalid_arg(cst_Seq_take);return take_aux(n,xs)} + function drop(n,xs) + {return 0 <= n + ?0 === n + ?xs + :function(param) + {var n$0=n,xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],n$1=n$0 - 1 | 0; + if(0 === n$1)return caml_call1(xs$1,0); + var n$0=n$1,xs$0=xs$1; + continue} + return 0}} + :invalid_arg(cst_Seq_drop)} + function take_while(p,xs,param) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1]; + return caml_call1(p,x) + ?[0,x,function(_Dm_){return take_while(p,xs$0,_Dm_)}] + :0} + return 0} + function drop_while(p,xs,param) + {var xs$0=xs; + for(;;) + {var node=caml_call1(xs$0,0); + if(node) + {var xs$1=node[2],x=node[1]; + if(caml_call1(p,x)){var xs$0=xs$1;continue} + return node} + return 0}} + function group(eq,xs,param) + {var match=caml_call1(xs,0); + if(match) + {var + xs$0=match[2], + x=match[1], + _Dd_=caml_call1(eq,x), + _De_=function(_Dl_){return drop_while(_Dd_,xs$0,_Dl_)}, + _Df_=function(_Dk_){return group(eq,_De_,_Dk_)}, + _Dg_=caml_call1(eq,x), + _Dh_=function(_Dj_){return take_while(_Dg_,xs$0,_Dj_)}; + return [0,function(_Di_){return [0,x,_Dh_]},_Df_]} + return 0} + var Forced_twice=[248,cst_Stdlib_Seq_Forced_twice,caml_fresh_oo_id(0)]; + function failure(param){throw Forced_twice} + function memoize(xs) + {function s$0(param) + {var match=caml_call1(xs,0); + if(match){var xs$0=match[2],x=match[1];return [0,x,memoize(xs$0)]} + return 0} + var s=to_lazy(s$0); + return function(_Dc_) + {var _Db_=caml_obj_tag(s); + return 250 === _Db_?s[1]:246 === _Db_?force_lazy_block(s):s}} + function once(xs) + {function f(param) + {var match=caml_call1(xs,0); + if(match){var xs$0=match[2],x=match[1];return [0,x,once(xs$0)]} + return 0} + var action=[0,f]; + return function(param) + {var f=exchange(action,failure);return caml_call1(f,0)}} + function zip(xs,ys,param) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1],match$0=caml_call1(ys,0); + if(match$0) + {var ys$0=match$0[2],y=match$0[1]; + return [0,[0,x,y],function(_Da_){return zip(xs$0,ys$0,_Da_)}]} + return 0} + return 0} + function map2(f,xs,ys,param) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1],match$0=caml_call1(ys,0); + if(match$0) + {var + ys$0=match$0[2], + y=match$0[1], + _C__=function(_C$_){return map2(f,xs$0,ys$0,_C$_)}; + return [0,caml_call2(f,x,y),_C__]} + return 0} + return 0} + function interleave(xs,ys,param) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1]; + return [0,x,function(_C9_){return interleave(ys,xs$0,_C9_)}]} + return caml_call1(ys,0)} + function sorted_merge1(cmp,x,xs,y,ys) + {return 0 < caml_call2(cmp,x,y) + ?[0, + y, + function(_C7_) + {var match=caml_call1(ys,0); + if(match) + {var ys$0=match[2],y=match[1]; + return sorted_merge1(cmp,x,xs,y,ys$0)} + return [0,x,xs]}] + :[0, + x, + function(_C8_) + {var match=caml_call1(xs,0); + if(match) + {var xs$0=match[2],x=match[1]; + return sorted_merge1(cmp,x,xs$0,y,ys)} + return [0,y,ys]}]} + function sorted_merge(cmp,xs,ys,param) + {var match=caml_call1(xs,0),match$0=caml_call1(ys,0); + if(match) + {if(match$0) + {var ys$0=match$0[2],y=match$0[1],xs$0=match[2],x=match[1]; + return sorted_merge1(cmp,x,xs$0,y,ys$0)} + var c=match} + else + {if(! match$0)return 0;var c=match$0} + return c} + function map_fst(xys,param) + {var match=caml_call1(xys,0); + if(match) + {var xys$0=match[2],match$0=match[1],x=match$0[1]; + return [0,x,function(_C6_){return map_fst(xys$0,_C6_)}]} + return 0} + function map_snd(xys,param) + {var match=caml_call1(xys,0); + if(match) + {var xys$0=match[2],match$0=match[1],y=match$0[2]; + return [0,y,function(_C5_){return map_snd(xys$0,_C5_)}]} + return 0} + function unzip(xys) + {function _C2_(_C4_){return map_snd(xys,_C4_)} + return [0,function(_C3_){return map_fst(xys,_C3_)},_C2_]} + function filter_map_find_left_map(f,xs,param) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],match$0=caml_call1(f,x); + if(0 === match$0[0]) + {var y=match$0[1]; + return [0, + y, + function(_C1_){return filter_map_find_left_map(f,xs$1,_C1_)}]} + var xs$0=xs$1; + continue} + return 0}} + function filter_map_find_right_map(f,xs,param) + {var xs$0=xs; + for(;;) + {var match=caml_call1(xs$0,0); + if(match) + {var xs$1=match[2],x=match[1],match$0=caml_call1(f,x); + if(0 === match$0[0]){var xs$0=xs$1;continue} + var z=match$0[1]; + return [0, + z, + function(_C0_) + {return filter_map_find_right_map(f,xs$1,_C0_)}]} + return 0}} + function partition_map(f,xs) + {function _CX_(_CZ_){return filter_map_find_right_map(f,xs,_CZ_)} + return [0, + function(_CY_){return filter_map_find_left_map(f,xs,_CY_)}, + _CX_]} + function partition(p,xs) + {function _CT_(x){return 1 - caml_call1(p,x)} + function _CU_(_CW_){return filter(_CT_,xs,_CW_)} + return [0,function(_CV_){return filter(p,xs,_CV_)},_CU_]} + function peel(xss) + {return unzip(function(_CS_){return filter_map(uncons,xss,_CS_)})} + function transpose(xss,param) + {var match=peel(xss),tails=match[2],heads=match[1]; + if(is_empty(heads)) + {if(is_empty(tails))return 0;throw [0,Assert_failure,_r_]} + return [0,heads,function(_CR_){return transpose(tails,_CR_)}]} + function _s_(remainders,xss,param) + {var match=caml_call1(xss,0); + if(match) + {var xss$0=match[2],xs=match[1],match$0=caml_call1(xs,0); + if(match$0) + {var + xs$0=match$0[2], + x=match$0[1], + match$1=peel(remainders), + tails=match$1[2], + heads=match$1[1], + _CL_=function(_CQ_){return [0,xs$0,tails]}, + _CM_=function(_CP_){return _s_(_CL_,xss$0,_CP_)}; + return [0,function(_CO_){return [0,x,heads]},_CM_]} + var match$2=peel(remainders),tails$0=match$2[2],heads$0=match$2[1]; + return [0,heads$0,function(_CN_){return _s_(tails$0,xss$0,_CN_)}]} + return transpose(remainders,0)} + function map_product(f,xs,ys) + {function _CF_(x) + {function _CJ_(y){return caml_call2(f,x,y)} + return function(_CK_){return map$1(_CJ_,ys,_CK_)}} + function xss(_CI_){return map$1(_CF_,xs,_CI_)} + function _CE_(_CH_){return _s_(empty,xss,_CH_)} + return function(_CG_){return concat(_CE_,_CG_)}} + function product(xs,ys) + {return map_product(function(x,y){return [0,x,y]},xs,ys)} + function of_dispenser(it) + {function c(param) + {var match=caml_call1(it,0); + if(match){var x=match[1];return [0,x,c]} + return 0} + return c} + function to_dispenser(xs) + {var s=[0,xs]; + return function(param) + {var match=caml_call1(s[1],0); + if(match){var xs=match[2],x=match[1];s[1] = xs;return [0,x]} + return 0}} + function ints(i,param) + {var _CC_=i + 1 | 0;return [0,i,function(_CD_){return ints(_CC_,_CD_)}]} + var + Stdlib_Seq= + [0, + is_empty, + uncons, + length$0, + iter, + fold_left, + iteri, + fold_lefti, + for_all, + exists, + find, + find_map, + iter2, + fold_left2, + for_all2, + exists2, + equal$0, + compare$0, + empty, + return$0, + cons, + init, + unfold, + repeat, + forever, + cycle, + iterate, + map$1, + mapi, + filter, + filter_map, + scan, + take, + drop, + take_while, + drop_while, + group, + memoize, + Forced_twice, + once, + transpose, + append$0, + concat, + flat_map, + flat_map, + zip, + map2, + interleave, + sorted_merge, + product, + map_product, + unzip, + unzip, + partition_map, + partition, + of_dispenser, + to_dispenser, + ints]; + caml_register_global(782,Stdlib_Seq,"Stdlib__Seq"); + var none=0; + function some(v){return [0,v]} + function value(o,default$0){if(o){var v=o[1];return v}return default$0} + function get$0(param) + {if(param){var v=param[1];return v} + return invalid_arg(cst_option_is_None)} + function bind(o,f){if(o){var v=o[1];return caml_call1(f,v)}return 0} + function join(param){if(param){var o=param[1];return o}return 0} + function map$2(f,o){if(o){var v=o[1];return [0,caml_call1(f,v)]}return 0} + function fold$0(none,some,param) + {if(param){var v=param[1];return caml_call1(some,v)}return none} + function iter$0(f,param) + {if(param){var v=param[1];return caml_call1(f,v)}return 0} + function is_none(param){return param?0:1} + function is_some(param){return param?1:0} + function equal$1(eq,o0,o1) + {if(o0) + {if(o1){var v1=o1[1],v0=o0[1];return caml_call2(eq,v0,v1)}} + else + if(! o1)return 1; + return 0} + function compare$1(cmp,o0,o1) + {if(o0) + {var _CB_=o0[1]; + if(o1){var v1=o1[1];return caml_call2(cmp,_CB_,v1)} + return 1} + return o1?-1:0} + function to_result(none,param) + {if(param){var v=param[1];return [0,v]}return [1,none]} + function to_list(param){if(param){var v=param[1];return [0,v,0]}return 0} + function to_seq(param) + {if(param){var v=param[1];return function(_CA_){return return$0(v,_CA_)}} + return empty} + var + Stdlib_Option= + [0, + none, + some, + value, + get$0, + bind, + join, + map$2, + fold$0, + iter$0, + is_none, + is_some, + equal$1, + compare$1, + to_result, + to_list, + to_seq]; + caml_register_global(783,Stdlib_Option,"Stdlib__Option"); + function ok(v){return [0,v]} + function error(e){return [1,e]} + function value$0(r,default$0) + {if(0 === r[0]){var v=r[1];return v}return default$0} + function get_ok(param) + {if(0 === param[0]){var v=param[1];return v} + return invalid_arg(cst_result_is_Error)} + function get_error(param) + {if(0 === param[0])return invalid_arg(cst_result_is_Ok); + var e=param[1]; + return e} + function bind$0(r,f) + {if(0 === r[0]){var v=r[1];return caml_call1(f,v)}return r} + function join$0(e){if(0 === e[0]){var r=e[1];return r}return e} + function map$3(f,e) + {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e} + function map_error(f,v) + {if(0 === v[0])return v;var e=v[1];return [1,caml_call1(f,e)]} + function fold$1(ok,error,param) + {if(0 === param[0]){var v=param[1];return caml_call1(ok,v)} + var e=param[1]; + return caml_call1(error,e)} + function iter$1(f,param) + {if(0 === param[0]){var v=param[1];return caml_call1(f,v)}return 0} + function iter_error(f,param) + {if(0 === param[0])return 0;var e=param[1];return caml_call1(f,e)} + function is_ok(param){return 0 === param[0]?1:0} + function is_error(param){return 0 === param[0]?0:1} + function equal$2(ok,error,r0,r1) + {if(0 === r0[0]) + {var _Cy_=r0[1]; + if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cy_,v1)}} + else + {var _Cz_=r0[1]; + if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cz_,e1)}} + return 0} + function compare$2(ok,error,r0,r1) + {if(0 === r0[0]) + {var _Cw_=r0[1]; + if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cw_,v1)} + return -1} + var _Cx_=r0[1]; + if(0 === r1[0])return 1; + var e1=r1[1]; + return caml_call2(error,_Cx_,e1)} + function to_option(param) + {if(0 === param[0]){var v=param[1];return [0,v]}return 0} + function to_list$0(param) + {if(0 === param[0]){var v=param[1];return [0,v,0]}return 0} + function to_seq$0(param) + {if(0 === param[0]) + {var v=param[1];return function(_Cv_){return return$0(v,_Cv_)}} + return empty} + var + Stdlib_Result= + [0, + ok, + error, + value$0, + get_ok, + get_error, + bind$0, + join$0, + map$3, + map_error, + fold$1, + iter$1, + iter_error, + is_ok, + is_error, + equal$2, + compare$2, + to_option, + to_list$0, + to_seq$0]; + caml_register_global(784,Stdlib_Result,"Stdlib__Result"); + function equal$3(_Cu_,_Ct_){return _Cu_ === _Ct_?1:0} + var compare$3=caml_int_compare; + function to_float(param){return param?1.:0.} + function to_string$0(param){return param?cst_true$2:cst_false$2} + function _t_(_Cs_){return _Cs_} + var + Stdlib_Bool= + [0, + function(_Cr_){return 1 - _Cr_}, + equal$3, + compare$3, + _t_, + to_float, + to_string$0]; + caml_register_global(785,Stdlib_Bool,"Stdlib__Bool"); + function chr(n) + {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_Char_chr)} + function escaped(c) + {var switch$0=0; + if(40 <= c) + {if(92 === c)return cst$1;if(! (127 <= c))switch$0 = 1} + else + if(32 <= c) + {if(39 <= c)return cst$2;switch$0 = 1} + else + if(! (14 <= c)) + switch(c) + {case 8:return cst_b; + case 9:return cst_t; + case 10:return cst_n; + case 13:return cst_r + } + if(switch$0) + {var s$0=caml_create_bytes(1); + caml_bytes_unsafe_set(s$0,0,c); + return caml_string_of_bytes(s$0)} + var s=caml_create_bytes(4); + caml_bytes_unsafe_set(s,0,92); + caml_bytes_unsafe_set(s,1,48 + (c / 100 | 0) | 0); + caml_bytes_unsafe_set(s,2,48 + ((c / 10 | 0) % 10 | 0) | 0); + caml_bytes_unsafe_set(s,3,48 + (c % 10 | 0) | 0); + return caml_string_of_bytes(s)} + function lowercase(c) + {var _Cq_=c - 192 | 0,switch$0=0; + if(30 < _Cq_ >>> 0) + {if(! (25 < _Cq_ + 127 >>> 0))switch$0 = 1} + else + if(23 !== _Cq_)switch$0 = 1; + return switch$0?c + 32 | 0:c} + function uppercase(c) + {var _Cp_=c - 224 | 0,switch$0=0; + if(30 < _Cp_ >>> 0) + {if(! (25 < _Cp_ + 127 >>> 0))switch$0 = 1} + else + if(23 !== _Cp_)switch$0 = 1; + return switch$0?c - 32 | 0:c} + function lowercase_ascii(c){return 25 < c - 65 >>> 0?c:c + 32 | 0} + function uppercase_ascii(c){return 25 < c - 97 >>> 0?c:c - 32 | 0} + function compare$4(c1,c2){return c1 - c2 | 0} + function equal$4(c1,c2){return 0 === (c1 - c2 | 0)?1:0} + var + Stdlib_Char= + [0, + chr, + escaped, + lowercase, + uppercase, + lowercase_ascii, + uppercase_ascii, + compare$4, + equal$4]; + caml_register_global(786,Stdlib_Char,"Stdlib__Char"); + var + min$0=0, + max$0=1114111, + lo_bound=55295, + hi_bound=57344, + bom=65279, + rep=65533; + function succ(u) + {return u === 55295 + ?hi_bound + :u === 1114111?invalid_arg(err_no_succ):u + 1 | 0} + function pred(u) + {return u === 57344?lo_bound:u === 0?invalid_arg(err_no_pred):u - 1 | 0} + function is_valid(i) + {var _Cl_=0 <= i?1:0,_Cm_=_Cl_?i <= 55295?1:0:_Cl_; + if(_Cm_) + var _Cn_=_Cm_; + else + var _Co_=57344 <= i?1:0,_Cn_=_Co_?i <= 1114111?1:0:_Co_; + return _Cn_} + function of_int(i) + {return is_valid(i) + ?i + :invalid_arg + (cat(caml_format_int(cst_X,i),cst_is_not_an_Unicode_scalar_v))} + function is_char(u){return u < 256?1:0} + function of_char(c){return c} + function to_char(u) + {return 255 < u + ?invalid_arg + (cat + (cst_U, + cat + (caml_format_int(cst_04X,u),cst_is_not_a_latin1_character))) + :u} + function unsafe_to_char(_Ck_){return _Ck_} + function equal$5(_Cj_,_Ci_){return _Cj_ === _Ci_?1:0} + var compare$5=caml_int_compare; + function hash(_Ch_){return _Ch_} + function utf_decode_is_valid(d){return 1 === (d >>> 27 | 0)?1:0} + function utf_decode_length(d){return (d >>> 24 | 0) & 7} + function utf_decode_uchar(d){return d & 16777215} + function utf_decode(n,u){return (8 | n) << 24 | u} + function dec_invalid(n){return n << 24 | 65533} + function utf_8_byte_length(u) + {if(0 <= u) + {if(127 < u) + {if(2047 < u) + {if(65535 < u) + {if(1114111 < u)throw [0,Assert_failure,_u_];return 4} + return 3} + return 2} + return 1} + throw [0,Assert_failure,_v_]} + function utf_16_byte_length(u) + {if(0 <= u) + {if(65535 < u){if(1114111 < u)throw [0,Assert_failure,_w_];return 4} + return 2} + throw [0,Assert_failure,_x_]} + function _y_(_Cg_){return _Cg_} + var + Stdlib_Uchar= + [0, + min$0, + max$0, + bom, + rep, + succ, + pred, + is_valid, + of_int, + function(_Cf_){return _Cf_}, + _y_, + is_char, + of_char, + to_char, + unsafe_to_char, + equal$5, + compare$5, + hash, + utf_decode_is_valid, + utf_decode_uchar, + utf_decode_length, + utf_decode, + dec_invalid, + utf_8_byte_length, + utf_16_byte_length]; + caml_register_global(787,Stdlib_Uchar,"Stdlib__Uchar"); + function length$1(l) + {var len=0,param=l; + for(;;) + {if(param) + {var param$0=param[2],len$0=len + 1 | 0,len=len$0,param=param$0; + continue} + return len}} + function cons$0(a,l){return [0,a,l]} + function hd(param) + {if(param){var a=param[1];return a}return failwith(cst_hd)} + function tl(param) + {if(param){var l=param[2];return l}return failwith(cst_tl)} + function nth(l,n) + {if(0 <= n) + {var l$0=l,n$0=n; + for(;;) + {if(l$0) + {var l$1=l$0[2],a=l$0[1]; + if(0 === n$0)return a; + var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1; + continue} + return failwith(cst_nth)}} + return invalid_arg(cst_List_nth)} + function nth_opt(l,n) + {if(0 <= n) + {var l$0=l,n$0=n; + for(;;) + {if(l$0) + {var l$1=l$0[2],a=l$0[1]; + if(0 === n$0)return [0,a]; + var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1; + continue} + return 0}} + return invalid_arg(cst_List_nth$0)} + function rev_append(l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {var l1$1=l1$0[2],a=l1$0[1],l2$1=[0,a,l2$0],l1$0=l1$1,l2$0=l2$1; + continue} + return l2$0}} + function rev(l){return rev_append(l,0)} + function init_aux$0(i,n,f) + {if(n <= i)return 0; + var r=caml_call1(f,i); + return [0,r,init_aux$0(i + 1 | 0,n,f)]} + function init$0(len,f) + {if(0 <= len) + {if(50 < len) + {var acc=0,i=0; + for(;;) + {if(len <= i)return rev(acc); + var i$0=i + 1 | 0,acc$0=[0,caml_call1(f,i),acc],acc=acc$0,i=i$0; + continue}} + return init_aux$0(0,len,f)} + return invalid_arg(cst_List_init)} + function flatten(param) + {if(param){var r=param[2],l=param[1];return append(l,flatten(r))} + return 0} + function map$4(f,param) + {if(param) + {var l=param[2],a=param[1],r=caml_call1(f,a);return [0,r,map$4(f,l)]} + return 0} + function _z_(i,f,param) + {if(param) + {var l=param[2],a=param[1],r=caml_call2(f,i,a); + return [0,r,_z_(i + 1 | 0,f,l)]} + return 0} + function mapi$0(f,l){return _z_(0,f,l)} + function rev_map(f,param) + {var accu=0,param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + a=param$0[1], + accu$0=[0,caml_call1(f,a),accu], + accu=accu$0, + param$0=l; + continue} + return accu}} + function iter$2(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],a=param$0[1]; + caml_call1(f,a); + var param$0=l; + continue} + return 0}} + function iteri$0(f,l$0) + {var i=0,param=l$0; + for(;;) + {if(param) + {var l=param[2],a=param[1]; + caml_call2(f,i,a); + var i$0=i + 1 | 0,i=i$0,param=l; + continue} + return 0}} + function fold_left$0(f,accu,l) + {var accu$0=accu,l$0=l; + for(;;) + {if(l$0) + {var + l$1=l$0[2], + a=l$0[1], + accu$1=caml_call2(f,accu$0,a), + accu$0=accu$1, + l$0=l$1; + continue} + return accu$0}} + function fold_right(f,l,accu) + {if(l){var l$0=l[2],a=l[1];return caml_call2(f,a,fold_right(f,l$0,accu))} + return accu} + function map2$0(f,l1,l2) + {if(l1) + {if(l2) + {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1],r=caml_call2(f,a1,a2); + return [0,r,map2$0(f,l1$0,l2$0)]}} + else + if(! l2)return 0; + return invalid_arg(cst_List_map2)} + function rev_map2(f,l1,l2) + {var accu=0,l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + a2=l2$0[1], + l1$1=l1$0[2], + a1=l1$0[1], + accu$0=[0,caml_call2(f,a1,a2),accu], + accu=accu$0, + l1$0=l1$1, + l2$0=l2$1; + continue}} + else + if(! l2$0)return accu; + return invalid_arg(cst_List_rev_map2)}} + function iter2$0(f,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var l2$1=l2$0[2],a2=l2$0[1],l1$1=l1$0[2],a1=l1$0[1]; + caml_call2(f,a1,a2); + var l1$0=l1$1,l2$0=l2$1; + continue}} + else + if(! l2$0)return 0; + return invalid_arg(cst_List_iter2)}} + function fold_left2$0(f,accu,l1,l2) + {var accu$0=accu,l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + a2=l2$0[1], + l1$1=l1$0[2], + a1=l1$0[1], + accu$1=caml_call3(f,accu$0,a1,a2), + accu$0=accu$1, + l1$0=l1$1, + l2$0=l2$1; + continue}} + else + if(! l2$0)return accu$0; + return invalid_arg(cst_List_fold_left2)}} + function fold_right2(f,l1,l2,accu) + {if(l1) + {if(l2) + {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1]; + return caml_call3(f,a1,a2,fold_right2(f,l1$0,l2$0,accu))}} + else + if(! l2)return accu; + return invalid_arg(cst_List_fold_right2)} + function for_all$0(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],a=param$0[1],_Ce_=caml_call1(p,a); + if(_Ce_){var param$0=l;continue} + return _Ce_} + return 1}} + function exists$0(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],a=param$0[1],_Cd_=caml_call1(p,a); + if(_Cd_)return _Cd_; + var param$0=l; + continue} + return 0}} + function for_all2$0(p,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + a2=l2$0[1], + l1$1=l1$0[2], + a1=l1$0[1], + _Cc_=caml_call2(p,a1,a2); + if(_Cc_){var l1$0=l1$1,l2$0=l2$1;continue} + return _Cc_}} + else + if(! l2$0)return 1; + return invalid_arg(cst_List_for_all2)}} + function exists2$0(p,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + a2=l2$0[1], + l1$1=l1$0[2], + a1=l1$0[1], + _Cb_=caml_call2(p,a1,a2); + if(_Cb_)return _Cb_; + var l1$0=l1$1,l2$0=l2$1; + continue}} + else + if(! l2$0)return 0; + return invalid_arg(cst_List_exists2)}} + function mem(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],a=param$0[1],_Ca_=0 === caml_compare(a,x)?1:0; + if(_Ca_)return _Ca_; + var param$0=l; + continue} + return 0}} + function memq(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],a=param$0[1],_B$_=a === x?1:0; + if(_B$_)return _B$_; + var param$0=l; + continue} + return 0}} + function assoc(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(0 === caml_compare(a,x))return b; + var param$0=l; + continue} + throw Not_found}} + function assoc_opt(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(0 === caml_compare(a,x))return [0,b]; + var param$0=l; + continue} + return 0}} + function assq(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(a === x)return b; + var param$0=l; + continue} + throw Not_found}} + function assq_opt(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],b=match[2],a=match[1]; + if(a === x)return [0,b]; + var param$0=l; + continue} + return 0}} + function mem_assoc(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + match=param$0[1], + a=match[1], + _B__=0 === caml_compare(a,x)?1:0; + if(_B__)return _B__; + var param$0=l; + continue} + return 0}} + function mem_assq(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],match=param$0[1],a=match[1],_B9_=a === x?1:0; + if(_B9_)return _B9_; + var param$0=l; + continue} + return 0}} + function remove_assoc(x,param) + {if(param) + {var l=param[2],pair=param[1],a=pair[1]; + return 0 === caml_compare(a,x)?l:[0,pair,remove_assoc(x,l)]} + return 0} + function remove_assq(x,param) + {if(param) + {var l=param[2],pair=param[1],a=pair[1]; + return a === x?l:[0,pair,remove_assq(x,l)]} + return 0} + function find$0(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1]; + if(caml_call1(p,x))return x; + var param$0=l; + continue} + throw Not_found}} + function find_opt(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1]; + if(caml_call1(p,x))return [0,x]; + var param$0=l; + continue} + return 0}} + function find_map$0(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1],result=caml_call1(f,x); + if(result)return result; + var param$0=l; + continue} + return 0}} + function find_all(p) + {var accu=0; + return function(param$0) + {var accu$0=accu,param=param$0; + for(;;) + {if(param) + {var l=param[2],x=param[1]; + if(caml_call1(p,x)) + {var accu$1=[0,x,accu$0],accu$0=accu$1,param=l;continue} + var param=l; + continue} + return rev(accu$0)}}} + function filteri(p,param) + {var i=0,acc=0,param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + x=param$0[1], + acc$0=caml_call2(p,i,x)?[0,x,acc]:acc, + i$0=i + 1 | 0, + i=i$0, + acc=acc$0, + param$0=l; + continue} + return rev(acc)}} + function filter_map$0(f) + {var accu=0; + return function(param$0) + {var accu$0=accu,param=param$0; + for(;;) + {if(param) + {var l=param[2],x=param[1],match=caml_call1(f,x); + if(match) + {var v=match[1],accu$1=[0,v,accu$0],accu$0=accu$1,param=l; + continue} + var param=l; + continue} + return rev(accu$0)}}} + function concat_map(f,param) + {var acc=0,param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + x=param$0[1], + xs=caml_call1(f,x), + acc$0=rev_append(xs,acc), + acc=acc$0, + param$0=l; + continue} + return rev(acc)}} + function fold_left_map(f,accu,param) + {var accu$0=accu,l_accu=0,param$0=param; + for(;;) + {if(param$0) + {var + l=param$0[2], + x=param$0[1], + match=caml_call2(f,accu$0,x), + x$0=match[2], + accu$1=match[1], + l_accu$0=[0,x$0,l_accu], + accu$0=accu$1, + l_accu=l_accu$0, + param$0=l; + continue} + return [0,accu$0,rev(l_accu)]}} + function partition$0(p,param) + {var yes=0,no=0,param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1]; + if(caml_call1(p,x)) + {var yes$0=[0,x,yes],yes=yes$0,param$0=l;continue} + var no$0=[0,x,no],no=no$0,param$0=l; + continue} + var _B8_=rev(no); + return [0,rev(yes),_B8_]}} + function partition_map$0(p,param) + {var left=0,right=0,param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],x=param$0[1],match=caml_call1(p,x); + if(0 === match[0]) + {var v=match[1],left$0=[0,v,left],left=left$0,param$0=l;continue} + var v$0=match[1],right$0=[0,v$0,right],right=right$0,param$0=l; + continue} + var _B7_=rev(right); + return [0,rev(left),_B7_]}} + function split(param) + {if(param) + {var + l=param[2], + match=param[1], + y=match[2], + x=match[1], + match$0=split(l), + ry=match$0[2], + rx=match$0[1]; + return [0,[0,x,rx],[0,y,ry]]} + return _A_} + function combine(l1,l2) + {if(l1) + {if(l2) + {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1]; + return [0,[0,a1,a2],combine(l1$0,l2$0)]}} + else + if(! l2)return 0; + return invalid_arg(cst_List_combine)} + function merge(cmp,l1,l2) + {if(l1) + {if(l2) + {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; + return 0 < caml_call2(cmp,h1,h2) + ?[0,h2,merge(cmp,l1,t2)] + :[0,h1,merge(cmp,t1,l2)]} + return l1} + return l2} + function fast_sort(cmp,l) + {function rev_sort(n,l) + {if(2 === n) + {if(l) + {var _B3_=l[2]; + if(_B3_) + {var + tl=_B3_[2], + x2=_B3_[1], + x1=l[1], + s=0 < caml_call2(cmp,x1,x2)?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; + return [0,s,tl]}}} + else + if(3 === n && l) + {var _B5_=l[2]; + if(_B5_) + {var _B6_=_B5_[2]; + if(_B6_) + {var + tl$1=_B6_[2], + x3=_B6_[1], + x2$0=_B5_[1], + x1$0=l[1], + s$0= + 0 < caml_call2(cmp,x1$0,x2$0) + ?0 < caml_call2(cmp,x2$0,x3) + ?[0,x1$0,[0,x2$0,[0,x3,0]]] + :0 < caml_call2(cmp,x1$0,x3) + ?[0,x1$0,[0,x3,[0,x2$0,0]]] + :[0,x3,[0,x1$0,[0,x2$0,0]]] + :0 < caml_call2(cmp,x1$0,x3) + ?[0,x2$0,[0,x1$0,[0,x3,0]]] + :0 < caml_call2(cmp,x2$0,x3) + ?[0,x2$0,[0,x3,[0,x1$0,0]]] + :[0,x3,[0,x2$0,[0,x1$0,0]]]; + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {if(l2) + {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; + if(0 < caml_call2(cmp,h1,h2)) + {var accu$0=[0,h2,accu],l2=t2,accu=accu$0;continue} + var accu$1=[0,h1,accu],l1=t1,accu=accu$1; + continue} + var _B4_=rev_append(l1,accu)} + else + var _B4_=rev_append(l2,accu); + return [0,_B4_,tl$0]}} + function sort(n,l) + {if(2 === n) + {if(l) + {var _BZ_=l[2]; + if(_BZ_) + {var + tl=_BZ_[2], + x2=_BZ_[1], + x1=l[1], + s=0 < caml_call2(cmp,x1,x2)?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; + return [0,s,tl]}}} + else + if(3 === n && l) + {var _B1_=l[2]; + if(_B1_) + {var _B2_=_B1_[2]; + if(_B2_) + {var + tl$1=_B2_[2], + x3=_B2_[1], + x2$0=_B1_[1], + x1$0=l[1], + s$0= + 0 < caml_call2(cmp,x1$0,x2$0) + ?0 < caml_call2(cmp,x1$0,x3) + ?0 < caml_call2(cmp,x2$0,x3) + ?[0,x3,[0,x2$0,[0,x1$0,0]]] + :[0,x2$0,[0,x3,[0,x1$0,0]]] + :[0,x2$0,[0,x1$0,[0,x3,0]]] + :0 < caml_call2(cmp,x2$0,x3) + ?0 < caml_call2(cmp,x1$0,x3) + ?[0,x3,[0,x1$0,[0,x2$0,0]]] + :[0,x1$0,[0,x3,[0,x2$0,0]]] + :[0,x1$0,[0,x2$0,[0,x3,0]]]; + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=rev_sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=rev_sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {if(l2) + {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; + if(0 < caml_call2(cmp,h1,h2)) + {var accu$0=[0,h1,accu],l1=t1,accu=accu$0;continue} + var accu$1=[0,h2,accu],l2=t2,accu=accu$1; + continue} + var _B0_=rev_append(l1,accu)} + else + var _B0_=rev_append(l2,accu); + return [0,_B0_,tl$0]}} + var len=length$1(l); + return 2 <= len?sort(len,l)[1]:l} + function sort_uniq(cmp,l) + {function rev_sort(n,l) + {if(2 === n) + {if(l) + {var _BQ_=l[2]; + if(_BQ_) + {var + tl=_BQ_[2], + x2=_BQ_[1], + x1=l[1], + c$0=caml_call2(cmp,x1,x2), + s=0 === c$0?[0,x1,0]:0 < c$0?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; + return [0,s,tl]}}} + else + if(3 === n && l) + {var _BS_=l[2]; + if(_BS_) + {var _BT_=_BS_[2]; + if(_BT_) + {var + tl$1=_BT_[2], + x3=_BT_[1], + x2$0=_BS_[1], + x1$0=l[1], + c$1=caml_call2(cmp,x1$0,x2$0); + if(0 === c$1) + var + c$2=caml_call2(cmp,x2$0,x3), + _BU_= + 0 === c$2 + ?[0,x2$0,0] + :0 < c$2?[0,x2$0,[0,x3,0]]:[0,x3,[0,x2$0,0]], + s$0=_BU_; + else + if(0 < c$1) + {var c$3=caml_call2(cmp,x2$0,x3); + if(0 === c$3) + var _BV_=[0,x1$0,[0,x2$0,0]]; + else + if(0 < c$3) + var _BV_=[0,x1$0,[0,x2$0,[0,x3,0]]]; + else + var + c$4=caml_call2(cmp,x1$0,x3), + _BW_= + 0 === c$4 + ?[0,x1$0,[0,x2$0,0]] + :0 < c$4 + ?[0,x1$0,[0,x3,[0,x2$0,0]]] + :[0,x3,[0,x1$0,[0,x2$0,0]]], + _BV_=_BW_; + var s$0=_BV_} + else + {var c$5=caml_call2(cmp,x1$0,x3); + if(0 === c$5) + var _BX_=[0,x2$0,[0,x1$0,0]]; + else + if(0 < c$5) + var _BX_=[0,x2$0,[0,x1$0,[0,x3,0]]]; + else + var + c$6=caml_call2(cmp,x2$0,x3), + _BY_= + 0 === c$6 + ?[0,x2$0,[0,x1$0,0]] + :0 < c$6 + ?[0,x2$0,[0,x3,[0,x1$0,0]]] + :[0,x3,[0,x2$0,[0,x1$0,0]]], + _BX_=_BY_; + var s$0=_BX_} + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {if(l2) + {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2); + if(0 === c) + {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue} + if(0 <= c){var accu$1=[0,h2,accu],l2=t2,accu=accu$1;continue} + var accu$2=[0,h1,accu],l1=t1,accu=accu$2; + continue} + var _BR_=rev_append(l1,accu)} + else + var _BR_=rev_append(l2,accu); + return [0,_BR_,tl$0]}} + function sort(n,l) + {if(2 === n) + {if(l) + {var _BH_=l[2]; + if(_BH_) + {var + tl=_BH_[2], + x2=_BH_[1], + x1=l[1], + c$0=caml_call2(cmp,x1,x2), + s=0 === c$0?[0,x1,0]:0 <= c$0?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; + return [0,s,tl]}}} + else + if(3 === n && l) + {var _BJ_=l[2]; + if(_BJ_) + {var _BK_=_BJ_[2]; + if(_BK_) + {var + tl$1=_BK_[2], + x3=_BK_[1], + x2$0=_BJ_[1], + x1$0=l[1], + c$1=caml_call2(cmp,x1$0,x2$0); + if(0 === c$1) + var + c$2=caml_call2(cmp,x2$0,x3), + _BL_= + 0 === c$2 + ?[0,x2$0,0] + :0 <= c$2?[0,x3,[0,x2$0,0]]:[0,x2$0,[0,x3,0]], + s$0=_BL_; + else + if(0 <= c$1) + {var c$3=caml_call2(cmp,x1$0,x3); + if(0 === c$3) + var _BM_=[0,x2$0,[0,x1$0,0]]; + else + if(0 <= c$3) + var + c$4=caml_call2(cmp,x2$0,x3), + _BN_= + 0 === c$4 + ?[0,x2$0,[0,x1$0,0]] + :0 <= c$4 + ?[0,x3,[0,x2$0,[0,x1$0,0]]] + :[0,x2$0,[0,x3,[0,x1$0,0]]], + _BM_=_BN_; + else + var _BM_=[0,x2$0,[0,x1$0,[0,x3,0]]]; + var s$0=_BM_} + else + {var c$5=caml_call2(cmp,x2$0,x3); + if(0 === c$5) + var _BO_=[0,x1$0,[0,x2$0,0]]; + else + if(0 <= c$5) + var + c$6=caml_call2(cmp,x1$0,x3), + _BP_= + 0 === c$6 + ?[0,x1$0,[0,x2$0,0]] + :0 <= c$6 + ?[0,x3,[0,x1$0,[0,x2$0,0]]] + :[0,x1$0,[0,x3,[0,x2$0,0]]], + _BO_=_BP_; + else + var _BO_=[0,x1$0,[0,x2$0,[0,x3,0]]]; + var s$0=_BO_} + return [0,s$0,tl$1]}}} + var + n1=n >> 1, + n2=n - n1 | 0, + match=rev_sort(n1,l), + l2$0=match[2], + s1=match[1], + match$0=rev_sort(n2,l2$0), + tl$0=match$0[2], + s2=match$0[1], + l1=s1, + l2=s2, + accu=0; + for(;;) + {if(l1) + {if(l2) + {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2); + if(0 === c) + {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue} + if(0 < c){var accu$1=[0,h1,accu],l1=t1,accu=accu$1;continue} + var accu$2=[0,h2,accu],l2=t2,accu=accu$2; + continue} + var _BI_=rev_append(l1,accu)} + else + var _BI_=rev_append(l2,accu); + return [0,_BI_,tl$0]}} + var len=length$1(l); + return 2 <= len?sort(len,l)[1]:l} + function compare_lengths(l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0){var l2$1=l2$0[2],l1$1=l1$0[2],l1$0=l1$1,l2$0=l2$1;continue} + return 1} + return l2$0?-1:0}} + function compare_length_with(l,n) + {var l$0=l,n$0=n; + for(;;) + {if(l$0) + {var l$1=l$0[2]; + if(0 < n$0){var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;continue} + return 1} + return 0 === n$0?0:0 < n$0?-1:1}} + function equal$6(eq,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {if(l2$0) + {var + l2$1=l2$0[2], + a2=l2$0[1], + l1$1=l1$0[2], + a1=l1$0[1], + _BG_=caml_call2(eq,a1,a2); + if(_BG_){var l1$0=l1$1,l2$0=l2$1;continue} + return _BG_}} + else + if(! l2$0)return 1; + return 0}} + function compare$6(cmp,l1,l2) + {var l1$0=l1,l2$0=l2; + for(;;) + {if(l1$0) + {var _BE_=l1$0[2],_BF_=l1$0[1]; + if(l2$0) + {var l2$1=l2$0[2],a2=l2$0[1],c=caml_call2(cmp,_BF_,a2); + if(0 === c){var l1$0=_BE_,l2$0=l2$1;continue} + return c} + return 1} + return l2$0?-1:0}} + function to_seq$1(l) + {function aux(l,param) + {if(l) + {var tail=l[2],x=l[1]; + return [0,x,function(_BD_){return aux(tail,_BD_)}]} + return 0} + return function(_BC_){return aux(l,_BC_)}} + function of_seq(seq) + {function direct(depth,seq) + {if(0 === depth) + {var _BB_=0; + return rev(fold_left(function(acc,x){return [0,x,acc]},_BB_,seq))} + var match=caml_call1(seq,0); + if(match) + {var next=match[2],x=match[1]; + return [0,x,direct(depth - 1 | 0,next)]} + return 0} + return direct(500,seq)} + var + include$0= + [0, + length$1, + compare_lengths, + compare_length_with, + cons$0, + hd, + tl, + nth, + nth_opt, + rev, + init$0, + append, + rev_append, + flatten, + flatten, + equal$6, + compare$6, + iter$2, + iteri$0, + map$4, + mapi$0, + rev_map, + filter_map$0, + concat_map, + fold_left_map, + fold_left$0, + fold_right, + iter2$0, + map2$0, + rev_map2, + fold_left2$0, + fold_right2, + for_all$0, + exists$0, + for_all2$0, + exists2$0, + mem, + memq, + find$0, + find_opt, + find_map$0, + find_all, + find_all, + filteri, + partition$0, + partition_map$0, + assoc, + assoc_opt, + assq, + assq_opt, + mem_assoc, + mem_assq, + remove_assoc, + remove_assq, + split, + combine, + fast_sort, + fast_sort, + fast_sort, + sort_uniq, + merge, + to_seq$1, + of_seq]; + caml_register_global(788,include$0,"Stdlib__List"); + var zero=0,one=1,minus_one=-1; + function abs$0(x){return 0 <= x?x:- x | 0} + var max_int$0=2147483647,min_int$0=-2147483648; + function lognot(x){return x ^ -1} + function equal$7(_BA_,_Bz_){return _BA_ === _Bz_?1:0} + var compare$7=caml_int_compare; + function min$1(x,y){return x <= y?x:y} + function max$1(x,y){return y <= x?x:y} + function to_string$1(x){return caml_string_of_jsbytes("" + x)} + var + Stdlib_Int= + [0, + zero, + one, + minus_one, + abs$0, + max_int$0, + min_int$0, + lognot, + equal$7, + compare$7, + min$1, + max$1, + to_string$1]; + caml_register_global(789,Stdlib_Int,"Stdlib__Int"); + function make$0(n,c) + {var s=caml_create_bytes(n);caml_fill_bytes(s,0,n,c);return s} + function init$1(n,f) + {var s=caml_create_bytes(n),_Bx_=n - 1 | 0,_Bw_=0; + if(! (_Bx_ < 0)) + {var i=_Bw_; + for(;;) + {caml_bytes_unsafe_set(s,i,caml_call1(f,i)); + var _By_=i + 1 | 0; + if(_Bx_ !== i){var i=_By_;continue} + break}} + return s} + var empty$0=caml_create_bytes(0); + function copy(s) + {var len=caml_ml_bytes_length(s),r=caml_create_bytes(len); + caml_blit_bytes(s,0,r,0,len); + return r} + function of_bytes(b){return caml_string_of_bytes(copy(b))} + function to_bytes(s){return copy(caml_bytes_of_string(s))} + function sub(s,ofs,len) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + {var r=caml_create_bytes(len);caml_blit_bytes(s,ofs,r,0,len);return r} + return invalid_arg(cst_String_sub_Bytes_sub)} + function sub_string(b,ofs,len) + {return caml_string_of_bytes(sub(b,ofs,len))} + function symbol$0(a,b) + {var c=a + b | 0,_Bv_=b < 0?1:0,match=c < 0?1:0,switch$0=0; + if(a < 0) + {if(_Bv_ && ! match)switch$0 = 1} + else + if(! _Bv_ && match)switch$0 = 1; + return switch$0?invalid_arg(cst_Bytes_extend):c} + function extend(s,left,right) + {var + len=symbol$0(symbol$0(caml_ml_bytes_length(s),left),right), + r=caml_create_bytes(len); + if(0 <= left) + var dstoff=left,srcoff=0; + else + var dstoff=0,srcoff=- left | 0; + var cpylen=min$1(caml_ml_bytes_length(s) - srcoff | 0,len - dstoff | 0); + if(0 < cpylen)caml_blit_bytes(s,srcoff,r,dstoff,cpylen); + return r} + function fill(s,ofs,len,c) + {if + (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs)) + return caml_fill_bytes(s,ofs,len,c); + return invalid_arg(cst_String_fill_Bytes_fill)} + function blit(s1,ofs1,s2,ofs2,len) + {if + (0 + <= + len + && + 0 + <= + ofs1 + && + ! + ((caml_ml_bytes_length(s1) - len | 0) < ofs1) + && + 0 + <= + ofs2 + && + ! + ((caml_ml_bytes_length(s2) - len | 0) < ofs2)) + return caml_blit_bytes(s1,ofs1,s2,ofs2,len); + return invalid_arg(cst_Bytes_blit)} + function blit$0(s1,ofs1,s2,ofs2,len) + {if + (0 + <= + len + && + 0 + <= + ofs1 + && + ! + ((caml_ml_string_length(s1) - len | 0) < ofs1) + && + 0 + <= + ofs2 + && + ! + ((caml_ml_bytes_length(s2) - len | 0) < ofs2)) + return caml_blit_string(s1,ofs1,s2,ofs2,len); + return invalid_arg(cst_String_blit_Bytes_blit_str)} + function iter$3(f,a) + {var _Bt_=caml_ml_bytes_length(a) - 1 | 0,_Bs_=0; + if(! (_Bt_ < 0)) + {var i=_Bs_; + for(;;) + {caml_call1(f,caml_bytes_unsafe_get(a,i)); + var _Bu_=i + 1 | 0; + if(_Bt_ !== i){var i=_Bu_;continue} + break}} + return 0} + function iteri$1(f,a) + {var _Bq_=caml_ml_bytes_length(a) - 1 | 0,_Bp_=0; + if(! (_Bq_ < 0)) + {var i=_Bp_; + for(;;) + {caml_call2(f,i,caml_bytes_unsafe_get(a,i)); + var _Br_=i + 1 | 0; + if(_Bq_ !== i){var i=_Br_;continue} + break}} + return 0} + function concat$0(sep,l) + {if(l) + {var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0; + for(;;) + {if(param) + {var _Bm_=param[1]; + if(param[2]) + {var + tl=param[2], + x=(caml_ml_bytes_length(_Bm_) + seplen | 0) + acc | 0, + acc$0=acc <= x?x:invalid_arg(cst_Bytes_concat), + acc=acc$0, + param=tl; + continue} + var _Bo_=caml_ml_bytes_length(_Bm_) + acc | 0} + else + var _Bo_=acc; + var dst=caml_create_bytes(_Bo_),pos=pos$1,param$0=l; + for(;;) + {if(param$0) + {var _Bn_=param$0[1]; + if(param$0[2]) + {var tl$0=param$0[2]; + caml_blit_bytes(_Bn_,0,dst,pos,caml_ml_bytes_length(_Bn_)); + caml_blit_bytes + (sep,0,dst,pos + caml_ml_bytes_length(_Bn_) | 0,seplen); + var + pos$0=(pos + caml_ml_bytes_length(_Bn_) | 0) + seplen | 0, + pos=pos$0, + param$0=tl$0; + continue} + caml_blit_bytes(_Bn_,0,dst,pos,caml_ml_bytes_length(_Bn_)); + return dst} + return dst}}} + return empty$0} + function cat$0(s1,s2) + {var + l1=caml_ml_bytes_length(s1), + l2=caml_ml_bytes_length(s2), + r=caml_create_bytes(l1 + l2 | 0); + caml_blit_bytes(s1,0,r,0,l1); + caml_blit_bytes(s2,0,r,l1,l2); + return r} + function is_space(param) + {var _Bl_=param - 9 | 0,switch$0=0; + if(4 < _Bl_ >>> 0) + {if(23 === _Bl_)switch$0 = 1} + else + if(2 !== _Bl_)switch$0 = 1; + return switch$0?1:0} + function trim(s) + {var len=caml_ml_bytes_length(s),i=[0,0]; + for(;;) + {if(i[1] < len && is_space(caml_bytes_unsafe_get(s,i[1]))) + {i[1]++;continue} + var j=[0,len - 1 | 0]; + for(;;) + {if(i[1] <= j[1] && is_space(caml_bytes_unsafe_get(s,j[1]))) + {j[1] += -1;continue} + return i[1] <= j[1]?sub(s,i[1],(j[1] - i[1] | 0) + 1 | 0):empty$0}}} + function escaped$0(s) + {var n=[0,0],_Be_=caml_ml_bytes_length(s) - 1 | 0,_Bd_=0; + if(! (_Be_ < 0)) + {var i$0=_Bd_; + for(;;) + {var match=caml_bytes_unsafe_get(s,i$0),switch$0=0; + if(32 <= match) + {var _Bi_=match - 34 | 0,switch$1=0; + if(58 < _Bi_ >>> 0) + {if(93 <= _Bi_)switch$1 = 1} + else + if(56 < _Bi_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} + if(! switch$1){var _Bj_=1;switch$0 = 2}} + else + if(11 <= match) + {if(13 === match)switch$0 = 1} + else + if(8 <= match)switch$0 = 1; + switch(switch$0){case 0:var _Bj_=4;break;case 1:var _Bj_=2;break} + n[1] = n[1] + _Bj_ | 0; + var _Bk_=i$0 + 1 | 0; + if(_Be_ !== i$0){var i$0=_Bk_;continue} + break}} + if(n[1] === caml_ml_bytes_length(s))return copy(s); + var s$0=caml_create_bytes(n[1]); + n[1] = 0; + var _Bg_=caml_ml_bytes_length(s) - 1 | 0,_Bf_=0; + if(! (_Bg_ < 0)) + {var i=_Bf_; + for(;;) + {var c=caml_bytes_unsafe_get(s,i),switch$2=0; + if(35 <= c) + if(92 === c) + switch$2 = 2; + else + if(127 <= c)switch$2 = 1;else switch$2 = 3; + else + if(32 <= c) + if(34 <= c)switch$2 = 2;else switch$2 = 3; + else + if(14 <= c) + switch$2 = 1; + else + switch(c) + {case 8: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],98); + break; + case 9: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],116); + break; + case 10: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],110); + break; + case 13: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],114); + break; + default:switch$2 = 1} + switch(switch$2) + {case 1: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],48 + (c / 100 | 0) | 0); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],48 + ((c / 10 | 0) % 10 | 0) | 0); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],48 + (c % 10 | 0) | 0); + break; + case 2: + caml_bytes_unsafe_set(s$0,n[1],92); + n[1]++; + caml_bytes_unsafe_set(s$0,n[1],c); + break; + case 3:caml_bytes_unsafe_set(s$0,n[1],c);break + } + n[1]++; + var _Bh_=i + 1 | 0; + if(_Bg_ !== i){var i=_Bh_;continue} + break}} + return s$0} + function map$5(f,s) + {var l=caml_ml_bytes_length(s); + if(0 === l)return s; + var r=caml_create_bytes(l),_Bb_=l - 1 | 0,_Ba_=0; + if(! (_Bb_ < 0)) + {var i=_Ba_; + for(;;) + {caml_bytes_unsafe_set(r,i,caml_call1(f,caml_bytes_unsafe_get(s,i))); + var _Bc_=i + 1 | 0; + if(_Bb_ !== i){var i=_Bc_;continue} + break}} + return r} + function mapi$1(f,s) + {var l=caml_ml_bytes_length(s); + if(0 === l)return s; + var r=caml_create_bytes(l),_A__=l - 1 | 0,_A9_=0; + if(! (_A__ < 0)) + {var i=_A9_; + for(;;) + {caml_bytes_unsafe_set + (r,i,caml_call2(f,i,caml_bytes_unsafe_get(s,i))); + var _A$_=i + 1 | 0; + if(_A__ !== i){var i=_A$_;continue} + break}} + return r} + function fold_left$1(f,x,a) + {var r=[0,x],_A7_=caml_ml_bytes_length(a) - 1 | 0,_A6_=0; + if(! (_A7_ < 0)) + {var i=_A6_; + for(;;) + {r[1] = caml_call2(f,r[1],caml_bytes_unsafe_get(a,i)); + var _A8_=i + 1 | 0; + if(_A7_ !== i){var i=_A8_;continue} + break}} + return r[1]} + function fold_right$0(f,a,x) + {var r=[0,x],_A4_=caml_ml_bytes_length(a) - 1 | 0; + if(! (_A4_ < 0)) + {var i=_A4_; + for(;;) + {r[1] = caml_call2(f,caml_bytes_unsafe_get(a,i),r[1]); + var _A5_=i - 1 | 0; + if(0 !== i){var i=_A5_;continue} + break}} + return r[1]} + function exists$1(p,s) + {var n=caml_ml_bytes_length(s),i=0; + for(;;) + {if(i === n)return 0; + if(caml_call1(p,caml_bytes_unsafe_get(s,i)))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function for_all$1(p,s) + {var n=caml_ml_bytes_length(s),i=0; + for(;;) + {if(i === n)return 1; + if(caml_call1(p,caml_bytes_unsafe_get(s,i))) + {var i$0=i + 1 | 0,i=i$0;continue} + return 0}} + function uppercase_ascii$0(s){return map$5(uppercase_ascii,s)} + function lowercase_ascii$0(s){return map$5(lowercase_ascii,s)} + function apply1(f,s) + {if(0 === caml_ml_bytes_length(s))return s; + var r=copy(s); + caml_bytes_unsafe_set(r,0,caml_call1(f,caml_bytes_unsafe_get(s,0))); + return r} + function capitalize_ascii(s){return apply1(uppercase_ascii,s)} + function uncapitalize_ascii(s){return apply1(lowercase_ascii,s)} + function starts_with(prefix,s) + {var + len_s=caml_ml_bytes_length(s), + len_pre=caml_ml_bytes_length(prefix), + _A3_=len_pre <= len_s?1:0; + if(_A3_) + {var i=0; + for(;;) + {if(i === len_pre)return 1; + if(caml_bytes_unsafe_get(s,i) !== caml_bytes_unsafe_get(prefix,i)) + return 0; + var i$0=i + 1 | 0,i=i$0; + continue}} + return _A3_} + function ends_with(suffix,s) + {var + len_s=caml_ml_bytes_length(s), + len_suf=caml_ml_bytes_length(suffix), + diff=len_s - len_suf | 0, + _A2_=0 <= diff?1:0; + if(_A2_) + {var i=0; + for(;;) + {if(i === len_suf)return 1; + if + (caml_bytes_unsafe_get(s,diff + i | 0) + !== + caml_bytes_unsafe_get(suffix,i)) + return 0; + var i$0=i + 1 | 0,i=i$0; + continue}} + return _A2_} + function index_rec(s,lim,i,c) + {var i$0=i; + for(;;) + {if(lim <= i$0)throw Not_found; + if(caml_bytes_unsafe_get(s,i$0) === c)return i$0; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function index(s,c){return index_rec(s,caml_ml_bytes_length(s),0,c)} + function index_rec_opt(s,lim,i,c) + {var i$0=i; + for(;;) + {if(lim <= i$0)return 0; + if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0]; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function index_opt(s,c) + {return index_rec_opt(s,caml_ml_bytes_length(s),0,c)} + function index_from(s,i,c) + {var l=caml_ml_bytes_length(s); + if(0 <= i && ! (l < i))return index_rec(s,l,i,c); + return invalid_arg(cst_String_index_from_Bytes_in)} + function index_from_opt(s,i,c) + {var l=caml_ml_bytes_length(s); + if(0 <= i && ! (l < i))return index_rec_opt(s,l,i,c); + return invalid_arg(cst_String_index_from_opt_Byte)} + function rindex_rec(s,i,c) + {var i$0=i; + for(;;) + {if(0 <= i$0) + {if(caml_bytes_unsafe_get(s,i$0) === c)return i$0; + var i$1=i$0 - 1 | 0,i$0=i$1; + continue} + throw Not_found}} + function rindex(s,c) + {return rindex_rec(s,caml_ml_bytes_length(s) - 1 | 0,c)} + function rindex_from(s,i,c) + {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i))return rindex_rec(s,i,c); + return invalid_arg(cst_String_rindex_from_Bytes_r)} + function rindex_rec_opt(s,i,c) + {var i$0=i; + for(;;) + {if(0 <= i$0) + {if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0]; + var i$1=i$0 - 1 | 0,i$0=i$1; + continue} + return 0}} + function rindex_opt(s,c) + {return rindex_rec_opt(s,caml_ml_bytes_length(s) - 1 | 0,c)} + function rindex_from_opt(s,i,c) + {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i)) + return rindex_rec_opt(s,i,c); + return invalid_arg(cst_String_rindex_from_opt_Byt)} + function contains_from(s,i,c) + {var l=caml_ml_bytes_length(s); + if(0 <= i && ! (l < i)) + try + {index_rec(s,l,i,c);var _A0_=1;return _A0_} + catch(_A1_) + {_A1_ = caml_wrap_exception(_A1_); + if(_A1_ === Not_found)return 0; + throw _A1_} + return invalid_arg(cst_String_contains_from_Bytes)} + function contains(s,c){return contains_from(s,0,c)} + function rcontains_from(s,i,c) + {if(0 <= i && ! (caml_ml_bytes_length(s) <= i)) + try + {rindex_rec(s,i,c);var _AY_=1;return _AY_} + catch(_AZ_) + {_AZ_ = caml_wrap_exception(_AZ_); + if(_AZ_ === Not_found)return 0; + throw _AZ_} + return invalid_arg(cst_String_rcontains_from_Byte)} + function compare$8(x,y){return runtime.caml_bytes_compare(x,y)} + function split_on_char(sep,s) + {var + r=[0,0], + j=[0,caml_ml_bytes_length(s)], + _AU_=caml_ml_bytes_length(s) - 1 | 0; + if(! (_AU_ < 0)) + {var i=_AU_; + for(;;) + {if(caml_bytes_unsafe_get(s,i) === sep) + {var _AW_=r[1]; + r[1] = [0,sub(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_AW_]; + j[1] = i} + var _AX_=i - 1 | 0; + if(0 !== i){var i=_AX_;continue} + break}} + var _AV_=r[1]; + return [0,sub(s,0,j[1]),_AV_]} + function uppercase$0(s){return map$5(uppercase,s)} + function lowercase$0(s){return map$5(lowercase,s)} + function capitalize(s){return apply1(uppercase,s)} + function uncapitalize(s){return apply1(lowercase,s)} + function to_seq$2(s) + {function aux(i,param) + {if(i === caml_ml_bytes_length(s))return 0; + var x=caml_bytes_get(s,i),_AS_=i + 1 | 0; + return [0,x,function(_AT_){return aux(_AS_,_AT_)}]} + var _AQ_=0; + return function(_AR_){return aux(_AQ_,_AR_)}} + function to_seqi(s) + {function aux(i,param) + {if(i === caml_ml_bytes_length(s))return 0; + var x=caml_bytes_get(s,i),_AO_=i + 1 | 0; + return [0,[0,i,x],function(_AP_){return aux(_AO_,_AP_)}]} + var _AM_=0; + return function(_AN_){return aux(_AM_,_AN_)}} + function of_seq$0(i) + {var n=[0,0],buf=[0,make$0(256,0)]; + iter + (function(c) + {if(n[1] === caml_ml_bytes_length(buf[1])) + {var + new_len= + min$1(2 * caml_ml_bytes_length(buf[1]) | 0,max_string_length); + if(caml_ml_bytes_length(buf[1]) === new_len) + failwith(cst_Bytes_of_seq_cannot_grow_b); + var new_buf=make$0(new_len,0); + blit(buf[1],0,new_buf,0,n[1]); + buf[1] = new_buf} + caml_bytes_set(buf[1],n[1],c); + n[1]++; + return 0}, + i); + return sub(buf[1],0,n[1])} + function get$1(b,i){return caml_bswap16(caml_bytes_get16(b,i))} + function get_int8(b,i){return caml_bytes_get(b,i) << 24 >> 24} + function get_uint16_le(b,i){return caml_bytes_get16(b,i)} + function get_uint16_be(b,i){return caml_bswap16(caml_bytes_get16(b,i))} + function get_int16_ne(b,i){return caml_bytes_get16(b,i) << 16 >> 16} + function get_int16_le(b,i){return caml_bytes_get16(b,i) << 16 >> 16} + function get_int16_be(b,i){return get_uint16_be(b,i) << 16 >> 16} + function get_int32_le(b,i){return caml_bytes_get32(b,i)} + function get_int32_be(b,i){return caml_int32_bswap(caml_bytes_get32(b,i))} + function get_int64_le(b,i){return caml_bytes_get64(b,i)} + function get_int64_be(b,i){return caml_int64_bswap(caml_bytes_get64(b,i))} + function set$0(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))} + function set_int16_le(b,i,x){return caml_bytes_set16(b,i,x)} + function set_int16_be(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))} + function set_int32_le(b,i,x){return caml_bytes_set32(b,i,x)} + function set_int32_be(b,i,x) + {return caml_bytes_set32(b,i,caml_int32_bswap(x))} + function set_int64_le(b,i,x){return caml_bytes_set64(b,i,x)} + function set_int64_be(b,i,x) + {return caml_bytes_set64(b,i,caml_int64_bswap(x))} + var set_uint8=caml_bytes_set,set_uint16_ne=caml_bytes_set16; + function dec_ret(n,u){return utf_decode(n,u)} + function not_in_x80_to_xBF(b){return 2 !== (b >>> 6 | 0)?1:0} + function not_in_xA0_to_xBF(b){return 5 !== (b >>> 5 | 0)?1:0} + function not_in_x80_to_x9F(b){return 4 !== (b >>> 5 | 0)?1:0} + function not_in_x90_to_xBF(b) + {var _AK_=b < 144?1:0,_AL_=_AK_ || (191 < b?1:0);return _AL_} + function not_in_x80_to_x8F(b){return 8 !== (b >>> 4 | 0)?1:0} + function utf_8_uchar_3(b0,b1,b2) + {return (b0 & 15) << 12 | (b1 & 63) << 6 | b2 & 63} + function utf_8_uchar_4(b0,b1,b2,b3) + {return (b0 & 7) << 18 | (b1 & 63) << 12 | (b2 & 63) << 6 | b3 & 63} + function get_utf_8_uchar(b,i) + {var b0=caml_bytes_get(b,i),max=caml_ml_bytes_length(b) - 1 | 0; + if(224 <= b0) + {var switch$0=0; + if(237 <= b0) + {if(! (245 <= b0)) + switch(b0 - 237 | 0) + {case 0: + var i$0=i + 1 | 0; + if(max < i$0)return dec_invalid(1); + var b1=caml_bytes_unsafe_get(b,i$0); + if(not_in_x80_to_x9F(b1))return dec_invalid(1); + var i$1=i$0 + 1 | 0; + if(max < i$1)return dec_invalid(2); + var b2=caml_bytes_unsafe_get(b,i$1); + return not_in_x80_to_xBF(b2) + ?dec_invalid(2) + :dec_ret(3,utf_8_uchar_3(b0,b1,b2)); + case 3: + var i$4=i + 1 | 0; + if(max < i$4)return dec_invalid(1); + var b1$1=caml_bytes_unsafe_get(b,i$4); + if(not_in_x90_to_xBF(b1$1))return dec_invalid(1); + var i$5=i$4 + 1 | 0; + if(max < i$5)return dec_invalid(2); + var b2$1=caml_bytes_unsafe_get(b,i$5); + if(not_in_x80_to_xBF(b2$1))return dec_invalid(2); + var i$6=i$5 + 1 | 0; + if(max < i$6)return dec_invalid(3); + var b3=caml_bytes_unsafe_get(b,i$6); + return not_in_x80_to_xBF(b3) + ?dec_invalid(3) + :dec_ret(4,utf_8_uchar_4(b0,b1$1,b2$1,b3)); + case 7: + var i$10=i + 1 | 0; + if(max < i$10)return dec_invalid(1); + var b1$3=caml_bytes_unsafe_get(b,i$10); + if(not_in_x80_to_x8F(b1$3))return dec_invalid(1); + var i$11=i$10 + 1 | 0; + if(max < i$11)return dec_invalid(2); + var b2$3=caml_bytes_unsafe_get(b,i$11); + if(not_in_x80_to_xBF(b2$3))return dec_invalid(2); + var i$12=i$11 + 1 | 0; + if(max < i$12)return dec_invalid(3); + var b3$1=caml_bytes_unsafe_get(b,i$12); + return not_in_x80_to_xBF(b3$1) + ?dec_invalid(3) + :dec_ret(4,utf_8_uchar_4(b0,b1$3,b2$3,b3$1)); + case 1: + case 2:switch$0 = 1;break; + default: + var i$7=i + 1 | 0; + if(max < i$7)return dec_invalid(1); + var b1$2=caml_bytes_unsafe_get(b,i$7); + if(not_in_x80_to_xBF(b1$2))return dec_invalid(1); + var i$8=i$7 + 1 | 0; + if(max < i$8)return dec_invalid(2); + var b2$2=caml_bytes_unsafe_get(b,i$8); + if(not_in_x80_to_xBF(b2$2))return dec_invalid(2); + var i$9=i$8 + 1 | 0; + if(max < i$9)return dec_invalid(3); + var b3$0=caml_bytes_unsafe_get(b,i$9); + return not_in_x80_to_xBF(b3$0) + ?dec_invalid(3) + :dec_ret(4,utf_8_uchar_4(b0,b1$2,b2$2,b3$0))}} + else + {if(! (225 <= b0)) + {var i$13=i + 1 | 0; + if(max < i$13)return dec_invalid(1); + var b1$4=caml_bytes_unsafe_get(b,i$13); + if(not_in_xA0_to_xBF(b1$4))return dec_invalid(1); + var i$14=i$13 + 1 | 0; + if(max < i$14)return dec_invalid(2); + var b2$4=caml_bytes_unsafe_get(b,i$14); + return not_in_x80_to_xBF(b2$4) + ?dec_invalid(2) + :dec_ret(3,utf_8_uchar_3(b0,b1$4,b2$4))} + switch$0 = 1} + if(switch$0) + {var i$2=i + 1 | 0; + if(max < i$2)return dec_invalid(1); + var b1$0=caml_bytes_unsafe_get(b,i$2); + if(not_in_x80_to_xBF(b1$0))return dec_invalid(1); + var i$3=i$2 + 1 | 0; + if(max < i$3)return dec_invalid(2); + var b2$0=caml_bytes_unsafe_get(b,i$3); + return not_in_x80_to_xBF(b2$0) + ?dec_invalid(2) + :dec_ret(3,utf_8_uchar_3(b0,b1$0,b2$0))}} + else + {if(! (128 <= b0))return dec_ret(1,b0); + if(194 <= b0) + {var i$15=i + 1 | 0; + if(max < i$15)return dec_invalid(1); + var b1$5=caml_bytes_unsafe_get(b,i$15); + return not_in_x80_to_xBF(b1$5) + ?dec_invalid(1) + :dec_ret(2,(b0 & 31) << 6 | b1$5 & 63)}} + return dec_invalid(1)} + function set_utf_8_uchar(b,i,u) + {function set(_AJ_,_AI_,_AH_) + {caml_bytes_unsafe_set(_AJ_,_AI_,_AH_);return 0} + var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= u) + {if(127 < u) + {if(2047 < u) + {if(65535 < u) + {if(1114111 < u)throw [0,Assert_failure,_B_]; + var last=i + 3 | 0; + return max < last + ?0 + :(caml_bytes_set(b,i,240 | u >>> 18 | 0), + set(b,i + 1 | 0,128 | (u >>> 12 | 0) & 63), + set(b,i + 2 | 0,128 | (u >>> 6 | 0) & 63), + set(b,last,128 | u & 63), + 4)} + var last$0=i + 2 | 0; + return max < last$0 + ?0 + :(caml_bytes_set(b,i,224 | u >>> 12 | 0), + set(b,i + 1 | 0,128 | (u >>> 6 | 0) & 63), + set(b,last$0,128 | u & 63), + 3)} + var last$1=i + 1 | 0; + return max < last$1 + ?0 + :(caml_bytes_set(b,i,192 | u >>> 6 | 0), + set(b,last$1,128 | u & 63), + 2)} + caml_bytes_set(b,i,u); + return 1} + throw [0,Assert_failure,_C_]} + function is_valid_utf_8(b) + {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; + for(;;) + {if(max < i)return 1; + var match=caml_bytes_unsafe_get(b,i); + if(224 <= match) + {var switch$0=0; + if(237 <= match) + {if(! (245 <= match)) + switch(match - 237 | 0) + {case 0: + var last=i + 2 | 0; + if + (! + (max < last) + && + ! + not_in_x80_to_x9F(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last))) + {var i$0=last + 1 | 0,i=i$0;continue} + return 0; + case 3: + var last$1=i + 3 | 0; + if + (! + (max < last$1) + && + ! + not_in_x90_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$1))) + {var i$2=last$1 + 1 | 0,i=i$2;continue} + return 0; + case 7: + var last$3=i + 3 | 0; + if + (! + (max < last$3) + && + ! + not_in_x80_to_x8F(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$3))) + {var i$4=last$3 + 1 | 0,i=i$4;continue} + return 0; + case 1: + case 2:switch$0 = 1;break; + default: + var last$2=i + 3 | 0; + if + (! + (max < last$2) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 2 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$2))) + {var i$3=last$2 + 1 | 0,i=i$3;continue} + return 0}} + else + {if(! (225 <= match)) + {var last$4=i + 2 | 0; + if + (! + (max < last$4) + && + ! + not_in_xA0_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$4))) + {var i$5=last$4 + 1 | 0,i=i$5;continue} + return 0} + switch$0 = 1} + if(switch$0) + {var last$0=i + 2 | 0; + if + (! + (max < last$0) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,i + 1 | 0)) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$0))) + {var i$1=last$0 + 1 | 0,i=i$1;continue} + return 0}} + else + {if(! (128 <= match)){var i$7=i + 1 | 0,i=i$7;continue} + if(194 <= match) + {var last$5=i + 1 | 0; + if + (! + (max < last$5) + && + ! + not_in_x80_to_xBF(caml_bytes_unsafe_get(b,last$5))) + {var i$6=last$5 + 1 | 0,i=i$6;continue} + return 0}} + return 0}} + function get_utf_16be_uchar(b,i) + {var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= i && ! (max < i)) + {if(i === max)return dec_invalid(1); + var hi=get$1(b,i); + if(55296 <= hi && ! (57343 < hi)) + {if(56319 < hi)return dec_invalid(2); + var last=i + 3 | 0; + if(max < last)return dec_invalid((max - i | 0) + 1 | 0); + var u=get$1(b,i + 2 | 0); + if(56320 <= u && ! (57343 < u)) + {var u$0=((hi & 1023) << 10 | u & 1023) + 65536 | 0; + return dec_ret(4,u$0)} + return dec_invalid(2)} + return dec_ret(2,hi)} + return invalid_arg(cst_index_out_of_bounds)} + function set_utf_16be_uchar(b,i,u) + {var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= i && ! (max < i)) + {if(0 <= u) + {if(65535 < u) + {if(1114111 < u)throw [0,Assert_failure,_D_]; + var last=i + 3 | 0; + if(max < last)return 0; + var + u$0=u - 65536 | 0, + hi=55296 | u$0 >>> 10 | 0, + lo=56320 | u$0 & 1023; + set$0(b,i,hi); + set$0(b,i + 2 | 0,lo); + return 4} + var last$0=i + 1 | 0; + return max < last$0?0:(set$0(b,i,u),2)} + throw [0,Assert_failure,_E_]} + return invalid_arg(cst_index_out_of_bounds$0)} + function is_valid_utf_16be(b) + {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; + for(;;) + {if(max < i)return 1; + if(i === max)return 0; + var u=get$1(b,i); + if(55296 <= u && ! (57343 < u)) + {if(56319 < u)return 0; + var last=i + 3 | 0; + if(max < last)return 0; + var u$0=get$1(b,i + 2 | 0); + if(56320 <= u$0 && ! (57343 < u$0)) + {var i$1=i + 4 | 0,i=i$1;continue} + return 0} + var i$0=i + 2 | 0,i=i$0; + continue}} + function get_utf_16le_uchar(b,i) + {var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= i && ! (max < i)) + {if(i === max)return dec_invalid(1); + var hi=caml_bytes_get16(b,i); + if(55296 <= hi && ! (57343 < hi)) + {if(56319 < hi)return dec_invalid(2); + var last=i + 3 | 0; + if(max < last)return dec_invalid((max - i | 0) + 1 | 0); + var u=caml_bytes_get16(b,i + 2 | 0); + if(56320 <= u && ! (57343 < u)) + {var u$0=((hi & 1023) << 10 | u & 1023) + 65536 | 0; + return dec_ret(4,u$0)} + return dec_invalid(2)} + return dec_ret(2,hi)} + return invalid_arg(cst_index_out_of_bounds$1)} + function set_utf_16le_uchar(b,i,u) + {var max=caml_ml_bytes_length(b) - 1 | 0; + if(0 <= i && ! (max < i)) + {if(0 <= u) + {if(65535 < u) + {if(1114111 < u)throw [0,Assert_failure,_F_]; + var last=i + 3 | 0; + if(max < last)return 0; + var + u$0=u - 65536 | 0, + hi=55296 | u$0 >>> 10 | 0, + lo=56320 | u$0 & 1023; + caml_bytes_set16(b,i,hi); + caml_bytes_set16(b,i + 2 | 0,lo); + return 4} + var last$0=i + 1 | 0; + return max < last$0?0:(caml_bytes_set16(b,i,u),2)} + throw [0,Assert_failure,_G_]} + return invalid_arg(cst_index_out_of_bounds$2)} + function is_valid_utf_16le(b) + {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; + for(;;) + {if(max < i)return 1; + if(i === max)return 0; + var u=caml_bytes_get16(b,i); + if(55296 <= u && ! (57343 < u)) + {if(56319 < u)return 0; + var last=i + 3 | 0; + if(max < last)return 0; + var u$0=caml_bytes_get16(b,i + 2 | 0); + if(56320 <= u$0 && ! (57343 < u$0)) + {var i$1=i + 4 | 0,i=i$1;continue} + return 0} + var i$0=i + 2 | 0,i=i$0; + continue}} + var + set_int64_ne=caml_bytes_set64, + set_int32_ne=caml_bytes_set32, + set_int16_ne=caml_bytes_set16, + set_int8=caml_bytes_set, + get_int64_ne=caml_bytes_get64, + get_int32_ne=caml_bytes_get32, + get_uint16_ne=caml_bytes_get16, + get_uint8=caml_bytes_get, + unsafe_of_string=caml_bytes_of_string, + unsafe_to_string=caml_string_of_bytes, + equal$8=runtime.caml_bytes_equal, + include$1= + [0, + make$0, + init$1, + empty$0, + copy, + to_bytes, + of_bytes, + sub, + sub_string, + extend, + fill, + blit, + blit$0, + concat$0, + cat$0, + iter$3, + iteri$1, + map$5, + mapi$1, + fold_left$1, + fold_right$0, + for_all$1, + exists$1, + trim, + escaped$0, + index, + index_opt, + rindex, + rindex_opt, + index_from, + index_from_opt, + rindex_from, + rindex_from_opt, + contains, + contains_from, + rcontains_from, + uppercase$0, + lowercase$0, + capitalize, + uncapitalize, + uppercase_ascii$0, + lowercase_ascii$0, + capitalize_ascii, + uncapitalize_ascii, + compare$8, + equal$8, + starts_with, + ends_with, + unsafe_to_string, + unsafe_of_string, + split_on_char, + to_seq$2, + to_seqi, + of_seq$0, + get_utf_8_uchar, + set_utf_8_uchar, + is_valid_utf_8, + get_utf_16be_uchar, + set_utf_16be_uchar, + is_valid_utf_16be, + get_utf_16le_uchar, + set_utf_16le_uchar, + is_valid_utf_16le, + get_uint8, + get_int8, + get_uint16_ne, + get_uint16_be, + get_uint16_le, + get_int16_ne, + get_int16_be, + get_int16_le, + get_int32_ne, + get_int32_be, + get_int32_le, + get_int64_ne, + get_int64_be, + get_int64_le, + set_uint8, + set_int8, + set_uint16_ne, + set_int16_be, + set_int16_le, + set_int16_ne, + set_int16_be, + set_int16_le, + set_int32_ne, + set_int32_be, + set_int32_le, + set_int64_ne, + set_int64_be, + set_int64_le]; + caml_register_global(790,include$1,"Stdlib__Bytes"); + function make$1(n,c){return caml_string_of_bytes(make$0(n,c))} + function init$2(n,f){return caml_string_of_bytes(init$1(n,f))} + function copy$0(s) + {return caml_string_of_bytes(copy(caml_bytes_of_string(s)))} + function sub$0(s,ofs,len) + {return caml_string_of_bytes(sub(caml_bytes_of_string(s),ofs,len))} + function concat$1(sep,l) + {if(l) + {var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0; + for(;;) + {if(param) + {var _AE_=param[1]; + if(param[2]) + {var + tl=param[2], + x=(caml_ml_string_length(_AE_) + seplen | 0) + acc | 0, + acc$0=acc <= x?x:invalid_arg(cst_String_concat), + acc=acc$0, + param=tl; + continue} + var _AG_=caml_ml_string_length(_AE_) + acc | 0} + else + var _AG_=acc; + var dst=caml_create_bytes(_AG_),pos=pos$1,param$0=l; + for(;;) + {if(param$0) + {var _AF_=param$0[1]; + if(param$0[2]) + {var tl$0=param$0[2]; + caml_blit_string(_AF_,0,dst,pos,caml_ml_string_length(_AF_)); + caml_blit_string + (sep,0,dst,pos + caml_ml_string_length(_AF_) | 0,seplen); + var + pos$0=(pos + caml_ml_string_length(_AF_) | 0) + seplen | 0, + pos=pos$0, + param$0=tl$0; + continue} + caml_blit_string(_AF_,0,dst,pos,caml_ml_string_length(_AF_))} + return caml_string_of_bytes(dst)}}} + return cst$3} + function iter$4(f,s) + {var _AC_=caml_ml_string_length(s) - 1 | 0,_AB_=0; + if(! (_AC_ < 0)) + {var i=_AB_; + for(;;) + {caml_call1(f,caml_string_unsafe_get(s,i)); + var _AD_=i + 1 | 0; + if(_AC_ !== i){var i=_AD_;continue} + break}} + return 0} + function iteri$2(f,s) + {var _Az_=caml_ml_string_length(s) - 1 | 0,_Ay_=0; + if(! (_Az_ < 0)) + {var i=_Ay_; + for(;;) + {caml_call2(f,i,caml_string_unsafe_get(s,i)); + var _AA_=i + 1 | 0; + if(_Az_ !== i){var i=_AA_;continue} + break}} + return 0} + function map$6(f,s) + {return caml_string_of_bytes(map$5(f,caml_bytes_of_string(s)))} + function mapi$2(f,s) + {return caml_string_of_bytes(mapi$1(f,caml_bytes_of_string(s)))} + function fold_right$1(f,x,a) + {return fold_right$0(f,caml_bytes_of_string(x),a)} + function fold_left$2(f,a,x) + {return fold_left$1(f,a,caml_bytes_of_string(x))} + function exists$2(f,s){return exists$1(f,caml_bytes_of_string(s))} + function for_all$2(f,s){return for_all$1(f,caml_bytes_of_string(s))} + function is_space$0(param) + {var _Ax_=param - 9 | 0,switch$0=0; + if(4 < _Ax_ >>> 0) + {if(23 === _Ax_)switch$0 = 1} + else + if(2 !== _Ax_)switch$0 = 1; + return switch$0?1:0} + function trim$0(s) + {if(caml_string_equal(s,cst$4))return s; + if + (! + is_space$0(caml_string_unsafe_get(s,0)) + && + ! + is_space$0(caml_string_unsafe_get(s,caml_ml_string_length(s) - 1 | 0))) + return s; + return caml_string_of_bytes(trim(caml_bytes_of_string(s)))} + function escaped$1(s) + {var n=caml_ml_string_length(s),i=0; + for(;;) + {if(n <= i)return s; + var match=caml_string_unsafe_get(s,i),_Aw_=match - 32 | 0,switch$0=0; + if(59 < _Aw_ >>> 0) + {if(33 < _Aw_ - 61 >>> 0)switch$0 = 1} + else + if(2 === _Aw_)switch$0 = 1; + if(switch$0) + return caml_string_of_bytes(escaped$0(caml_bytes_of_string(s))); + var i$0=i + 1 | 0,i=i$0; + continue}} + function index_rec$0(s,lim,i,c) + {var i$0=i; + for(;;) + {if(lim <= i$0)throw Not_found; + if(caml_string_unsafe_get(s,i$0) === c)return i$0; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function index$0(s,c){return index_rec$0(s,caml_ml_string_length(s),0,c)} + function index_rec_opt$0(s,lim,i,c) + {var i$0=i; + for(;;) + {if(lim <= i$0)return 0; + if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0]; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function index_opt$0(s,c) + {return index_rec_opt$0(s,caml_ml_string_length(s),0,c)} + function index_from$0(s,i,c) + {var l=caml_ml_string_length(s); + if(0 <= i && ! (l < i))return index_rec$0(s,l,i,c); + return invalid_arg(cst_String_index_from_Bytes_in$0)} + function index_from_opt$0(s,i,c) + {var l=caml_ml_string_length(s); + if(0 <= i && ! (l < i))return index_rec_opt$0(s,l,i,c); + return invalid_arg(cst_String_index_from_opt_Byte$0)} + function rindex_rec$0(s,i,c) + {var i$0=i; + for(;;) + {if(0 <= i$0) + {if(caml_string_unsafe_get(s,i$0) === c)return i$0; + var i$1=i$0 - 1 | 0,i$0=i$1; + continue} + throw Not_found}} + function rindex$0(s,c) + {return rindex_rec$0(s,caml_ml_string_length(s) - 1 | 0,c)} + function rindex_from$0(s,i,c) + {if(-1 <= i && ! (caml_ml_string_length(s) <= i)) + return rindex_rec$0(s,i,c); + return invalid_arg(cst_String_rindex_from_Bytes_r$0)} + function rindex_rec_opt$0(s,i,c) + {var i$0=i; + for(;;) + {if(0 <= i$0) + {if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0]; + var i$1=i$0 - 1 | 0,i$0=i$1; + continue} + return 0}} + function rindex_opt$0(s,c) + {return rindex_rec_opt$0(s,caml_ml_string_length(s) - 1 | 0,c)} + function rindex_from_opt$0(s,i,c) + {if(-1 <= i && ! (caml_ml_string_length(s) <= i)) + return rindex_rec_opt$0(s,i,c); + return invalid_arg(cst_String_rindex_from_opt_Byt$0)} + function contains_from$0(s,i,c) + {var l=caml_ml_string_length(s); + if(0 <= i && ! (l < i)) + try + {index_rec$0(s,l,i,c);var _Au_=1;return _Au_} + catch(_Av_) + {_Av_ = caml_wrap_exception(_Av_); + if(_Av_ === Not_found)return 0; + throw _Av_} + return invalid_arg(cst_String_contains_from_Bytes$0)} + function contains$0(s,c){return contains_from$0(s,0,c)} + function rcontains_from$0(s,i,c) + {if(0 <= i && ! (caml_ml_string_length(s) <= i)) + try + {rindex_rec$0(s,i,c);var _As_=1;return _As_} + catch(_At_) + {_At_ = caml_wrap_exception(_At_); + if(_At_ === Not_found)return 0; + throw _At_} + return invalid_arg(cst_String_rcontains_from_Byte$0)} + function uppercase_ascii$1(s) + {return caml_string_of_bytes(uppercase_ascii$0(caml_bytes_of_string(s)))} + function lowercase_ascii$1(s) + {return caml_string_of_bytes(lowercase_ascii$0(caml_bytes_of_string(s)))} + function capitalize_ascii$0(s) + {return caml_string_of_bytes(capitalize_ascii(caml_bytes_of_string(s)))} + function uncapitalize_ascii$0(s) + {return caml_string_of_bytes(uncapitalize_ascii(caml_bytes_of_string(s)))} + function starts_with$0(prefix,s) + {var + len_s=caml_ml_string_length(s), + len_pre=caml_ml_string_length(prefix), + _Ar_=len_pre <= len_s?1:0; + if(_Ar_) + {var i=0; + for(;;) + {if(i === len_pre)return 1; + if(caml_string_unsafe_get(s,i) !== caml_string_unsafe_get(prefix,i)) + return 0; + var i$0=i + 1 | 0,i=i$0; + continue}} + return _Ar_} + function ends_with$0(suffix,s) + {var + len_s=caml_ml_string_length(s), + len_suf=caml_ml_string_length(suffix), + diff=len_s - len_suf | 0, + _Aq_=0 <= diff?1:0; + if(_Aq_) + {var i=0; + for(;;) + {if(i === len_suf)return 1; + if + (caml_string_unsafe_get(s,diff + i | 0) + !== + caml_string_unsafe_get(suffix,i)) + return 0; + var i$0=i + 1 | 0,i=i$0; + continue}} + return _Aq_} + function split_on_char$0(sep,s) + {var + r=[0,0], + j=[0,caml_ml_string_length(s)], + _Am_=caml_ml_string_length(s) - 1 | 0; + if(! (_Am_ < 0)) + {var i=_Am_; + for(;;) + {if(caml_string_unsafe_get(s,i) === sep) + {var _Ao_=r[1]; + r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_Ao_]; + j[1] = i} + var _Ap_=i - 1 | 0; + if(0 !== i){var i=_Ap_;continue} + break}} + var _An_=r[1]; + return [0,sub$0(s,0,j[1]),_An_]} + function uppercase$1(s) + {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))} + function lowercase$1(s) + {return caml_string_of_bytes(lowercase$0(caml_bytes_of_string(s)))} + function capitalize$0(s) + {return caml_string_of_bytes(capitalize(caml_bytes_of_string(s)))} + function uncapitalize$0(s) + {return caml_string_of_bytes(uncapitalize(caml_bytes_of_string(s)))} + function compare$9(x,y){return caml_string_compare(x,y)} + function to_seq$3(s){return to_seq$2(caml_bytes_of_string(s))} + function to_seqi$0(s){return to_seqi(caml_bytes_of_string(s))} + function of_seq$1(g){return caml_string_of_bytes(of_seq$0(g))} + function get_utf_8_uchar$0(s,i) + {return get_utf_8_uchar(caml_bytes_of_string(s),i)} + function is_valid_utf_8$0(s) + {return is_valid_utf_8(caml_bytes_of_string(s))} + function get_utf_16be_uchar$0(s,i) + {return get_utf_16be_uchar(caml_bytes_of_string(s),i)} + function is_valid_utf_16be$0(s) + {return is_valid_utf_16be(caml_bytes_of_string(s))} + function get_utf_16le_uchar$0(s,i) + {return get_utf_16le_uchar(caml_bytes_of_string(s),i)} + function is_valid_utf_16le$0(s) + {return is_valid_utf_16le(caml_bytes_of_string(s))} + function get_int8$0(s,i){return get_int8(caml_bytes_of_string(s),i)} + function get_uint16_le$0(s,i) + {return caml_bytes_get16(caml_bytes_of_string(s),i)} + function get_uint16_be$0(s,i) + {return get_uint16_be(caml_bytes_of_string(s),i)} + function get_int16_ne$0(s,i) + {return get_int16_ne(caml_bytes_of_string(s),i)} + function get_int16_le$0(s,i) + {return get_int16_le(caml_bytes_of_string(s),i)} + function get_int16_be$0(s,i) + {return get_int16_be(caml_bytes_of_string(s),i)} + function get_int32_le$0(s,i) + {return caml_bytes_get32(caml_bytes_of_string(s),i)} + function get_int32_be$0(s,i) + {return get_int32_be(caml_bytes_of_string(s),i)} + function get_int64_le$0(s,i) + {return caml_bytes_get64(caml_bytes_of_string(s),i)} + function get_int64_be$0(s,i) + {return get_int64_be(caml_bytes_of_string(s),i)} + var + get_int64_ne$0=runtime.caml_string_get64, + get_int32_ne$0=runtime.caml_string_get32, + get_uint16_ne$0=runtime.caml_string_get16, + get_uint8$0=caml_string_get, + equal$9=caml_string_equal, + include$2= + [0, + make$1, + init$2, + empty$1, + of_bytes, + to_bytes, + concat$1, + cat, + equal$9, + compare$9, + starts_with$0, + ends_with$0, + contains_from$0, + rcontains_from$0, + contains$0, + sub$0, + split_on_char$0, + map$6, + mapi$2, + fold_left$2, + fold_right$1, + for_all$2, + exists$2, + trim$0, + escaped$1, + uppercase_ascii$1, + lowercase_ascii$1, + capitalize_ascii$0, + uncapitalize_ascii$0, + iter$4, + iteri$2, + index_from$0, + index_from_opt$0, + rindex_from$0, + rindex_from_opt$0, + index$0, + index_opt$0, + rindex$0, + rindex_opt$0, + to_seq$3, + to_seqi$0, + of_seq$1, + get_utf_8_uchar$0, + is_valid_utf_8$0, + get_utf_16be_uchar$0, + is_valid_utf_16be$0, + get_utf_16le_uchar$0, + is_valid_utf_16le$0, + blit$0, + copy$0, + fill, + uppercase$1, + lowercase$1, + capitalize$0, + uncapitalize$0, + get_uint8$0, + get_int8$0, + get_uint16_ne$0, + get_uint16_be$0, + get_uint16_le$0, + get_int16_ne$0, + get_int16_be$0, + get_int16_le$0, + get_int32_ne$0, + get_int32_be$0, + get_int32_le$0, + get_int64_ne$0, + get_int64_be$0, + get_int64_le$0]; + caml_register_global(791,include$2,"Stdlib__String"); + function equal$10(param,_Al_){return 1} + function compare$10(param,_Ak_){return 0} + function to_string$2(param){return cst$5} + var Stdlib_Unit=[0,equal$10,compare$10,to_string$2]; + caml_register_global(792,Stdlib_Unit,"Stdlib__Unit"); + function to_buffer(buff,ofs,len,v,flags) + {if + (0 + <= + ofs + && + 0 + <= + len + && + ! + ((caml_ml_bytes_length(buff) - len | 0) < ofs)) + return runtime.caml_output_value_to_buffer(buff,ofs,len,v,flags); + return invalid_arg(cst_Marshal_to_buffer_substrin)} + var header_size=20; + function data_size(buff,ofs) + {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs)) + return caml_marshal_data_size(buff,ofs); + return invalid_arg(cst_Marshal_data_size)} + function total_size(buff,ofs){return 20 + data_size(buff,ofs) | 0} + function from_bytes(buff,ofs) + {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs)) + {var len=caml_marshal_data_size(buff,ofs); + return (caml_ml_bytes_length(buff) - (20 + len | 0) | 0) < ofs + ?invalid_arg(cst_Marshal_from_bytes$0) + :runtime.caml_input_value_from_bytes(buff,ofs)} + return invalid_arg(cst_Marshal_from_bytes)} + function from_string(buff,ofs) + {return from_bytes(caml_bytes_of_string(buff),ofs)} + var + Stdlib_Marshal= + [0, + caml_output_value, + to_buffer, + caml_input_value, + from_bytes, + from_string, + header_size, + data_size, + total_size]; + caml_register_global(793,Stdlib_Marshal,"Stdlib__Marshal"); + var make_float=runtime.caml_make_float_vect,Floatarray=[0]; + function init$3(l,f) + {if(0 === l)return [0]; + if(0 <= l) + {var res=caml_make_vect(l,caml_call1(f,0)),_Ai_=l - 1 | 0,_Ah_=1; + if(! (_Ai_ < 1)) + {var i=_Ah_; + for(;;) + {res[1 + i] = caml_call1(f,i); + var _Aj_=i + 1 | 0; + if(_Ai_ !== i){var i=_Aj_;continue} + break}} + return res} + return invalid_arg(cst_Array_init)} + function create_matrix(sx,sy,init) + {var res=caml_make_vect(sx,[0]),_Af_=sx - 1 | 0,_Ae_=0; + if(! (_Af_ < 0)) + {var x=_Ae_; + for(;;) + {res[1 + x] = caml_make_vect(sy,init); + var _Ag_=x + 1 | 0; + if(_Af_ !== x){var x=_Ag_;continue} + break}} + return res} + function copy$1(a) + {var l=a.length - 1;return 0 === l?[0]:caml_array_sub(a,0,l)} + function append$1(a1,a2) + {var l1=a1.length - 1; + return 0 === l1 + ?copy$1(a2) + :0 === a2.length - 1 + ?caml_array_sub(a1,0,l1) + :runtime.caml_array_append(a1,a2)} + function sub$1(a,ofs,len) + {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs)) + return caml_array_sub(a,ofs,len); + return invalid_arg(cst_Array_sub)} + function fill$0(a,ofs,len,v) + {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs)) + return runtime.caml_array_fill(a,ofs,len,v); + return invalid_arg(cst_Array_fill)} + function blit$1(a1,ofs1,a2,ofs2,len) + {if + (0 + <= + len + && + 0 + <= + ofs1 + && + ! + ((a1.length - 1 - len | 0) < ofs1) + && + 0 + <= + ofs2 + && + ! + ((a2.length - 1 - len | 0) < ofs2)) + return runtime.caml_array_blit(a1,ofs1,a2,ofs2,len); + return invalid_arg(cst_Array_blit)} + function iter$5(f,a) + {var _Ac_=a.length - 1 - 1 | 0,_Ab_=0; + if(! (_Ac_ < 0)) + {var i=_Ab_; + for(;;) + {caml_call1(f,a[1 + i]); + var _Ad_=i + 1 | 0; + if(_Ac_ !== i){var i=_Ad_;continue} + break}} + return 0} + function iter2$1(f,a,b) + {if(a.length - 1 !== b.length - 1) + return invalid_arg(cst_Array_iter2_arrays_must_ha); + var _z$_=a.length - 1 - 1 | 0,_z__=0; + if(! (_z$_ < 0)) + {var i=_z__; + for(;;) + {caml_call2(f,a[1 + i],b[1 + i]); + var _Aa_=i + 1 | 0; + if(_z$_ !== i){var i=_Aa_;continue} + break}} + return 0} + function map$7(f,a) + {var l=a.length - 1; + if(0 === l)return [0]; + var r=caml_make_vect(l,caml_call1(f,a[1])),_z8_=l - 1 | 0,_z7_=1; + if(! (_z8_ < 1)) + {var i=_z7_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _z9_=i + 1 | 0; + if(_z8_ !== i){var i=_z9_;continue} + break}} + return r} + function map2$1(f,a,b) + {var la=a.length - 1,lb=b.length - 1; + if(la !== lb)return invalid_arg(cst_Array_map2_arrays_must_hav); + if(0 === la)return [0]; + var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_z5_=la - 1 | 0,_z4_=1; + if(! (_z5_ < 1)) + {var i=_z4_; + for(;;) + {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]); + var _z6_=i + 1 | 0; + if(_z5_ !== i){var i=_z6_;continue} + break}} + return r} + function iteri$3(f,a) + {var _z2_=a.length - 1 - 1 | 0,_z1_=0; + if(! (_z2_ < 0)) + {var i=_z1_; + for(;;) + {caml_call2(f,i,a[1 + i]); + var _z3_=i + 1 | 0; + if(_z2_ !== i){var i=_z3_;continue} + break}} + return 0} + function mapi$3(f,a) + {var l=a.length - 1; + if(0 === l)return [0]; + var r=caml_make_vect(l,caml_call2(f,0,a[1])),_zZ_=l - 1 | 0,_zY_=1; + if(! (_zZ_ < 1)) + {var i=_zY_; + for(;;) + {r[1 + i] = caml_call2(f,i,a[1 + i]); + var _z0_=i + 1 | 0; + if(_zZ_ !== i){var i=_z0_;continue} + break}} + return r} + function to_list$1(a) + {var i$1=a.length - 1 - 1 | 0,i=i$1,res=0; + for(;;) + {if(0 <= i) + {var res$0=[0,a[1 + i],res],i$0=i - 1 | 0,i=i$0,res=res$0;continue} + return res}} + function list_length(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + param$1=param$0[2], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1; + continue} + return accu$0}} + function of_list(l) + {if(l) + {var + tl=l[2], + hd=l[1], + a=caml_make_vect(list_length(0,l),hd), + i=1, + param=tl; + for(;;) + {if(param) + {var tl$0=param[2],hd$0=param[1]; + a[1 + i] = hd$0; + var i$0=i + 1 | 0,i=i$0,param=tl$0; + continue} + return a}} + return [0]} + function fold_left$3(f,x,a) + {var r=[0,x],_zW_=a.length - 1 - 1 | 0,_zV_=0; + if(! (_zW_ < 0)) + {var i=_zV_; + for(;;) + {r[1] = caml_call2(f,r[1],a[1 + i]); + var _zX_=i + 1 | 0; + if(_zW_ !== i){var i=_zX_;continue} + break}} + return r[1]} + function fold_left_map$0(f,acc,input_array) + {var len=input_array.length - 1; + if(0 === len)return [0,acc,[0]]; + var + match=caml_call2(f,acc,input_array[1]), + elt=match[2], + acc$0=match[1], + output_array=caml_make_vect(len,elt), + acc$1=[0,acc$0], + _zT_=len - 1 | 0, + _zS_=1; + if(! (_zT_ < 1)) + {var i=_zS_; + for(;;) + {var + match$0=caml_call2(f,acc$1[1],input_array[1 + i]), + elt$0=match$0[2], + acc$2=match$0[1]; + acc$1[1] = acc$2; + output_array[1 + i] = elt$0; + var _zU_=i + 1 | 0; + if(_zT_ !== i){var i=_zU_;continue} + break}} + return [0,acc$1[1],output_array]} + function fold_right$2(f,a,x) + {var r=[0,x],_zQ_=a.length - 1 - 1 | 0; + if(! (_zQ_ < 0)) + {var i=_zQ_; + for(;;) + {r[1] = caml_call2(f,a[1 + i],r[1]); + var _zR_=i - 1 | 0; + if(0 !== i){var i=_zR_;continue} + break}} + return r[1]} + function exists$3(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(caml_call1(p,a[1 + i]))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function for_all$3(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 1; + if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue} + return 0}} + function for_all2$1(p,l1,l2) + {var n1=l1.length - 1,n2=l2.length - 1; + if(n1 !== n2)return invalid_arg(cst_Array_for_all2); + var i=0; + for(;;) + {if(i === n1)return 1; + if(caml_call2(p,l1[1 + i],l2[1 + i])) + {var i$0=i + 1 | 0,i=i$0;continue} + return 0}} + function exists2$1(p,l1,l2) + {var n1=l1.length - 1,n2=l2.length - 1; + if(n1 !== n2)return invalid_arg(cst_Array_exists2); + var i=0; + for(;;) + {if(i === n1)return 0; + if(caml_call2(p,l1[1 + i],l2[1 + i]))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function mem$0(x,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(0 === caml_compare(a[1 + i],x))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function memq$0(x,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(x === a[1 + i])return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function find_opt$0(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + var x=a[1 + i]; + if(caml_call1(p,x))return [0,x]; + var i$0=i + 1 | 0,i=i$0; + continue}} + function find_map$1(f,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + var r=caml_call1(f,a[1 + i]); + if(r)return r; + var i$0=i + 1 | 0,i=i$0; + continue}} + function split$0(x) + {if(caml_equal(x,[0]))return [0,[0],[0]]; + var + match=x[1], + b0=match[2], + a0=match[1], + n=x.length - 1, + a=caml_make_vect(n,a0), + b=caml_make_vect(n,b0), + _zO_=n - 1 | 0, + _zN_=1; + if(! (_zO_ < 1)) + {var i=_zN_; + for(;;) + {var match$0=x[1 + i],bi=match$0[2],ai=match$0[1]; + a[1 + i] = ai; + b[1 + i] = bi; + var _zP_=i + 1 | 0; + if(_zO_ !== i){var i=_zP_;continue} + break}} + return [0,a,b]} + function combine$0(a,b) + {var na=a.length - 1,nb=b.length - 1; + if(na !== nb)invalid_arg(cst_Array_combine); + if(0 === na)return [0]; + var x=caml_make_vect(na,[0,a[1],b[1]]),_zL_=na - 1 | 0,_zK_=1; + if(! (_zL_ < 1)) + {var i=_zK_; + for(;;) + {x[1 + i] = [0,a[1 + i],b[1 + i]]; + var _zM_=i + 1 | 0; + if(_zL_ !== i){var i=_zM_;continue} + break}} + return x} + var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)]; + function sort(cmp,a) + {function maxson(l,i) + {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31]; + if((i31 + 2 | 0) < l) + {var _zD_=i31 + 1 | 0,_zE_=caml_check_bound(a,_zD_)[1 + _zD_]; + if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zE_) < 0) + x[1] = i31 + 1 | 0; + var + _zF_=i31 + 2 | 0, + _zG_=caml_check_bound(a,_zF_)[1 + _zF_], + _zH_=x[1]; + if(caml_call2(cmp,caml_check_bound(a,_zH_)[1 + _zH_],_zG_) < 0) + x[1] = i31 + 2 | 0; + return x[1]} + if((i31 + 1 | 0) < l) + {var _zI_=i31 + 1 | 0,_zJ_=caml_check_bound(a,_zI_)[1 + _zI_]; + if(! (0 <= caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zJ_))) + return i31 + 1 | 0} + if(i31 < l)return i31; + throw [0,Bottom,i]} + function trickledown(l,i,e) + {var i$0=i; + for(;;) + {var j=maxson(l,i$0); + if(0 < caml_call2(cmp,caml_check_bound(a,j)[1 + j],e)) + {var _zC_=caml_check_bound(a,j)[1 + j]; + caml_check_bound(a,i$0)[1 + i$0] = _zC_; + var i$0=j; + continue} + caml_check_bound(a,i$0)[1 + i$0] = e; + return 0}} + function trickle(l,i,e) + {try + {var _zB_=trickledown(l,i,e);return _zB_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bottom) + {var i$0=exn[2];caml_check_bound(a,i$0)[1 + i$0] = e;return 0} + throw exn}} + function bubbledown(l,i) + {var i$0=i; + for(;;) + {var i$1=maxson(l,i$0),_zA_=caml_check_bound(a,i$1)[1 + i$1]; + caml_check_bound(a,i$0)[1 + i$0] = _zA_; + var i$0=i$1; + continue}} + function bubble(l,i) + {try + {var _zz_=bubbledown(l,i);return _zz_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bottom){var i$0=exn[2];return i$0} + throw exn}} + var l=a.length - 1,_zr_=((l + 1 | 0) / 3 | 0) - 1 | 0; + if(! (_zr_ < 0)) + {var i$2=_zr_; + for(;;) + {trickle(l,i$2,caml_check_bound(a,i$2)[1 + i$2]); + var _zy_=i$2 - 1 | 0; + if(0 !== i$2){var i$2=_zy_;continue} + break}} + var _zs_=l - 1 | 0; + if(! (_zs_ < 2)) + {var i$0=_zs_; + a: + for(;;) + {var + e$0=caml_check_bound(a,i$0)[1 + i$0], + _zw_=caml_check_bound(a,0)[1]; + caml_check_bound(a,i$0)[1 + i$0] = _zw_; + var i$1=bubble(i$0,0),i=i$1; + for(;;) + {var father=(i - 1 | 0) / 3 | 0; + if(i === father)throw [0,Assert_failure,_H_]; + if + (0 <= caml_call2(cmp,caml_check_bound(a,father)[1 + father],e$0)) + caml_check_bound(a,i)[1 + i] = e$0; + else + {var _zq_=caml_check_bound(a,father)[1 + father]; + caml_check_bound(a,i)[1 + i] = _zq_; + if(0 < father){var i=father;continue} + caml_check_bound(a,0)[1] = e$0} + var _zx_=i$0 - 1 | 0; + if(2 !== i$0){var i$0=_zx_;continue a} + break} + break}} + var _zt_=1 < l?1:0; + if(_zt_) + {var e=caml_check_bound(a,1)[2],_zu_=caml_check_bound(a,0)[1]; + caml_check_bound(a,1)[2] = _zu_; + caml_check_bound(a,0)[1] = e; + var _zv_=0} + else + var _zv_=_zt_; + return _zv_} + function fast_sort$0(cmp,a) + {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) + {var + src1r=src1ofs + src1len | 0, + src2r=src2ofs + src2len | 0, + s2$1=caml_check_bound(src2,src2ofs)[1 + src2ofs], + s1$1=caml_check_bound(a,src1ofs)[1 + src1ofs], + i1=src1ofs, + s1=s1$1, + i2=src2ofs, + s2=s2$1, + d=dstofs; + for(;;) + {if(0 < caml_call2(cmp,s1,s2)) + {caml_check_bound(dst,d)[1 + d] = s2; + var i2$0=i2 + 1 | 0; + if(i2$0 < src2r) + {var + d$0=d + 1 | 0, + s2$0=caml_check_bound(src2,i2$0)[1 + i2$0], + i2=i2$0, + s2=s2$0, + d=d$0; + continue} + return blit$1(a,i1,dst,d + 1 | 0,src1r - i1 | 0)} + caml_check_bound(dst,d)[1 + d] = s1; + var i1$0=i1 + 1 | 0; + if(i1$0 < src1r) + {var + d$1=d + 1 | 0, + s1$0=caml_check_bound(a,i1$0)[1 + i1$0], + i1=i1$0, + s1=s1$0, + d=d$1; + continue} + return blit$1(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}} + function isortto(srcofs,dst,dstofs,len) + {var _zi_=len - 1 | 0,_zh_=0; + if(! (_zi_ < 0)) + {var i=_zh_; + a: + for(;;) + {var + _zj_=srcofs + i | 0, + e=caml_check_bound(a,_zj_)[1 + _zj_], + j=[0,(dstofs + i | 0) - 1 | 0]; + for(;;) + {if(dstofs <= j[1]) + {var _zk_=j[1]; + if(0 < caml_call2(cmp,caml_check_bound(dst,_zk_)[1 + _zk_],e)) + {var + _zl_=j[1], + _zm_=caml_check_bound(dst,_zl_)[1 + _zl_], + _zn_=j[1] + 1 | 0; + caml_check_bound(dst,_zn_)[1 + _zn_] = _zm_; + j[1] += -1; + continue}} + var _zo_=j[1] + 1 | 0; + caml_check_bound(dst,_zo_)[1 + _zo_] = e; + var _zp_=i + 1 | 0; + if(_zi_ !== i){var i=_zp_;continue a} + break} + break}} + return 0} + function sortto(srcofs,dst,dstofs,len) + {if(len <= 5)return isortto(srcofs,dst,dstofs,len); + var l1=len / 2 | 0,l2=len - l1 | 0; + sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2); + sortto(srcofs,a,srcofs + l2 | 0,l1); + return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)} + var l=a.length - 1; + if(l <= 5)return isortto(0,a,0,l); + var + l1=l / 2 | 0, + l2=l - l1 | 0, + t=caml_make_vect(l2,caml_check_bound(a,0)[1]); + sortto(l1,t,0,l2); + sortto(0,a,l2,l1); + return merge(l2,l1,t,0,l2,a,0)} + function to_seq$4(a) + {function aux(i,param) + {if(i < a.length - 1) + {var x=a[1 + i],_zf_=i + 1 | 0; + return [0,x,function(_zg_){return aux(_zf_,_zg_)}]} + return 0} + var _zd_=0; + return function(_ze_){return aux(_zd_,_ze_)}} + function to_seqi$1(a) + {function aux(i,param) + {if(i < a.length - 1) + {var x=a[1 + i],_zb_=i + 1 | 0; + return [0,[0,i,x],function(_zc_){return aux(_zb_,_zc_)}]} + return 0} + var _y$_=0; + return function(_za_){return aux(_y$_,_za_)}} + function of_seq$2(i$2) + {var _y__=0,l=fold_left(function(acc,x){return [0,x,acc]},_y__,i$2); + if(l) + {var + tl=l[2], + hd=l[1], + len=list_length(0,l), + a=caml_make_vect(len,hd), + i$1=len - 2 | 0, + i=i$1, + param=tl; + for(;;) + {if(param) + {var tl$0=param[2],hd$0=param[1]; + a[1 + i] = hd$0; + var i$0=i - 1 | 0,i=i$0,param=tl$0; + continue} + return a}} + return [0]} + var + concat$2=caml_array_concat, + include$3= + [0, + make_float, + init$3, + create_matrix, + create_matrix, + append$1, + concat$2, + sub$1, + copy$1, + fill$0, + blit$1, + to_list$1, + of_list, + iter$5, + iteri$3, + map$7, + mapi$3, + fold_left$3, + fold_left_map$0, + fold_right$2, + iter2$1, + map2$1, + for_all$3, + exists$3, + for_all2$1, + exists2$1, + mem$0, + memq$0, + find_opt$0, + find_map$1, + split$0, + combine$0, + sort, + fast_sort$0, + fast_sort$0, + to_seq$4, + to_seqi$1, + of_seq$2, + Floatarray]; + caml_register_global(794,include$3,"Stdlib__Array"); + var zero$0=0.,one$0=1.,minus_one$0=-1.; + function is_finite(x){return x - x == 0.?1:0} + function is_infinite(x){return 1. / x == 0.?1:0} + function is_nan(x){return x != x?1:0} + var pi=3.14159265358979312; + function is_integer(x) + {var _y9_=x == runtime.caml_trunc_float(x)?1:0; + return _y9_?is_finite(x):_y9_} + function succ$0(x){return caml_nextafter_float(x,infinity)} + function pred$0(x){return caml_nextafter_float(x,neg_infinity)} + function equal$11(x,y){return 0 === caml_float_compare(x,y)?1:0} + function min$2(x,y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return x != x?x:y} + return y != y?y:x} + function max$2(x,y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return y != y?y:x} + return x != x?x:y} + function min_max(x,y) + {if(x == x && y == y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return [0,y,x]} + return [0,x,y]} + return [0,nan,nan]} + function min_num(x,y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return y != y?x:y} + return x != x?y:x} + function max_num(x,y) + {if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return x != x?y:x} + return y != y?x:y} + function min_max_num(x,y) + {if(x != x)return [0,y,y]; + if(y != y)return [0,x,x]; + if(! (x < y)) + {var switch$0=0; + if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1; + if(switch$0)return [0,y,x]} + return [0,x,y]} + function hash$0(x){return caml_hash(10,100,0,x)} + function unsafe_fill(a,ofs,len,v) + {var _y7_=(ofs + len | 0) - 1 | 0; + if(! (_y7_ < ofs)) + {var i=ofs; + for(;;) + {a[1 + i] = v; + var _y8_=i + 1 | 0; + if(_y7_ !== i){var i=_y8_;continue} + break}} + return 0} + function check(a,ofs,len,msg) + {var _y3_=ofs < 0?1:0; + if(_y3_) + var _y4_=_y3_; + else + {var _y5_=len < 0?1:0; + if(_y5_) + var _y4_=_y5_; + else + var + _y6_=(ofs + len | 0) < 0?1:0, + _y4_=_y6_ || (a.length - 1 < (ofs + len | 0)?1:0)} + return _y4_?invalid_arg(msg):_y4_} + function make$2(n,v) + {var result=caml_floatarray_create(n); + unsafe_fill(result,0,n,v); + return result} + function init$4(l,f) + {if(0 <= l) + {var res=caml_floatarray_create(l),_y1_=l - 1 | 0,_y0_=0; + if(! (_y1_ < 0)) + {var i=_y0_; + for(;;) + {res[1 + i] = caml_call1(f,i); + var _y2_=i + 1 | 0; + if(_y1_ !== i){var i=_y2_;continue} + break}} + return res} + return invalid_arg(cst_Float_Array_init)} + function append$2(a1,a2) + {var + l1=a1.length - 1, + l2=a2.length - 1, + result=caml_floatarray_create(l1 + l2 | 0); + caml_floatarray_blit(a1,0,result,0,l1); + caml_floatarray_blit(a2,0,result,l1,l2); + return result} + function concat$3(l) + {var acc=0,param=l; + for(;;) + {if(param) + {var + tl=param[2], + hd=param[1], + x=hd.length - 1 + acc | 0, + acc$0=acc <= x?x:invalid_arg(cst_Float_Array_concat), + acc=acc$0, + param=tl; + continue} + var result=caml_floatarray_create(acc),l$0=l,i=0; + for(;;) + {if(l$0) + {var tl$0=l$0[2],hd$0=l$0[1],hlen=hd$0.length - 1; + caml_floatarray_blit(hd$0,0,result,i,hlen); + var i$0=i + hlen | 0,l$0=tl$0,i=i$0; + continue} + if(i === acc)return result; + throw [0,Assert_failure,_I_]}}} + function sub$2(a,ofs,len) + {check(a,ofs,len,cst_Float_Array_sub); + var result=caml_floatarray_create(len); + caml_floatarray_blit(a,ofs,result,0,len); + return result} + function copy$2(a) + {var l=a.length - 1,result=caml_floatarray_create(l); + caml_floatarray_blit(a,0,result,0,l); + return result} + function fill$1(a,ofs,len,v) + {check(a,ofs,len,cst_Float_Array_fill);return unsafe_fill(a,ofs,len,v)} + function blit$2(src,sofs,dst,dofs,len) + {check(src,sofs,len,cst_Float_array_blit); + check(dst,dofs,len,cst_Float_array_blit$0); + return caml_floatarray_blit(src,sofs,dst,dofs,len)} + function to_list$2(a) + {return init$0(a.length - 1,function(_yZ_){return a[1 + _yZ_]})} + function of_list$0(l) + {var result=caml_floatarray_create(length$1(l)),i=0,l$0=l; + for(;;) + {if(l$0) + {var t=l$0[2],h=l$0[1]; + result[1 + i] = h; + var i$0=i + 1 | 0,i=i$0,l$0=t; + continue} + return result}} + function iter$6(f,a) + {var _yX_=a.length - 1 - 1 | 0,_yW_=0; + if(! (_yX_ < 0)) + {var i=_yW_; + for(;;) + {caml_call1(f,a[1 + i]); + var _yY_=i + 1 | 0; + if(_yX_ !== i){var i=_yY_;continue} + break}} + return 0} + function iter2$2(f,a,b) + {if(a.length - 1 !== b.length - 1) + return invalid_arg(cst_Float_Array_iter2_arrays_m); + var _yU_=a.length - 1 - 1 | 0,_yT_=0; + if(! (_yU_ < 0)) + {var i=_yT_; + for(;;) + {caml_call2(f,a[1 + i],b[1 + i]); + var _yV_=i + 1 | 0; + if(_yU_ !== i){var i=_yV_;continue} + break}} + return 0} + function map$8(f,a) + {var l=a.length - 1,r=caml_floatarray_create(l),_yR_=l - 1 | 0,_yQ_=0; + if(! (_yR_ < 0)) + {var i=_yQ_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _yS_=i + 1 | 0; + if(_yR_ !== i){var i=_yS_;continue} + break}} + return r} + function map2$2(f,a,b) + {var la=a.length - 1,lb=b.length - 1; + if(la !== lb)return invalid_arg(cst_Float_Array_map2_arrays_mu); + var r=caml_floatarray_create(la),_yO_=la - 1 | 0,_yN_=0; + if(! (_yO_ < 0)) + {var i=_yN_; + for(;;) + {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]); + var _yP_=i + 1 | 0; + if(_yO_ !== i){var i=_yP_;continue} + break}} + return r} + function iteri$4(f,a) + {var _yL_=a.length - 1 - 1 | 0,_yK_=0; + if(! (_yL_ < 0)) + {var i=_yK_; + for(;;) + {caml_call2(f,i,a[1 + i]); + var _yM_=i + 1 | 0; + if(_yL_ !== i){var i=_yM_;continue} + break}} + return 0} + function mapi$4(f,a) + {var l=a.length - 1,r=caml_floatarray_create(l),_yI_=l - 1 | 0,_yH_=0; + if(! (_yI_ < 0)) + {var i=_yH_; + for(;;) + {r[1 + i] = caml_call2(f,i,a[1 + i]); + var _yJ_=i + 1 | 0; + if(_yI_ !== i){var i=_yJ_;continue} + break}} + return r} + function fold_left$4(f,x,a) + {var r=[0,x],_yF_=a.length - 1 - 1 | 0,_yE_=0; + if(! (_yF_ < 0)) + {var i=_yE_; + for(;;) + {r[1] = caml_call2(f,r[1],a[1 + i]); + var _yG_=i + 1 | 0; + if(_yF_ !== i){var i=_yG_;continue} + break}} + return r[1]} + function fold_right$3(f,a,x) + {var r=[0,x],_yC_=a.length - 1 - 1 | 0; + if(! (_yC_ < 0)) + {var i=_yC_; + for(;;) + {r[1] = caml_call2(f,a[1 + i],r[1]); + var _yD_=i - 1 | 0; + if(0 !== i){var i=_yD_;continue} + break}} + return r[1]} + function exists$4(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(caml_call1(p,a[1 + i]))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function for_all$4(p,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 1; + if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue} + return 0}} + function mem$1(x,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(0 === caml_float_compare(a[1 + i],x))return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + function mem_ieee(x,a) + {var n=a.length - 1,i=0; + for(;;) + {if(i === n)return 0; + if(x == a[1 + i])return 1; + var i$0=i + 1 | 0,i=i$0; + continue}} + var Bottom$0=[248,cst_Stdlib_Float_Array_Bottom,caml_fresh_oo_id(0)]; + function sort$0(cmp,a) + {function maxson(l,i) + {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31]; + if((i31 + 2 | 0) < l) + {if + (caml_call2 + (cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)) + < + 0) + x[1] = i31 + 1 | 0; + if + (caml_call2 + (cmp,caml_array_get(a,x[1]),caml_array_get(a,i31 + 2 | 0)) + < + 0) + x[1] = i31 + 2 | 0; + return x[1]} + if + ((i31 + 1 | 0) + < + l + && + ! + (0 + <= + caml_call2(cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0)))) + return i31 + 1 | 0; + if(i31 < l)return i31; + throw [0,Bottom$0,i]} + function trickledown(l,i,e) + {var i$0=i; + for(;;) + {var j=maxson(l,i$0); + if(0 < caml_call2(cmp,caml_array_get(a,j),e)) + {caml_array_set(a,i$0,caml_array_get(a,j));var i$0=j;continue} + return caml_array_set(a,i$0,e)}} + function trickle(l,i,e) + {try + {var _yB_=trickledown(l,i,e);return _yB_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bottom$0) + {var i$0=exn[2];return caml_array_set(a,i$0,e)} + throw exn}} + function bubbledown(l,i) + {var i$0=i; + for(;;) + {var i$1=maxson(l,i$0); + caml_array_set(a,i$0,caml_array_get(a,i$1)); + var i$0=i$1; + continue}} + function bubble(l,i) + {try + {var _yA_=bubbledown(l,i);return _yA_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bottom$0){var i$0=exn[2];return i$0} + throw exn}} + var l=a.length - 1,_yu_=((l + 1 | 0) / 3 | 0) - 1 | 0; + if(! (_yu_ < 0)) + {var i$2=_yu_; + for(;;) + {trickle(l,i$2,caml_array_get(a,i$2)); + var _yz_=i$2 - 1 | 0; + if(0 !== i$2){var i$2=_yz_;continue} + break}} + var _yv_=l - 1 | 0; + if(! (_yv_ < 2)) + {var i$0=_yv_; + a: + for(;;) + {var e$0=caml_array_get(a,i$0); + caml_array_set(a,i$0,caml_array_get(a,0)); + var i$1=bubble(i$0,0),i=i$1; + for(;;) + {var father=(i - 1 | 0) / 3 | 0; + if(i === father)throw [0,Assert_failure,_J_]; + if(0 <= caml_call2(cmp,caml_array_get(a,father),e$0)) + caml_array_set(a,i,e$0); + else + {caml_array_set(a,i,caml_array_get(a,father)); + if(0 < father){var i=father;continue} + caml_array_set(a,0,e$0)} + var _yy_=i$0 - 1 | 0; + if(2 !== i$0){var i$0=_yy_;continue a} + break} + break}} + var _yw_=1 < l?1:0; + if(_yw_) + {var e=caml_array_get(a,1); + caml_array_set(a,1,caml_array_get(a,0)); + var _yx_=caml_array_set(a,0,e)} + else + var _yx_=_yw_; + return _yx_} + function stable_sort(cmp,a) + {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) + {var + src1r=src1ofs + src1len | 0, + src2r=src2ofs + src2len | 0, + s2$1=caml_array_get(src2,src2ofs), + s1$1=caml_array_get(a,src1ofs), + i1=src1ofs, + s1=s1$1, + i2=src2ofs, + s2=s2$1, + d=dstofs; + for(;;) + {if(0 < caml_call2(cmp,s1,s2)) + {caml_array_set(dst,d,s2); + var i2$0=i2 + 1 | 0; + if(i2$0 < src2r) + {var + d$0=d + 1 | 0, + s2$0=caml_array_get(src2,i2$0), + i2=i2$0, + s2=s2$0, + d=d$0; + continue} + return blit$2(a,i1,dst,d + 1 | 0,src1r - i1 | 0)} + caml_array_set(dst,d,s1); + var i1$0=i1 + 1 | 0; + if(i1$0 < src1r) + {var + d$1=d + 1 | 0, + s1$0=caml_array_get(a,i1$0), + i1=i1$0, + s1=s1$0, + d=d$1; + continue} + return blit$2(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}} + function isortto(srcofs,dst,dstofs,len) + {var _ys_=len - 1 | 0,_yr_=0; + if(! (_ys_ < 0)) + {var i=_yr_; + a: + for(;;) + {var + e=caml_array_get(a,srcofs + i | 0), + j=[0,(dstofs + i | 0) - 1 | 0]; + for(;;) + {if + (dstofs + <= + j[1] + && + 0 + < + caml_call2(cmp,caml_array_get(dst,j[1]),e)) + {caml_array_set(dst,j[1] + 1 | 0,caml_array_get(dst,j[1])); + j[1] += -1; + continue} + caml_array_set(dst,j[1] + 1 | 0,e); + var _yt_=i + 1 | 0; + if(_ys_ !== i){var i=_yt_;continue a} + break} + break}} + return 0} + function sortto(srcofs,dst,dstofs,len) + {if(len <= 5)return isortto(srcofs,dst,dstofs,len); + var l1=len / 2 | 0,l2=len - l1 | 0; + sortto(srcofs + l1 | 0,dst,dstofs + l1 | 0,l2); + sortto(srcofs,a,srcofs + l2 | 0,l1); + return merge(srcofs + l2 | 0,l1,dst,dstofs + l1 | 0,l2,dst,dstofs)} + var l=a.length - 1; + if(l <= 5)return isortto(0,a,0,l); + var l1=l / 2 | 0,l2=l - l1 | 0,t=caml_floatarray_create(l2); + sortto(l1,t,0,l2); + sortto(0,a,l2,l1); + return merge(l2,l1,t,0,l2,a,0)} + function to_seq$5(a) + {function aux(i,param) + {if(i < a.length - 1) + {var x=a[1 + i],_yp_=i + 1 | 0; + return [0,x,function(_yq_){return aux(_yp_,_yq_)}]} + return 0} + var _yn_=0; + return function(_yo_){return aux(_yn_,_yo_)}} + function to_seqi$2(a) + {function aux(i,param) + {if(i < a.length - 1) + {var x=a[1 + i],_yl_=i + 1 | 0; + return [0,[0,i,x],function(_ym_){return aux(_yl_,_ym_)}]} + return 0} + var _yj_=0; + return function(_yk_){return aux(_yj_,_yk_)}} + function of_seq$3(i$2) + {var + _yi_=0, + param$0=fold_left(function(acc,x){return [0,x,acc]},_yi_,i$2), + len=length$1(param$0), + a=caml_floatarray_create(len), + i$1=len - 1 | 0, + i=i$1, + param=param$0; + for(;;) + {if(param) + {var tl=param[2],hd=param[1]; + a[1 + i] = hd; + var i$0=i - 1 | 0,i=i$0,param=tl; + continue} + return a}} + function map_to_array(f,a) + {var l=a.length - 1; + if(0 === l)return [0]; + var r=caml_make_vect(l,caml_call1(f,a[1])),_yg_=l - 1 | 0,_yf_=1; + if(! (_yg_ < 1)) + {var i=_yf_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _yh_=i + 1 | 0; + if(_yg_ !== i){var i=_yh_;continue} + break}} + return r} + function map_from_array(f,a) + {var l=a.length - 1,r=caml_floatarray_create(l),_yd_=l - 1 | 0,_yc_=0; + if(! (_yd_ < 0)) + {var i=_yc_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _ye_=i + 1 | 0; + if(_yd_ !== i){var i=_ye_;continue} + break}} + return r} + var + _K_=caml_floatarray_create, + _L_=caml_array_set, + _M_=caml_array_get, + _N_= + [0, + function(_yb_){return _yb_.length - 1}, + _M_, + _L_, + make$2, + _K_, + init$4, + append$2, + concat$3, + sub$2, + copy$2, + fill$1, + blit$2, + to_list$2, + of_list$0, + iter$6, + iteri$4, + map$8, + mapi$4, + fold_left$4, + fold_right$3, + iter2$2, + map2$2, + for_all$4, + exists$4, + mem$1, + mem_ieee, + sort$0, + stable_sort, + stable_sort, + to_seq$5, + to_seqi$2, + of_seq$3, + map_to_array, + map_from_array], + _O_=caml_floatarray_create, + _P_=caml_array_set, + _Q_=caml_array_get, + Stdlib_Float= + [0, + zero$0, + one$0, + minus_one$0, + succ$0, + pred$0, + infinity, + neg_infinity, + nan, + pi, + max_float, + min_float, + epsilon, + is_finite, + is_infinite, + is_nan, + is_integer, + of_string_opt, + to_string, + caml_float_compare, + equal$11, + min$2, + max$2, + min_max, + min_num, + max_num, + min_max_num, + hash$0, + [0, + function(_ya_){return _ya_.length - 1}, + _Q_, + _P_, + make$2, + _O_, + init$4, + append$2, + concat$3, + sub$2, + copy$2, + fill$1, + blit$2, + to_list$2, + of_list$0, + iter$6, + iteri$4, + map$8, + mapi$4, + fold_left$4, + fold_right$3, + iter2$2, + map2$2, + for_all$4, + exists$4, + mem$1, + mem_ieee, + sort$0, + stable_sort, + stable_sort, + to_seq$5, + to_seqi$2, + of_seq$3, + map_to_array, + map_from_array], + _N_]; + caml_register_global(795,Stdlib_Float,"Stdlib__Float"); + var zero$1=0,one$1=1,minus_one$1=-1; + function succ$1(n){return n + 1 | 0} + function pred$1(n){return n - 1 | 0} + function abs$1(n){return caml_greaterequal(n,0)?n:- n | 0} + var min_int$1=-2147483648,max_int$1=2147483647; + function lognot$0(n){return n ^ -1} + function unsigned_to_int(n) + {if + (! + (0 < caml_int_compare(0,n)) + && + ! + (0 < caml_int_compare(n,2147483647))) + return [0,n]; + return 0} + function to_string$3(n){return caml_format_int(cst_d,n)} + function of_string_opt$0(s) + {try + {var _x__=[0,caml_int_of_string(s)];return _x__} + catch(_x$_) + {_x$_ = caml_wrap_exception(_x$_); + if(_x$_[1] === Failure)return 0; + throw _x$_}} + function compare$11(x,y){return caml_int_compare(x,y)} + function equal$12(x,y){return 0 === caml_int_compare(x,y)?1:0} + function unsigned_compare(n,m) + {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)} + function min$3(x,y){return caml_lessequal(x,y)?x:y} + function max$3(x,y){return caml_greaterequal(x,y)?x:y} + function unsigned_div(n,d) + {if(caml_lessthan(d,0))return 0 <= unsigned_compare(n,d)?one$1:zero$1; + var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0; + return 0 <= unsigned_compare(r,d)?q + 1 | 0:q} + function unsigned_rem(n,d){return n - caml_mul(unsigned_div(n,d),d) | 0} + var + Stdlib_Int32= + [0, + zero$1, + one$1, + minus_one$1, + unsigned_div, + unsigned_rem, + succ$1, + pred$1, + abs$1, + max_int$1, + min_int$1, + lognot$0, + unsigned_to_int, + of_string_opt$0, + to_string$3, + compare$11, + unsigned_compare, + equal$12, + min$3, + max$3]; + caml_register_global(796,Stdlib_Int32,"Stdlib__Int32"); + function succ$2(n){return caml_int64_add(n,_R_)} + function pred$2(n){return caml_int64_sub(n,_S_)} + function abs$2(n) + {return caml_greaterequal(n,_T_)?n:runtime.caml_int64_neg(n)} + function lognot$1(n){return runtime.caml_int64_xor(n,_U_)} + var max_int$3=caml_int64_of_int32(2147483647); + function unsigned_to_int$0(n) + {if + (! + (0 < caml_int64_compare(zero$2,n)) + && + ! + (0 < caml_int64_compare(n,max_int$3))) + return [0,runtime.caml_int64_to_int32(n)]; + return 0} + function to_string$4(n){return caml_int64_format(cst_d$0,n)} + function of_string_opt$1(s) + {try + {var _x8_=[0,caml_int64_of_string(s)];return _x8_} + catch(_x9_) + {_x9_ = caml_wrap_exception(_x9_); + if(_x9_[1] === Failure)return 0; + throw _x9_}} + function compare$12(x,y){return caml_int64_compare(x,y)} + function equal$13(x,y){return 0 === caml_int64_compare(x,y)?1:0} + function unsigned_compare$0(n,m) + {return caml_int64_compare + (caml_int64_sub(n,min_int$2),caml_int64_sub(m,min_int$2))} + function min$4(x,y){return caml_lessequal(x,y)?x:y} + function max$4(x,y){return caml_greaterequal(x,y)?x:y} + function unsigned_div$0(n,d) + {if(caml_lessthan(d,zero$2)) + return 0 <= unsigned_compare$0(n,d)?one$2:zero$2; + var + q= + caml_int64_shift_left + (runtime.caml_int64_div(caml_int64_shift_right_unsigne(n,1),d),1), + r=caml_int64_sub(n,caml_int64_mul(q,d)); + return 0 <= unsigned_compare$0(r,d)?succ$2(q):q} + function unsigned_rem$0(n,d) + {return caml_int64_sub(n,caml_int64_mul(unsigned_div$0(n,d),d))} + var + Stdlib_Int64= + [0, + zero$2, + one$2, + minus_one$2, + unsigned_div$0, + unsigned_rem$0, + succ$2, + pred$2, + abs$2, + max_int$2, + min_int$2, + lognot$1, + unsigned_to_int$0, + of_string_opt$1, + to_string$4, + compare$12, + unsigned_compare$0, + equal$13, + min$4, + max$4]; + caml_register_global(797,Stdlib_Int64,"Stdlib__Int64"); + var zero$3=0,one$3=1,minus_one$3=-1; + function succ$3(n){return n + 1 | 0} + function pred$3(n){return n - 1 | 0} + function abs$3(n){return caml_greaterequal(n,0)?n:- n | 0} + var min_int$3=-2147483648,max_int$4=2147483647; + function lognot$2(n){return n ^ -1} + function unsigned_to_int$1(n) + {if + (! + (0 < caml_int_compare(0,n)) + && + ! + (0 < caml_int_compare(n,2147483647))) + return [0,n]; + return 0} + function to_string$5(n){return caml_format_int(cst_d$1,n)} + function of_string_opt$2(s) + {try + {var _x6_=[0,caml_int_of_string(s)];return _x6_} + catch(_x7_) + {_x7_ = caml_wrap_exception(_x7_); + if(_x7_[1] === Failure)return 0; + throw _x7_}} + function compare$13(x,y){return caml_int_compare(x,y)} + function equal$14(x,y){return 0 === caml_int_compare(x,y)?1:0} + function unsigned_compare$1(n,m) + {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)} + function min$5(x,y){return caml_lessequal(x,y)?x:y} + function max$5(x,y){return caml_greaterequal(x,y)?x:y} + function unsigned_div$1(n,d) + {if(caml_lessthan(d,0))return 0 <= unsigned_compare$1(n,d)?one$3:zero$3; + var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0; + return 0 <= unsigned_compare$1(r,d)?q + 1 | 0:q} + function unsigned_rem$1(n,d) + {return n - caml_mul(unsigned_div$1(n,d),d) | 0} + var + Stdlib_Nativeint= + [0, + zero$3, + one$3, + minus_one$3, + unsigned_div$1, + unsigned_rem$1, + succ$3, + pred$3, + abs$3, + match$1, + max_int$4, + min_int$3, + lognot$2, + unsigned_to_int$1, + of_string_opt$2, + to_string$5, + compare$13, + unsigned_compare$1, + equal$14, + min$5, + max$5]; + caml_register_global(798,Stdlib_Nativeint,"Stdlib__Nativeint"); + function engine(tbl,state,buf) + {var + result=runtime.caml_lex_engine(tbl,state,buf), + _x3_=0 <= result?1:0, + _x4_=_x3_?buf[12] !== dummy_pos?1:0:_x3_; + if(_x4_) + {buf[11] = buf[12]; + var _x5_=buf[12]; + buf[12] = [0,_x5_[1],_x5_[2],_x5_[3],buf[4] + buf[6] | 0]} + return result} + function new_engine(tbl,state,buf) + {var + result=runtime.caml_new_lex_engine(tbl,state,buf), + _x0_=0 <= result?1:0, + _x1_=_x0_?buf[12] !== dummy_pos?1:0:_x0_; + if(_x1_) + {buf[11] = buf[12]; + var _x2_=buf[12]; + buf[12] = [0,_x2_[1],_x2_[2],_x2_[3],buf[4] + buf[6] | 0]} + return result} + function from_function(opt,f) + {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1; + var + _xM_=with_positions?zero_pos:dummy_pos, + _xN_=with_positions?zero_pos:dummy_pos, + aux_buffer=caml_create_bytes(512), + _xO_=[0], + _xP_=0, + _xQ_=0, + _xR_=0, + _xS_=0, + _xT_=0, + _xU_=0, + _xV_=0, + _xW_=caml_create_bytes(1024); + return [0, + function(lexbuf) + {var + read= + caml_call2(f,aux_buffer,caml_ml_bytes_length(aux_buffer)), + n=0 < read?read:(lexbuf[9] = 1,0); + if(caml_ml_bytes_length(lexbuf[2]) < (lexbuf[3] + n | 0)) + {if + (((lexbuf[3] - lexbuf[5] | 0) + n | 0) + <= + caml_ml_bytes_length(lexbuf[2])) + blit + (lexbuf[2],lexbuf[5],lexbuf[2],0,lexbuf[3] - lexbuf[5] | 0); + else + {var + newlen= + min$1 + (2 * caml_ml_bytes_length(lexbuf[2]) | 0,max_string_length); + if(newlen < ((lexbuf[3] - lexbuf[5] | 0) + n | 0)) + failwith(cst_Lexing_lex_refill_cannot_g); + var newbuf=caml_create_bytes(newlen); + blit(lexbuf[2],lexbuf[5],newbuf,0,lexbuf[3] - lexbuf[5] | 0); + lexbuf[2] = newbuf} + var s=lexbuf[5]; + lexbuf[4] = lexbuf[4] + s | 0; + lexbuf[6] = lexbuf[6] - s | 0; + lexbuf[5] = 0; + lexbuf[7] = lexbuf[7] - s | 0; + lexbuf[3] = lexbuf[3] - s | 0; + var t=lexbuf[10],_xY_=t.length - 1 - 1 | 0,_xX_=0; + if(! (_xY_ < 0)) + {var i=_xX_; + for(;;) + {var v=caml_check_bound(t,i)[1 + i]; + if(0 <= v)caml_check_bound(t,i)[1 + i] = v - s | 0; + var _xZ_=i + 1 | 0; + if(_xY_ !== i){var i=_xZ_;continue} + break}}} + blit(aux_buffer,0,lexbuf[2],lexbuf[3],n); + lexbuf[3] = lexbuf[3] + n | 0; + return 0}, + _xW_, + _xV_, + _xU_, + _xT_, + _xS_, + _xR_, + _xQ_, + _xP_, + _xO_, + _xN_, + _xM_]} + function from_channel(with_positions,ic) + {return from_function + (with_positions,function(buf,n){return input(ic,buf,0,n)})} + function from_string$0(opt,s) + {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1; + var + _xB_=with_positions?zero_pos:dummy_pos, + _xC_=with_positions?zero_pos:dummy_pos, + _xD_=[0], + _xE_=1, + _xF_=0, + _xG_=0, + _xH_=0, + _xI_=0, + _xJ_=0, + _xK_=caml_ml_string_length(s), + _xL_=to_bytes(s); + return [0, + function(lexbuf){lexbuf[9] = 1;return 0}, + _xL_, + _xK_, + _xJ_, + _xI_, + _xH_, + _xG_, + _xF_, + _xE_, + _xD_, + _xC_, + _xB_]} + function set_position(lexbuf,position) + {lexbuf[12] = [0,lexbuf[12][1],position[2],position[3],position[4]]; + lexbuf[4] = position[4]; + return 0} + function set_filename(lexbuf,fname) + {var _xA_=lexbuf[12]; + lexbuf[12] = [0,fname,_xA_[2],_xA_[3],_xA_[4]]; + return 0} + function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0} + function lexeme(lexbuf) + {var len=lexbuf[6] - lexbuf[5] | 0; + return sub_string(lexbuf[2],lexbuf[5],len)} + function sub_lexeme(lexbuf,i1,i2) + {var len=i2 - i1 | 0;return sub_string(lexbuf[2],i1,len)} + function sub_lexeme_opt(lexbuf,i1,i2) + {if(0 <= i1){var len=i2 - i1 | 0;return [0,sub_string(lexbuf[2],i1,len)]} + return 0} + function sub_lexeme_char(lexbuf,i){return caml_bytes_get(lexbuf[2],i)} + function sub_lexeme_char_opt(lexbuf,i) + {return 0 <= i?[0,caml_bytes_get(lexbuf[2],i)]:0} + function lexeme_char(lexbuf,i) + {return caml_bytes_get(lexbuf[2],lexbuf[5] + i | 0)} + function lexeme_start(lexbuf){return lexbuf[11][4]} + function lexeme_end(lexbuf){return lexbuf[12][4]} + function lexeme_start_p(lexbuf){return lexbuf[11]} + function lexeme_end_p(lexbuf){return lexbuf[12]} + function new_line(lexbuf) + {var + lcp=lexbuf[12], + _xy_=lcp !== dummy_pos?1:0, + _xz_=_xy_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_xy_; + return _xz_} + function flush_input(lb) + {lb[6] = 0; + lb[4] = 0; + var lcp=lb[12]; + if(lcp !== dummy_pos) + lb[12] = [0,lcp[1],zero_pos[2],zero_pos[3],zero_pos[4]]; + lb[3] = 0; + return 0} + var + Stdlib_Lexing= + [0, + dummy_pos, + from_channel, + from_string$0, + from_function, + set_position, + set_filename, + with_positions, + lexeme, + lexeme_char, + lexeme_start, + lexeme_end, + lexeme_start_p, + lexeme_end_p, + new_line, + flush_input, + sub_lexeme, + sub_lexeme_opt, + sub_lexeme_char, + sub_lexeme_char_opt, + engine, + new_engine]; + caml_register_global(799,Stdlib_Lexing,"Stdlib__Lexing"); + var + YYexit=[248,cst_Stdlib_Parsing_YYexit,caml_fresh_oo_id(0)], + Parse_error=[248,cst_Stdlib_Parsing_Parse_error,caml_fresh_oo_id(0)], + env= + [0, + caml_make_vect(100,0), + caml_make_vect(100,0), + caml_make_vect(100,dummy_pos), + caml_make_vect(100,dummy_pos), + 100, + 0, + 0, + 0, + dummy_pos, + dummy_pos, + 0, + 0, + 0, + 0, + 0, + 0]; + function grow_stacks(param) + {var + oldsize=env[5], + newsize=oldsize * 2 | 0, + new_s=caml_make_vect(newsize,0), + new_v=caml_make_vect(newsize,0), + new_start=caml_make_vect(newsize,dummy_pos), + new_end=caml_make_vect(newsize,dummy_pos); + blit$1(env[1],0,new_s,0,oldsize); + env[1] = new_s; + blit$1(env[2],0,new_v,0,oldsize); + env[2] = new_v; + blit$1(env[3],0,new_start,0,oldsize); + env[3] = new_start; + blit$1(env[4],0,new_end,0,oldsize); + env[4] = new_end; + env[5] = newsize; + return 0} + function clear_parser(param) + {fill$0(env[2],0,env[5],0);env[8] = 0;return 0} + var current_lookahead_fun=[0,function(param){return 0}]; + function yyparse(tables,start,lexer,lexbuf) + {var + init_asp=env[11], + init_sp=env[14], + init_stackbase=env[6], + init_state=env[15], + init_curr_char=env[7], + init_lval=env[8], + init_errflag=env[16]; + env[6] = env[14] + 1 | 0; + env[7] = start; + env[10] = lexbuf[12]; + try + {var cmd=0,arg=0; + for(;;) + {var match=runtime.caml_parse_engine(tables,env,cmd,arg); + switch(match) + {case 0: + var arg$0=caml_call1(lexer,lexbuf); + env[9] = lexbuf[11]; + env[10] = lexbuf[12]; + var cmd=1,arg=arg$0; + continue; + case 1:throw Parse_error; + case 2:grow_stacks(0);var cmd=2,arg=0;continue; + case 3:grow_stacks(0);var cmd=3,arg=0;continue; + case 4: + try + {var + _xs_=env[13], + _xt_= + caml_call1(caml_check_bound(tables[1],_xs_)[1 + _xs_],env), + _xu_=4, + arg$1=_xt_, + cmd$0=_xu_} + catch(_xx_) + {_xx_ = caml_wrap_exception(_xx_); + if(_xx_ !== Parse_error)throw _xx_; + var arg$1=0,cmd$0=5,_xv_=_xx_} + var cmd=cmd$0,arg=arg$1; + continue; + default: + caml_call1(tables[14],cst_syntax_error);var cmd=5,arg=0;continue}}} + catch(exn) + {exn = caml_wrap_exception(exn); + var curr_char=env[7]; + env[11] = init_asp; + env[14] = init_sp; + env[6] = init_stackbase; + env[15] = init_state; + env[7] = init_curr_char; + env[8] = init_lval; + env[16] = init_errflag; + if(exn[1] === YYexit){var v=exn[2];return v} + current_lookahead_fun[1] + = + function(tok) + {if(is_block(tok)) + {var _xw_=caml_obj_tag(tok); + return caml_check_bound(tables[3],_xw_)[1 + _xw_] === curr_char + ?1 + :0} + return caml_check_bound(tables[2],tok)[1 + tok] === curr_char?1:0}; + throw exn}} + function peek_val(env,n) + {var _xr_=env[11] - n | 0;return caml_check_bound(env[2],_xr_)[1 + _xr_]} + function symbol_start_pos(param) + {var i=env[12]; + for(;;) + {if(0 < i) + {var + _xo_=(env[11] - i | 0) + 1 | 0, + st=caml_check_bound(env[3],_xo_)[1 + _xo_], + _xp_=(env[11] - i | 0) + 1 | 0, + en=caml_check_bound(env[4],_xp_)[1 + _xp_]; + if(caml_notequal(st,en))return st; + var i$0=i - 1 | 0,i=i$0; + continue} + var _xq_=env[11]; + return caml_check_bound(env[4],_xq_)[1 + _xq_]}} + function symbol_end_pos(param) + {var _xn_=env[11];return caml_check_bound(env[4],_xn_)[1 + _xn_]} + function rhs_start_pos(n) + {var _xm_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[3],_xm_)[1 + _xm_]} + function rhs_end_pos(n) + {var _xl_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[4],_xl_)[1 + _xl_]} + function symbol_start(param){return symbol_start_pos(0)[4]} + function symbol_end(param){return symbol_end_pos(0)[4]} + function rhs_start(n){return rhs_start_pos(n)[4]} + function rhs_end(n){return rhs_end_pos(n)[4]} + function is_current_lookahead(tok) + {return caml_call1(current_lookahead_fun[1],tok)} + function parse_error(param){return 0} + var + Stdlib_Parsing= + [0, + symbol_start, + symbol_end, + rhs_start, + rhs_end, + symbol_start_pos, + symbol_end_pos, + rhs_start_pos, + rhs_end_pos, + clear_parser, + Parse_error, + function(_xk_){return runtime.caml_set_parser_trace(_xk_)}, + YYexit, + yyparse, + peek_val, + is_current_lookahead, + parse_error]; + caml_register_global(800,Stdlib_Parsing,"Stdlib__Parsing"); + var + Stdlib_Set= + [0, + function(Ord) + {function height(param){if(param){var h=param[4];return h}return 0} + function create(l,v,r) + {if(l)var h=l[4],hl=h;else var hl=0; + if(r)var h$0=r[4],hr=h$0;else var hr=0; + var _xj_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,v,r,_xj_]} + function bal(l,v,r) + {if(l)var h=l[4],hl=h;else var hl=0; + if(r)var h$0=r[4],hr=h$0;else var hr=0; + if((hr + 2 | 0) < hl) + {if(l) + {var lr=l[3],lv=l[2],ll=l[1],_xe_=height(lr); + if(_xe_ <= height(ll))return create(ll,lv,create(lr,v,r)); + if(lr) + {var lrr=lr[3],lrv=lr[2],lrl=lr[1],_xf_=create(lrr,v,r); + return create(create(ll,lv,lrl),lrv,_xf_)} + return invalid_arg(cst_Set_bal)} + return invalid_arg(cst_Set_bal$0)} + if((hl + 2 | 0) < hr) + {if(r) + {var rr=r[3],rv=r[2],rl=r[1],_xg_=height(rl); + if(_xg_ <= height(rr))return create(create(l,v,rl),rv,rr); + if(rl) + {var rlr=rl[3],rlv=rl[2],rll=rl[1],_xh_=create(rlr,rv,rr); + return create(create(l,v,rll),rlv,_xh_)} + return invalid_arg(cst_Set_bal$1)} + return invalid_arg(cst_Set_bal$2)} + var _xi_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,v,r,_xi_]} + function add(x,t) + {if(t) + {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return t; + if(0 <= c){var rr=add(x,r);return r === rr?t:bal(l,v,rr)} + var ll=add(x,l); + return l === ll?t:bal(ll,v,r)} + return [0,0,x,0,1]} + function singleton(x){return [0,0,x,0,1]} + function add_min_element(x,param) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + return bal(add_min_element(x,l),v,r)} + return singleton(x)} + function add_max_element(x,param) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + return bal(l,v,add_max_element(x,r))} + return singleton(x)} + function join(l,v,r) + {if(l) + {if(r) + {var + rh=r[4], + rr=r[3], + rv=r[2], + rl=r[1], + lh=l[4], + lr=l[3], + lv=l[2], + ll=l[1]; + return (rh + 2 | 0) < lh + ?bal(ll,lv,join(lr,v,r)) + :(lh + 2 | 0) < rh?bal(join(l,v,rl),rv,rr):create(l,v,r)} + return add_max_element(v,l)} + return add_min_element(v,r)} + function min_elt(param) + {var param$0=param; + for(;;) + {if(param$0) + {var _xd_=param$0[1]; + if(_xd_){var param$0=_xd_;continue} + var v=param$0[2]; + return v} + throw Not_found}} + function min_elt_opt(param) + {var param$0=param; + for(;;) + {if(param$0) + {var _xc_=param$0[1]; + if(_xc_){var param$0=_xc_;continue} + var v=param$0[2]; + return [0,v]} + return 0}} + function max_elt(param) + {var param$0=param; + for(;;) + {if(param$0) + {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} + var v=param$0[2]; + return v} + throw Not_found}} + function max_elt_opt(param) + {var param$0=param; + for(;;) + {if(param$0) + {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue} + var v=param$0[2]; + return [0,v]} + return 0}} + function remove_min_elt(param) + {if(param) + {var _xb_=param[1]; + if(_xb_) + {var r=param[3],v=param[2];return bal(remove_min_elt(_xb_),v,r)} + var r$0=param[3]; + return r$0} + return invalid_arg(cst_Set_remove_min_elt)} + function concat(t1,t2) + {if(t1) + {if(t2) + {var _xa_=remove_min_elt(t2);return join(t1,min_elt(t2),_xa_)} + return t1} + return t2} + function split(x,param) + {if(param) + {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return [0,l,1,r]; + if(0 <= c) + {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1]; + return [0,join(l,v,lr),pres,rr]} + var + match$0=split(x,l), + rl=match$0[3], + pres$0=match$0[2], + ll=match$0[1]; + return [0,ll,pres$0,join(rl,v,r)]} + return _V_} + var empty=0; + function is_empty(param){return param?0:1} + function mem(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v), + _w$_=0 === c?1:0; + if(_w$_)return _w$_; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + return 0}} + function remove(x,t) + {if(t) + {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); + if(0 === c) + {if(l) + {if(r) + {var _w__=remove_min_elt(r);return bal(l,min_elt(r),_w__)} + return l} + return r} + if(0 <= c){var rr=remove(x,r);return r === rr?t:bal(l,v,rr)} + var ll=remove(x,l); + return l === ll?t:bal(ll,v,r)} + return 0} + function union(s1,s2) + {if(s1) + {if(s2) + {var + h2=s2[4], + r2=s2[3], + v2=s2[2], + l2=s2[1], + h1=s1[4], + r1=s1[3], + v1=s1[2], + l1=s1[1]; + if(h2 <= h1) + {if(1 === h2)return add(v2,s1); + var + match=split(v1,s2), + r2$0=match[3], + l2$0=match[1], + _w8_=union(r1,r2$0); + return join(union(l1,l2$0),v1,_w8_)} + if(1 === h1)return add(v1,s2); + var + match$0=split(v2,s1), + r1$0=match$0[3], + l1$0=match$0[1], + _w9_=union(r1$0,r2); + return join(union(l1$0,l2),v2,_w9_)} + return s1} + return s2} + function inter(s1,s2) + {if(s1) + {if(s2) + {var r1=s1[3],v1=s1[2],l1=s1[1],_w4_=split(v1,s2),_w5_=_w4_[1]; + if(_w4_[2]) + {var r2=_w4_[3],_w6_=inter(r1,r2); + return join(inter(l1,_w5_),v1,_w6_)} + var r2$0=_w4_[3],_w7_=inter(r1,r2$0); + return concat(inter(l1,_w5_),_w7_)} + return 0} + return 0} + function split_bis(x,param) + {if(param) + {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return 0; + if(0 <= c) + {var match=split_bis(x,r); + if(match) + {var rr=match[2],lr=match[1];return [0,join(l,v,lr),rr]} + return 0} + var match$0=split_bis(x,l); + if(match$0) + {var rl=match$0[2],ll=match$0[1]; + return [0, + ll, + function(param){return join(caml_call1(rl,0),v,r)}]} + return 0} + return [0,0,function(param){return 0}]} + function disjoint(s1,s2) + {var s1$0=s1,s2$0=s2; + for(;;) + {if(s1$0 && s2$0) + {var r1=s1$0[3],v1=s1$0[2],l1=s1$0[1]; + if(s1$0 === s2$0)return 0; + var match=split_bis(v1,s2$0); + if(match) + {var r2=match[2],l2=match[1],_w3_=disjoint(l1,l2); + if(_w3_) + {var s2$1=caml_call1(r2,0),s1$0=r1,s2$0=s2$1;continue} + return _w3_} + return 0} + return 1}} + function diff(s1,s2) + {if(s1) + {if(s2) + {var r1=s1[3],v1=s1[2],l1=s1[1],_wZ_=split(v1,s2),_w0_=_wZ_[1]; + if(_wZ_[2]) + {var r2=_wZ_[3],_w1_=diff(r1,r2); + return concat(diff(l1,_w0_),_w1_)} + var r2$0=_wZ_[3],_w2_=diff(r1,r2$0); + return join(diff(l1,_w0_),v1,_w2_)} + return s1} + return 0} + function cons_enum(s,e) + {var s$0=s,e$0=e; + for(;;) + {if(s$0) + {var + r=s$0[3], + v=s$0[2], + s$1=s$0[1], + e$1=[0,v,r,e$0], + s$0=s$1, + e$0=e$1; + continue} + return e$0}} + function compare(s1,s2) + {var e2$2=cons_enum(s2,0),e1$2=cons_enum(s1,0),e1=e1$2,e2=e2$2; + for(;;) + {if(e1) + {if(e2) + {var + e2$0=e2[3], + r2=e2[2], + v2=e2[1], + e1$0=e1[3], + r1=e1[2], + v1=e1[1], + c=caml_call2(Ord[1],v1,v2); + if(0 === c) + {var + e2$1=cons_enum(r2,e2$0), + e1$1=cons_enum(r1,e1$0), + e1=e1$1, + e2=e2$1; + continue} + return c} + return 1} + return e2?-1:0}} + function equal(s1,s2){return 0 === compare(s1,s2)?1:0} + function subset(s1,s2) + {var s1$0=s1,s2$0=s2; + for(;;) + {if(s1$0) + {if(s2$0) + {var + r2=s2$0[3], + v2=s2$0[2], + l2=s2$0[1], + r1=s1$0[3], + v1=s1$0[2], + l1=s1$0[1], + c=caml_call2(Ord[1],v1,v2); + if(0 === c) + {var _wW_=subset(l1,l2); + if(_wW_){var s1$0=r1,s2$0=r2;continue} + return _wW_} + if(0 <= c) + {var _wX_=subset([0,0,v1,r1,0],r2); + if(_wX_){var s1$0=l1;continue} + return _wX_} + var _wY_=subset([0,l1,v1,0,0],l2); + if(_wY_){var s1$0=r1;continue} + return _wY_} + return 0} + return 1}} + function iter(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var r=param$0[3],v=param$0[2],l=param$0[1]; + iter(f,l); + caml_call1(f,v); + var param$0=r; + continue} + return 0}} + function fold(f,s,accu) + {var s$0=s,accu$0=accu; + for(;;) + {if(s$0) + {var + r=s$0[3], + v=s$0[2], + l=s$0[1], + accu$1=caml_call2(f,v,fold(f,l,accu$0)), + s$0=r, + accu$0=accu$1; + continue} + return accu$0}} + function for_all(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + _wT_=caml_call1(p,v); + if(_wT_) + {var _wU_=for_all(p,l); + if(_wU_){var param$0=r;continue} + var _wV_=_wU_} + else + var _wV_=_wT_; + return _wV_} + return 1}} + function exists(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + _wQ_=caml_call1(p,v); + if(_wQ_) + var _wR_=_wQ_; + else + {var _wS_=exists(p,l); + if(! _wS_){var param$0=r;continue} + var _wR_=_wS_} + return _wR_} + return 0}} + function filter(p,t) + {if(t) + {var + r=t[3], + v=t[2], + l=t[1], + l$0=filter(p,l), + pv=caml_call1(p,v), + r$0=filter(p,r); + if(pv){if(l === l$0 && r === r$0)return t;return join(l$0,v,r$0)} + return concat(l$0,r$0)} + return 0} + function partition(p,param) + {if(param) + {var + r=param[3], + v=param[2], + l=param[1], + match=partition(p,l), + lf=match[2], + lt=match[1], + pv=caml_call1(p,v), + match$0=partition(p,r), + rf=match$0[2], + rt=match$0[1]; + if(pv){var _wO_=concat(lf,rf);return [0,join(lt,v,rt),_wO_]} + var _wP_=join(lf,v,rf); + return [0,concat(lt,rt),_wP_]} + return _W_} + function cardinal(param) + {if(param) + {var r=param[3],l=param[1],_wN_=cardinal(r); + return (cardinal(l) + 1 | 0) + _wN_ | 0} + return 0} + function elements_aux(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + accu$1=[0,v,elements_aux(accu$0,r)], + accu$0=accu$1, + param$0=l; + continue} + return accu$0}} + function elements(s){return elements_aux(0,s)} + function find(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return v; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + throw Not_found}} + function find_first(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,param=l$0; + for(;;) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=l;continue} + var param=r; + continue} + return v0}} + var param$1=r$0; + continue} + throw Not_found}} + function find_first_opt(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,param=l$0; + for(;;) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=l;continue} + var param=r; + continue} + return [0,v0]}} + var param$1=r$0; + continue} + return 0}} + function find_last(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,param=r$0; + for(;;) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=r;continue} + var param=l; + continue} + return v0}} + var param$1=l$0; + continue} + throw Not_found}} + function find_last_opt(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,param=r$0; + for(;;) + {if(param) + {var r=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,param=r;continue} + var param=l; + continue} + return [0,v0]}} + var param$1=l$0; + continue} + return 0}} + function find_opt(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return [0,v]; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + return 0}} + function try_join(l,v,r) + {var switch$0=0; + if(0 !== l) + {var _wM_=max_elt(l); + if(0 <= caml_call2(Ord[1],_wM_,v))switch$0 = 1} + if(! switch$0) + {var switch$1=0; + if(0 !== r) + {var _wL_=min_elt(r); + if(0 <= caml_call2(Ord[1],v,_wL_))switch$1 = 1} + if(! switch$1)return join(l,v,r)} + return union(l,add(v,r))} + function map(f,t) + {if(t) + {var + r=t[3], + v=t[2], + l=t[1], + l$0=map(f,l), + v$0=caml_call1(f,v), + r$0=map(f,r); + if(l === l$0 && v === v$0 && r === r$0)return t; + return try_join(l$0,v$0,r$0)} + return 0} + function filter_map(f,t) + {if(t) + {var + r=t[3], + v=t[2], + l=t[1], + t1=filter_map(f,l), + v$0=caml_call1(f,v), + t2=filter_map(f,r); + if(v$0) + {var v$1=v$0[1]; + if(l === t1 && v === v$1 && r === t2)return t; + return try_join(t1,v$1,t2)} + if(t1) + {if(t2) + {var _wK_=remove_min_elt(t2); + return try_join(t1,min_elt(t2),_wK_)} + return t1} + return t2} + return 0} + function of_list(l) + {if(l) + {var _wz_=l[2],_wA_=l[1]; + if(_wz_) + {var _wB_=_wz_[2],_wC_=_wz_[1]; + if(_wB_) + {var _wD_=_wB_[2],_wE_=_wB_[1]; + if(_wD_) + {var _wF_=_wD_[2],_wG_=_wD_[1]; + if(_wF_) + {if(_wF_[2]) + {var + l$0=sort_uniq(Ord[1],l), + sub= + function(n,l) + {if(! (3 < n >>> 0)) + switch(n) + {case 0:return [0,0,l]; + case 1: + if(l){var l$3=l[2],x0=l[1];return [0,[0,0,x0,0,1],l$3]} + break; + case 2: + if(l) + {var _wH_=l[2]; + if(_wH_) + {var l$4=_wH_[2],x1=_wH_[1],x0$0=l[1]; + return [0,[0,[0,0,x0$0,0,1],x1,0,2],l$4]}} + break; + default: + if(l) + {var _wI_=l[2]; + if(_wI_) + {var _wJ_=_wI_[2]; + if(_wJ_) + {var l$5=_wJ_[2],x2=_wJ_[1],x1$0=_wI_[1],x0$1=l[1]; + return [0,[0,[0,0,x0$1,0,1],x1$0,[0,0,x2,0,1],2],l$5]}}}} + var nl=n / 2 | 0,match=sub(nl,l),l$0=match[2],left=match[1]; + if(l$0) + {var + l$1=l$0[2], + mid=l$0[1], + match$0=sub((n - nl | 0) - 1 | 0,l$1), + l$2=match$0[2], + right=match$0[1]; + return [0,create(left,mid,right),l$2]} + throw [0,Assert_failure,_X_]}; + return sub(length$1(l$0),l$0)[1]} + var x4=_wF_[1]; + return add(x4,add(_wG_,add(_wE_,add(_wC_,singleton(_wA_)))))} + return add(_wG_,add(_wE_,add(_wC_,singleton(_wA_))))} + return add(_wE_,add(_wC_,singleton(_wA_)))} + return add(_wC_,singleton(_wA_))} + return singleton(_wA_)} + return empty} + function add_seq(i,m) + {return fold_left(function(s,x){return add(x,s)},m,i)} + function of_seq(i){return add_seq(i,empty)} + function seq_of_enum(c,param) + {if(c) + {var rest=c[3],t=c[2],x=c[1],_wx_=cons_enum(t,rest); + return [0,x,function(_wy_){return seq_of_enum(_wx_,_wy_)}]} + return 0} + function to_seq(c) + {var _wv_=cons_enum(c,0); + return function(_ww_){return seq_of_enum(_wv_,_ww_)}} + function snoc_enum(s,e) + {var s$0=s,e$0=e; + for(;;) + {if(s$0) + {var + s$1=s$0[3], + v=s$0[2], + l=s$0[1], + e$1=[0,v,l,e$0], + s$0=s$1, + e$0=e$1; + continue} + return e$0}} + function rev_seq_of_enum(c,param) + {if(c) + {var rest=c[3],t=c[2],x=c[1],_wt_=snoc_enum(t,rest); + return [0,x,function(_wu_){return rev_seq_of_enum(_wt_,_wu_)}]} + return 0} + function to_rev_seq(c) + {var _wr_=snoc_enum(c,0); + return function(_ws_){return rev_seq_of_enum(_wr_,_ws_)}} + function to_seq_from(low,s) + {var s$0=s,c=0; + for(;;) + {if(s$0) + {var r=s$0[3],v=s$0[2],l=s$0[1],n=caml_call2(Ord[1],v,low); + if(0 !== n) + {if(0 <= n){var c$0=[0,v,r,c],s$0=l,c=c$0;continue} + var s$0=r; + continue} + var _wp_=[0,v,r,c]} + else + var _wp_=c; + return function(_wq_){return seq_of_enum(_wp_,_wq_)}}} + return [0, + empty, + is_empty, + mem, + add, + singleton, + remove, + union, + inter, + disjoint, + diff, + compare, + equal, + subset, + iter, + map, + fold, + for_all, + exists, + filter, + filter_map, + partition, + cardinal, + elements, + min_elt, + min_elt_opt, + max_elt, + max_elt_opt, + min_elt, + min_elt_opt, + split, + find, + find_opt, + find_first, + find_first_opt, + find_last, + find_last_opt, + of_list, + to_seq_from, + to_seq, + to_rev_seq, + add_seq, + of_seq]}]; + caml_register_global(801,Stdlib_Set,"Stdlib__Set"); + var + Stdlib_Map= + [0, + function(Ord) + {function height(param){if(param){var h=param[5];return h}return 0} + function create(l,x,d,r) + {var hl=height(l),hr=height(r),_wo_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,x,d,r,_wo_]} + function singleton(x,d){return [0,0,x,d,0,1]} + function bal(l,x,d,r) + {if(l)var h=l[5],hl=h;else var hl=0; + if(r)var h$0=r[5],hr=h$0;else var hr=0; + if((hr + 2 | 0) < hl) + {if(l) + {var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_wj_=height(lr); + if(_wj_ <= height(ll))return create(ll,lv,ld,create(lr,x,d,r)); + if(lr) + {var + lrr=lr[4], + lrd=lr[3], + lrv=lr[2], + lrl=lr[1], + _wk_=create(lrr,x,d,r); + return create(create(ll,lv,ld,lrl),lrv,lrd,_wk_)} + return invalid_arg(cst_Map_bal)} + return invalid_arg(cst_Map_bal$0)} + if((hl + 2 | 0) < hr) + {if(r) + {var rr=r[4],rd=r[3],rv=r[2],rl=r[1],_wl_=height(rl); + if(_wl_ <= height(rr))return create(create(l,x,d,rl),rv,rd,rr); + if(rl) + {var + rlr=rl[4], + rld=rl[3], + rlv=rl[2], + rll=rl[1], + _wm_=create(rlr,rv,rd,rr); + return create(create(l,x,d,rll),rlv,rld,_wm_)} + return invalid_arg(cst_Map_bal$1)} + return invalid_arg(cst_Map_bal$2)} + var _wn_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,x,d,r,_wn_]} + var empty=0; + function is_empty(param){return param?0:1} + function add(x,data,m) + {if(m) + {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return d === data?m:[0,l,x,data,r,h]; + if(0 <= c){var rr=add(x,data,r);return r === rr?m:bal(l,v,d,rr)} + var ll=add(x,data,l); + return l === ll?m:bal(ll,v,d,r)} + return [0,0,x,data,0,1]} + function find(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return d; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + throw Not_found}} + function find_first(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var + r$0=param$1[4], + d$0=param$1[3], + v$0=param$1[2], + l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,d0=d$0,param=l$0; + for(;;) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue} + var param=r; + continue} + return [0,v0,d0]}} + var param$1=r$0; + continue} + throw Not_found}} + function find_first_opt(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var + r$0=param$1[4], + d$0=param$1[3], + v$0=param$1[2], + l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,d0=d$0,param=l$0; + for(;;) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue} + var param=r; + continue} + return [0,[0,v0,d0]]}} + var param$1=r$0; + continue} + return 0}} + function find_last(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var + r$0=param$1[4], + d$0=param$1[3], + v$0=param$1[2], + l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,d0=d$0,param=r$0; + for(;;) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue} + var param=l; + continue} + return [0,v0,d0]}} + var param$1=l$0; + continue} + throw Not_found}} + function find_last_opt(f,param$0) + {var param$1=param$0; + for(;;) + {if(param$1) + {var + r$0=param$1[4], + d$0=param$1[3], + v$0=param$1[2], + l$0=param$1[1]; + if(caml_call1(f,v$0)) + {var v0=v$0,d0=d$0,param=r$0; + for(;;) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue} + var param=l; + continue} + return [0,[0,v0,d0]]}} + var param$1=l$0; + continue} + return 0}} + function find_opt(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return [0,d]; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + return 0}} + function mem(x,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + v=param$0[2], + l=param$0[1], + c=caml_call2(Ord[1],x,v), + _wi_=0 === c?1:0; + if(_wi_)return _wi_; + var param$1=0 <= c?r:l,param$0=param$1; + continue} + return 0}} + function min_binding(param) + {var param$0=param; + for(;;) + {if(param$0) + {var _wh_=param$0[1]; + if(_wh_){var param$0=_wh_;continue} + var d=param$0[3],v=param$0[2]; + return [0,v,d]} + throw Not_found}} + function min_binding_opt(param) + {var param$0=param; + for(;;) + {if(param$0) + {var _wg_=param$0[1]; + if(_wg_){var param$0=_wg_;continue} + var d=param$0[3],v=param$0[2]; + return [0,[0,v,d]]} + return 0}} + function max_binding(param) + {var param$0=param; + for(;;) + {if(param$0) + {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue} + var d=param$0[3],v=param$0[2]; + return [0,v,d]} + throw Not_found}} + function max_binding_opt(param) + {var param$0=param; + for(;;) + {if(param$0) + {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue} + var d=param$0[3],v=param$0[2]; + return [0,[0,v,d]]} + return 0}} + function remove_min_binding(param) + {if(param) + {var _wf_=param[1]; + if(_wf_) + {var r=param[4],d=param[3],v=param[2]; + return bal(remove_min_binding(_wf_),v,d,r)} + var r$0=param[4]; + return r$0} + return invalid_arg(cst_Map_remove_min_elt)} + function _vQ_(t1,t2) + {if(t1) + {if(t2) + {var match=min_binding(t2),d=match[2],x=match[1]; + return bal(t1,x,d,remove_min_binding(t2))} + return t1} + return t2} + function remove(x,m) + {if(m) + {var r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); + if(0 === c)return _vQ_(l,r); + if(0 <= c){var rr=remove(x,r);return r === rr?m:bal(l,v,d,rr)} + var ll=remove(x,l); + return l === ll?m:bal(ll,v,d,r)} + return 0} + function update(x,f,m) + {if(m) + {var h=m[5],r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); + if(0 === c) + {var match=caml_call1(f,[0,d]); + if(match) + {var data=match[1];return d === data?m:[0,l,x,data,r,h]} + return _vQ_(l,r)} + if(0 <= c){var rr=update(x,f,r);return r === rr?m:bal(l,v,d,rr)} + var ll=update(x,f,l); + return l === ll?m:bal(ll,v,d,r)} + var match$0=caml_call1(f,0); + if(match$0){var data$0=match$0[1];return [0,0,x,data$0,0,1]} + return 0} + function iter(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var r=param$0[4],d=param$0[3],v=param$0[2],l=param$0[1]; + iter(f,l); + caml_call2(f,v,d); + var param$0=r; + continue} + return 0}} + function map(f,param) + {if(param) + {var + h=param[5], + r=param[4], + d=param[3], + v=param[2], + l=param[1], + l$0=map(f,l), + d$0=caml_call1(f,d), + r$0=map(f,r); + return [0,l$0,v,d$0,r$0,h]} + return 0} + function mapi(f,param) + {if(param) + {var + h=param[5], + r=param[4], + d=param[3], + v=param[2], + l=param[1], + l$0=mapi(f,l), + d$0=caml_call2(f,v,d), + r$0=mapi(f,r); + return [0,l$0,v,d$0,r$0,h]} + return 0} + function fold(f,m,accu) + {var m$0=m,accu$0=accu; + for(;;) + {if(m$0) + {var + r=m$0[4], + d=m$0[3], + v=m$0[2], + l=m$0[1], + accu$1=caml_call3(f,v,d,fold(f,l,accu$0)), + m$0=r, + accu$0=accu$1; + continue} + return accu$0}} + function for_all(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + _wc_=caml_call2(p,v,d); + if(_wc_) + {var _wd_=for_all(p,l); + if(_wd_){var param$0=r;continue} + var _we_=_wd_} + else + var _we_=_wc_; + return _we_} + return 1}} + function exists(p,param) + {var param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + _v$_=caml_call2(p,v,d); + if(_v$_) + var _wa_=_v$_; + else + {var _wb_=exists(p,l); + if(! _wb_){var param$0=r;continue} + var _wa_=_wb_} + return _wa_} + return 0}} + function add_min_binding(k,x,param) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + return bal(add_min_binding(k,x,l),v,d,r)} + return singleton(k,x)} + function add_max_binding(k,x,param) + {if(param) + {var r=param[4],d=param[3],v=param[2],l=param[1]; + return bal(l,v,d,add_max_binding(k,x,r))} + return singleton(k,x)} + function join(l,v,d,r) + {if(l) + {if(r) + {var + rh=r[5], + rr=r[4], + rd=r[3], + rv=r[2], + rl=r[1], + lh=l[5], + lr=l[4], + ld=l[3], + lv=l[2], + ll=l[1]; + return (rh + 2 | 0) < lh + ?bal(ll,lv,ld,join(lr,v,d,r)) + :(lh + 2 | 0) < rh + ?bal(join(l,v,d,rl),rv,rd,rr) + :create(l,v,d,r)} + return add_max_binding(v,d,l)} + return add_min_binding(v,d,r)} + function concat(t1,t2) + {if(t1) + {if(t2) + {var match=min_binding(t2),d=match[2],x=match[1]; + return join(t1,x,d,remove_min_binding(t2))} + return t1} + return t2} + function concat_or_join(t1,v,d,t2) + {if(d){var d$0=d[1];return join(t1,v,d$0,t2)}return concat(t1,t2)} + function split(x,param) + {if(param) + {var + r=param[4], + d=param[3], + v=param[2], + l=param[1], + c=caml_call2(Ord[1],x,v); + if(0 === c)return [0,l,[0,d],r]; + if(0 <= c) + {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1]; + return [0,join(l,v,d,lr),pres,rr]} + var + match$0=split(x,l), + rl=match$0[3], + pres$0=match$0[2], + ll=match$0[1]; + return [0,ll,pres$0,join(rl,v,d,r)]} + return _Y_} + function merge(f,s1,s2) + {if(s1) + {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1]; + if(height(s2) <= h1) + {var + match=split(v1,s2), + r2=match[3], + d2=match[2], + l2=match[1], + _v7_=merge(f,r1,r2), + _v8_=caml_call3(f,v1,[0,d1],d2); + return concat_or_join(merge(f,l1,l2),v1,_v8_,_v7_)}} + else + if(! s2)return 0; + if(s2) + {var + r2$0=s2[4], + d2$0=s2[3], + v2=s2[2], + l2$0=s2[1], + match$0=split(v2,s1), + r1$0=match$0[3], + d1$0=match$0[2], + l1$0=match$0[1], + _v9_=merge(f,r1$0,r2$0), + _v__=caml_call3(f,v2,d1$0,[0,d2$0]); + return concat_or_join(merge(f,l1$0,l2$0),v2,_v__,_v9_)} + throw [0,Assert_failure,_Z_]} + function union(f,s1,s2) + {if(s1) + {if(s2) + {var + h2=s2[5], + r2=s2[4], + d2=s2[3], + v2=s2[2], + l2=s2[1], + h1=s1[5], + r1=s1[4], + d1=s1[3], + v1=s1[2], + l1=s1[1]; + if(h2 <= h1) + {var + match=split(v1,s2), + r2$0=match[3], + d2$0=match[2], + l2$0=match[1], + l=union(f,l1,l2$0), + r=union(f,r1,r2$0); + if(d2$0) + {var d2$1=d2$0[1]; + return concat_or_join(l,v1,caml_call3(f,v1,d1,d2$1),r)} + return join(l,v1,d1,r)} + var + match$0=split(v2,s1), + r1$0=match$0[3], + d1$0=match$0[2], + l1$0=match$0[1], + l$0=union(f,l1$0,l2), + r$0=union(f,r1$0,r2); + if(d1$0) + {var d1$1=d1$0[1]; + return concat_or_join(l$0,v2,caml_call3(f,v2,d1$1,d2),r$0)} + return join(l$0,v2,d2,r$0)} + var s=s1} + else + var s=s2; + return s} + function filter(p,m) + {if(m) + {var + r=m[4], + d=m[3], + v=m[2], + l=m[1], + l$0=filter(p,l), + pvd=caml_call2(p,v,d), + r$0=filter(p,r); + if(pvd) + {if(l === l$0 && r === r$0)return m;return join(l$0,v,d,r$0)} + return concat(l$0,r$0)} + return 0} + function filter_map(f,param) + {if(param) + {var + r=param[4], + d=param[3], + v=param[2], + l=param[1], + l$0=filter_map(f,l), + fvd=caml_call2(f,v,d), + r$0=filter_map(f,r); + if(fvd){var d$0=fvd[1];return join(l$0,v,d$0,r$0)} + return concat(l$0,r$0)} + return 0} + function partition(p,param) + {if(param) + {var + r=param[4], + d=param[3], + v=param[2], + l=param[1], + match=partition(p,l), + lf=match[2], + lt=match[1], + pvd=caml_call2(p,v,d), + match$0=partition(p,r), + rf=match$0[2], + rt=match$0[1]; + if(pvd){var _v5_=concat(lf,rf);return [0,join(lt,v,d,rt),_v5_]} + var _v6_=join(lf,v,d,rf); + return [0,concat(lt,rt),_v6_]} + return ___} + function cons_enum(m,e) + {var m$0=m,e$0=e; + for(;;) + {if(m$0) + {var + r=m$0[4], + d=m$0[3], + v=m$0[2], + m$1=m$0[1], + e$1=[0,v,d,r,e$0], + m$0=m$1, + e$0=e$1; + continue} + return e$0}} + function compare(cmp,m1,m2) + {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2; + for(;;) + {if(e1) + {if(e2) + {var + e2$0=e2[4], + r2=e2[3], + d2=e2[2], + v2=e2[1], + e1$0=e1[4], + r1=e1[3], + d1=e1[2], + v1=e1[1], + c=caml_call2(Ord[1],v1,v2); + if(0 === c) + {var c$0=caml_call2(cmp,d1,d2); + if(0 === c$0) + {var + e2$1=cons_enum(r2,e2$0), + e1$1=cons_enum(r1,e1$0), + e1=e1$1, + e2=e2$1; + continue} + return c$0} + return c} + return 1} + return e2?-1:0}} + function equal(cmp,m1,m2) + {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2; + for(;;) + {if(e1) + {if(e2) + {var + e2$0=e2[4], + r2=e2[3], + d2=e2[2], + v2=e2[1], + e1$0=e1[4], + r1=e1[3], + d1=e1[2], + v1=e1[1], + _v2_=0 === caml_call2(Ord[1],v1,v2)?1:0; + if(_v2_) + {var _v3_=caml_call2(cmp,d1,d2); + if(_v3_) + {var + e2$1=cons_enum(r2,e2$0), + e1$1=cons_enum(r1,e1$0), + e1=e1$1, + e2=e2$1; + continue} + var _v4_=_v3_} + else + var _v4_=_v2_; + return _v4_} + return 0} + return e2?0:1}} + function cardinal(param) + {if(param) + {var r=param[4],l=param[1],_v1_=cardinal(r); + return (cardinal(l) + 1 | 0) + _v1_ | 0} + return 0} + function bindings_aux(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + r=param$0[4], + d=param$0[3], + v=param$0[2], + l=param$0[1], + accu$1=[0,[0,v,d],bindings_aux(accu$0,r)], + accu$0=accu$1, + param$0=l; + continue} + return accu$0}} + function bindings(s){return bindings_aux(0,s)} + function add_seq(i,m) + {return fold_left + (function(m,param) + {var v=param[2],k=param[1];return add(k,v,m)}, + m, + i)} + function of_seq(i){return add_seq(i,empty)} + function seq_of_enum(c,param) + {if(c) + {var rest=c[4],t=c[3],v=c[2],k=c[1],_vZ_=cons_enum(t,rest); + return [0,[0,k,v],function(_v0_){return seq_of_enum(_vZ_,_v0_)}]} + return 0} + function to_seq(m) + {var _vX_=cons_enum(m,0); + return function(_vY_){return seq_of_enum(_vX_,_vY_)}} + function snoc_enum(s,e) + {var s$0=s,e$0=e; + for(;;) + {if(s$0) + {var + s$1=s$0[4], + d=s$0[3], + v=s$0[2], + l=s$0[1], + e$1=[0,v,d,l,e$0], + s$0=s$1, + e$0=e$1; + continue} + return e$0}} + function rev_seq_of_enum(c,param) + {if(c) + {var rest=c[4],t=c[3],v=c[2],k=c[1],_vV_=snoc_enum(t,rest); + return [0, + [0,k,v], + function(_vW_){return rev_seq_of_enum(_vV_,_vW_)}]} + return 0} + function to_rev_seq(c) + {var _vT_=snoc_enum(c,0); + return function(_vU_){return rev_seq_of_enum(_vT_,_vU_)}} + function to_seq_from(low,m) + {var m$0=m,c=0; + for(;;) + {if(m$0) + {var + r=m$0[4], + d=m$0[3], + v=m$0[2], + l=m$0[1], + n=caml_call2(Ord[1],v,low); + if(0 !== n) + {if(0 <= n){var c$0=[0,v,d,r,c],m$0=l,c=c$0;continue} + var m$0=r; + continue} + var _vR_=[0,v,d,r,c]} + else + var _vR_=c; + return function(_vS_){return seq_of_enum(_vR_,_vS_)}}} + return [0, + empty, + is_empty, + mem, + add, + update, + singleton, + remove, + merge, + union, + compare, + equal, + iter, + fold, + for_all, + exists, + filter, + filter_map, + partition, + cardinal, + bindings, + min_binding, + min_binding_opt, + max_binding, + max_binding_opt, + min_binding, + min_binding_opt, + split, + find, + find_opt, + find_first, + find_first_opt, + find_last, + find_last_opt, + map, + mapi, + to_seq, + to_rev_seq, + to_seq_from, + add_seq, + of_seq]}]; + caml_register_global(802,Stdlib_Map,"Stdlib__Map"); + var Empty=[248,cst_Stdlib_Stack_Empty,caml_fresh_oo_id(0)]; + function create$0(param){return [0,0,0]} + function clear(s){s[1] = 0;s[2] = 0;return 0} + function copy$3(s){return [0,s[1],s[2]]} + function push(x,s){s[1] = [0,x,s[1]];s[2] = s[2] + 1 | 0;return 0} + function pop(s) + {var _vP_=s[1]; + if(_vP_) + {var tl=_vP_[2],hd=_vP_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return hd} + throw Empty} + function pop_opt(s) + {var _vO_=s[1]; + if(_vO_) + {var tl=_vO_[2],hd=_vO_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return [0,hd]} + return 0} + function top(s) + {var _vN_=s[1];if(_vN_){var hd=_vN_[1];return hd}throw Empty} + function top_opt(s) + {var _vM_=s[1];if(_vM_){var hd=_vM_[1];return [0,hd]}return 0} + function is_empty$0(s){return 0 === s[1]?1:0} + function length$2(s){return s[2]} + function iter$7(f,s){return iter$2(f,s[1])} + function fold$2(f,acc,s){return fold_left$0(f,acc,s[1])} + function to_seq$6(s){return to_seq$1(s[1])} + function add_seq(q,i){return iter(function(x){return push(x,q)},i)} + function of_seq$4(g){var s=create$0(0);add_seq(s,g);return s} + var + Stdlib_Stack= + [0, + Empty, + create$0, + push, + pop, + pop_opt, + top, + top_opt, + clear, + copy$3, + is_empty$0, + length$2, + iter$7, + fold$2, + to_seq$6, + add_seq, + of_seq$4]; + caml_register_global(803,Stdlib_Stack,"Stdlib__Stack"); + var Empty$0=[248,cst_Stdlib_Queue_Empty,caml_fresh_oo_id(0)]; + function create$1(param){return [0,0,0,0]} + function clear$0(q){q[1] = 0;q[2] = 0;q[3] = 0;return 0} + function add(x,q) + {var cell=[0,x,0],_vL_=q[3]; + return _vL_ + ?(q[1] = q[1] + 1 | 0,_vL_[2] = cell,q[3] = cell,0) + :(q[1] = 1,q[2] = cell,q[3] = cell,0)} + function peek(q) + {var _vK_=q[2];if(_vK_){var content=_vK_[1];return content}throw Empty$0} + function peek_opt(q) + {var _vJ_=q[2];if(_vJ_){var content=_vJ_[1];return [0,content]}return 0} + function take$0(q) + {var _vH_=q[2]; + if(_vH_) + {var _vI_=_vH_[1]; + if(_vH_[2]) + {var next=_vH_[2];q[1] = q[1] - 1 | 0;q[2] = next;return _vI_} + clear$0(q); + return _vI_} + throw Empty$0} + function take_opt(q) + {var _vF_=q[2]; + if(_vF_) + {var _vG_=_vF_[1]; + if(_vF_[2]) + {var next=_vF_[2];q[1] = q[1] - 1 | 0;q[2] = next;return [0,_vG_]} + clear$0(q); + return [0,_vG_]} + return 0} + function copy$4(q) + {var q_res=[0,q[1],0,0],prev=0,cell=q[2]; + for(;;) + {if(cell) + {var content=cell[1],next=cell[2],res=[0,content,0]; + if(prev)prev[2] = res;else q_res[2] = res; + var prev=res,cell=next; + continue} + q_res[3] = prev; + return q_res}} + function is_empty$1(q){return 0 === q[1]?1:0} + function length$3(q){return q[1]} + function iter$8(f,q) + {var cell=q[2]; + for(;;) + {if(cell) + {var content=cell[1],next=cell[2]; + caml_call1(f,content); + var cell=next; + continue} + return 0}} + function fold$3(f,accu$1,q) + {var accu=accu$1,cell=q[2]; + for(;;) + {if(cell) + {var + content=cell[1], + next=cell[2], + accu$0=caml_call2(f,accu,content), + accu=accu$0, + cell=next; + continue} + return accu}} + function transfer(q1,q2) + {var _vD_=0 < q1[1]?1:0; + if(_vD_) + {var _vE_=q2[3]; + return _vE_ + ?(q2[1] + = + q2[1] + + + q1[1] + | + 0, + _vE_[2] + = + q1[2], + q2[3] + = + q1[3], + clear$0(q1)) + :(q2[1] = q1[1],q2[2] = q1[2],q2[3] = q1[3],clear$0(q1))} + return _vD_} + function to_seq$7(q) + {function aux(c,param) + {if(c) + {var x=c[1],next=c[2]; + return [0,x,function(_vC_){return aux(next,_vC_)}]} + return 0} + var _vA_=q[2]; + return function(_vB_){return aux(_vA_,_vB_)}} + function add_seq$0(q,i){return iter(function(x){return add(x,q)},i)} + function of_seq$5(g){var q=create$1(0);add_seq$0(q,g);return q} + var + Stdlib_Queue= + [0, + Empty$0, + create$1, + add, + add, + take$0, + take_opt, + take$0, + peek, + peek_opt, + peek, + clear$0, + copy$4, + is_empty$1, + length$3, + iter$8, + fold$3, + transfer, + to_seq$7, + add_seq$0, + of_seq$5]; + caml_register_global(804,Stdlib_Queue,"Stdlib__Queue"); + var + Failure$0=[248,cst_Stdlib_Stream_Failure,caml_fresh_oo_id(0)], + Error=[248,cst_Stdlib_Stream_Error,caml_fresh_oo_id(0)]; + function count(param) + {if(param){var match=param[1],count=match[1];return count}return 0} + function data(param) + {if(param){var match=param[1],data=match[2];return data}return 0} + function fill_buff(b) + {b[3] = input(b[1],b[2],0,caml_ml_bytes_length(b[2]));b[4] = 0;return 0} + function get_data(count,d) + {var d$0=d; + for(;;) + {if(typeof d$0 !== "number") + switch(d$0[0]) + {case 1: + var d2=d$0[2],d1=d$0[1],match=get_data(count,d1); + if(typeof match === "number") + {var d$0=d2;continue} + else + {if(0 === match[0]) + {var d11=match[2],a=match[1];return [0,a,[1,d11,d2]]} + throw [0,Assert_failure,_$_]} + case 2: + var + f=d$0[1], + _vw_=caml_obj_tag(f), + d$1=250 === _vw_?f[1]:246 === _vw_?force_lazy_block(f):f, + d$0=d$1; + continue; + case 3: + var _vx_=d$0[1],_vy_=_vx_[1]; + if(_vy_) + {var _vz_=_vy_[1]; + if(_vz_){var a$0=_vz_[1];_vx_[1] = 0;return [0,a$0,d$0]} + return 0} + var match$0=caml_call1(_vx_[2],count); + if(match$0){var a$1=match$0[1];return [0,a$1,d$0]} + _vx_[1] = _aa_; + return 0; + case 4: + var b=d$0[1]; + if(b[3] <= b[4])fill_buff(b); + if(0 === b[3])return 0; + var r=caml_bytes_unsafe_get(b[2],b[4]); + b[4] = b[4] + 1 | 0; + return [0,r,d$0] + } + return d$0}} + function peek_data(s) + {for(;;) + {var _vr_=s[2]; + if(typeof _vr_ === "number") + return 0; + else + switch(_vr_[0]) + {case 0:var a=_vr_[1];return [0,a]; + case 1: + var d=get_data(s[1],s[2]); + if(typeof d === "number") + return 0; + else + {if(0 === d[0]){var a$0=d[1];s[2] = d;return [0,a$0]} + throw [0,Assert_failure,_ab_]} + case 2: + var + f=_vr_[1], + _vs_=caml_obj_tag(f), + _vt_=250 === _vs_?f[1]:246 === _vs_?force_lazy_block(f):f; + s[2] = _vt_; + continue; + case 3: + var _vu_=_vr_[1],_vv_=_vu_[1]; + if(_vv_){var a$1=_vv_[1];return a$1} + var x=caml_call1(_vu_[2],s[1]); + _vu_[1] = [0,x]; + return x; + default: + var b=_vr_[1]; + if(b[3] <= b[4])fill_buff(b); + return 0 === b[3] + ?(s[2] = 0,0) + :[0,caml_bytes_unsafe_get(b[2],b[4])]}}} + function peek$0(param) + {if(param){var s=param[1];return peek_data(s)}return 0} + function junk_data(s) + {for(;;) + {var _vp_=s[2]; + if(typeof _vp_ !== "number") + switch(_vp_[0]) + {case 0:var d=_vp_[2];s[1] = s[1] + 1 | 0;s[2] = d;return 0; + case 3: + var _vq_=_vp_[1]; + if(_vq_[1]){s[1] = s[1] + 1 | 0;_vq_[1] = 0;return 0} + break; + case 4: + var b=_vp_[1]; + if(b[3] <= b[4])fill_buff(b); + return 0 === b[3] + ?(s[2] = 0,0) + :(s[1] = s[1] + 1 | 0,b[4] = b[4] + 1 | 0,0) + } + var match=peek_data(s); + if(match)continue; + return 0}} + function junk(param) + {if(param){var data=param[1];return junk_data(data)}return 0} + function nget_data(n,s) + {if(0 < n) + {var match=peek_data(s); + if(match) + {var a=match[1]; + junk_data(s); + var + match$0=nget_data(n - 1 | 0,s), + k=match$0[3], + d=match$0[2], + al=match$0[1]; + return [0,[0,a,al],[0,a,d],k + 1 | 0]} + return [0,0,s[2],0]} + return [0,0,s[2],0]} + function npeek(n,param) + {if(param) + {var + d$0=param[1], + match=nget_data(n,d$0), + len=match[3], + d=match[2], + al=match[1]; + d$0[1] = d$0[1] - len | 0; + d$0[2] = d; + return al} + return 0} + function next(s) + {var match=peek$0(s); + if(match){var a=match[1];junk(s);return a} + throw Failure$0} + function empty$2(s){var match=peek$0(s);if(match)throw Failure$0;return 0} + function iter$9(f,strm) + {for(;;) + {var match=peek$0(strm); + if(match){var a=match[1];junk(strm);caml_call1(f,a);continue} + return 0}} + function from(f){return [0,[0,0,[3,[0,0,f]]]]} + function of_list$1(l) + {var _vo_=0; + return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_vo_)]]} + function of_string(s) + {var count=[0,0]; + return from + (function(param) + {var c=count[1]; + return c < caml_ml_string_length(s) + ?(count[1]++,[0,caml_string_get(s,c)]) + :0})} + function of_bytes$0(s) + {var count=[0,0]; + return from + (function(param) + {var c=count[1]; + return c < caml_ml_bytes_length(s) + ?(count[1]++,[0,caml_bytes_get(s,c)]) + :0})} + function of_channel(ic) + {return [0,[0,0,[4,[0,ic,caml_create_bytes(4096),0,0]]]]} + function iapp(i,s){var _vn_=data(s);return [0,[0,0,[1,data(i),_vn_]]]} + function icons(i,s){return [0,[0,0,[0,i,data(s)]]]} + function ising(i){return [0,[0,0,[0,i,0]]]} + function lapp(f,s) + {return [0, + [0, + 0, + [2, + [246, + function(_vl_) + {var _vm_=data(s);return [1,data(caml_call1(f,0)),_vm_]}]]]]} + function lcons(f,s) + {return [0, + [0, + 0, + [2, + [246, + function(_vj_) + {var _vk_=data(s);return [0,caml_call1(f,0),_vk_]}]]]]} + function lsing(f) + {return [0,[0,0,[2,[246,function(_vi_){return [0,caml_call1(f,0),0]}]]]]} + var sempty=0; + function slazy(f) + {return [0,[0,0,[2,[246,function(_vh_){return data(caml_call1(f,0))}]]]]} + function dump_data(f,param) + {if(typeof param === "number") + return print_string(cst_Sempty); + else + switch(param[0]) + {case 0: + var d=param[2],a=param[1]; + print_string(cst_Scons); + caml_call1(f,a); + print_string(cst$7); + dump_data(f,d); + return print_string(cst$8); + case 1: + var d2=param[2],d1=param[1]; + print_string(cst_Sapp); + dump_data(f,d1); + print_string(cst$9); + dump_data(f,d2); + return print_string(cst$10); + case 2:return print_string(cst_Slazy); + case 3:return print_string(cst_Sgen); + default:return print_string(cst_Sbuffio)}} + function dump(f,s) + {print_string(cst_count); + print_int(count(s)); + print_string(cst_data); + dump_data(f,data(s)); + print_string(cst$6); + return print_newline(0)} + var + Stdlib_Stream= + [0, + Failure$0, + Error, + from, + of_list$1, + of_string, + of_bytes$0, + of_channel, + iter$9, + next, + empty$2, + peek$0, + junk, + count, + npeek, + iapp, + icons, + ising, + lapp, + lcons, + lsing, + sempty, + slazy, + dump]; + caml_register_global(805,Stdlib_Stream,"Stdlib__Stream"); + function create$2(n) + {var + n$0=1 <= n?n:1, + n$1=max_string_length < n$0?max_string_length:n$0, + s=caml_create_bytes(n$1); + return [0,s,0,n$1,s]} + function contents(b){return sub_string(b[1],0,b[2])} + function to_bytes$0(b){return sub(b[1],0,b[2])} + function sub$3(b,ofs,len) + {if(0 <= ofs && 0 <= len && ! ((b[2] - len | 0) < ofs)) + return sub_string(b[1],ofs,len); + return invalid_arg(cst_Buffer_sub)} + function blit$3(src,srcoff,dst,dstoff,len) + {if + (0 + <= + len + && + 0 + <= + srcoff + && + ! + ((src[2] - len | 0) < srcoff) + && + 0 + <= + dstoff + && + ! + ((caml_ml_bytes_length(dst) - len | 0) < dstoff)) + return caml_blit_bytes(src[1],srcoff,dst,dstoff,len); + return invalid_arg(cst_Buffer_blit)} + function nth$0(b,ofs) + {if(0 <= ofs && ! (b[2] <= ofs))return caml_bytes_unsafe_get(b[1],ofs); + return invalid_arg(cst_Buffer_nth)} + function length$4(b){return b[2]} + function clear$1(b){b[2] = 0;return 0} + function reset(b) + {b[2] = 0;b[1] = b[4];b[3] = caml_ml_bytes_length(b[1]);return 0} + function resize(b,more) + {var old_pos=b[2],old_len=b[3],new_len=[0,old_len]; + for(;;) + {if(new_len[1] < (old_pos + more | 0)) + {new_len[1] = 2 * new_len[1] | 0;continue} + if(max_string_length < new_len[1]) + if((old_pos + more | 0) <= max_string_length) + new_len[1] = max_string_length; + else + failwith(cst_Buffer_add_cannot_grow_buf); + var new_buffer=caml_create_bytes(new_len[1]); + blit(b[1],0,new_buffer,0,b[2]); + b[1] = new_buffer; + b[3] = new_len[1]; + if((b[2] + more | 0) <= b[3]) + {if((old_pos + more | 0) <= b[3])return 0; + throw [0,Assert_failure,_ac_]} + throw [0,Assert_failure,_ad_]}} + function add_char(b,c) + {var pos=b[2]; + if(b[3] <= pos)resize(b,1); + caml_bytes_unsafe_set(b[1],pos,c); + b[2] = pos + 1 | 0; + return 0} + var uchar_utf_8_byte_length_max=4,uchar_utf_16_byte_length_max=4; + function add_utf_8_uchar(b,u) + {for(;;) + {var pos=b[2]; + if(b[3] <= pos)resize(b,uchar_utf_8_byte_length_max); + var n=set_utf_8_uchar(b[1],pos,u); + if(0 === n){resize(b,uchar_utf_8_byte_length_max);continue} + b[2] = pos + n | 0; + return 0}} + function add_utf_16be_uchar(b,u) + {for(;;) + {var pos=b[2]; + if(b[3] <= pos)resize(b,uchar_utf_16_byte_length_max); + var n=set_utf_16be_uchar(b[1],pos,u); + if(0 === n){resize(b,uchar_utf_16_byte_length_max);continue} + b[2] = pos + n | 0; + return 0}} + function add_utf_16le_uchar(b,u) + {for(;;) + {var pos=b[2]; + if(b[3] <= pos)resize(b,uchar_utf_16_byte_length_max); + var n=set_utf_16le_uchar(b[1],pos,u); + if(0 === n){resize(b,uchar_utf_16_byte_length_max);continue} + b[2] = pos + n | 0; + return 0}} + function add_substring(b,s,offset,len) + {var _ve_=offset < 0?1:0; + if(_ve_) + var _vf_=_ve_; + else + var + _vg_=len < 0?1:0, + _vf_=_vg_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0); + if(_vf_)invalid_arg(cst_Buffer_add_substring_add_s); + var new_position=b[2] + len | 0; + if(b[3] < new_position)resize(b,len); + caml_blit_string(s,offset,b[1],b[2],len); + b[2] = new_position; + return 0} + function add_subbytes(b,s,offset,len) + {return add_substring(b,caml_string_of_bytes(s),offset,len)} + function add_string(b,s) + {var len=caml_ml_string_length(s),new_position=b[2] + len | 0; + if(b[3] < new_position)resize(b,len); + caml_blit_string(s,0,b[1],b[2],len); + b[2] = new_position; + return 0} + function add_bytes(b,s){return add_string(b,caml_string_of_bytes(s))} + function add_buffer(b,bs){return add_subbytes(b,bs[1],0,bs[2])} + function add_channel(b,ic,len) + {var _vc_=len < 0?1:0,_vd_=_vc_ || (max_string_length < len?1:0); + if(_vd_)invalid_arg(cst_Buffer_add_channel); + if(b[3] < (b[2] + len | 0))resize(b,len); + var already_read=0,ofs=b[2],to_read=len,_vb_=b[1]; + for(;;) + {if(0 !== to_read) + {var r=input(ic,_vb_,ofs,to_read); + if(0 !== r) + {var + already_read$0=already_read + r | 0, + ofs$0=ofs + r | 0, + to_read$0=to_read - r | 0, + already_read=already_read$0, + ofs=ofs$0, + to_read=to_read$0; + continue}} + if((b[2] + already_read | 0) <= b[3]) + {b[2] = b[2] + already_read | 0; + if(already_read < len)throw End_of_file; + return 0} + throw [0,Assert_failure,_ae_]}} + function output_buffer(oc,b){return output(oc,b[1],0,b[2])} + function add_substitute(b,f,s) + {var lim$1=caml_ml_string_length(s),previous=32,i$7=0; + for(;;) + {if(i$7 < lim$1) + {var current=caml_string_get(s,i$7); + if(36 === current) + {if(92 === previous) + {add_char(b,current); + var i$8=i$7 + 1 | 0,previous=32,i$7=i$8; + continue} + var start=i$7 + 1 | 0; + if(lim$1 <= start)throw Not_found; + var opening=caml_string_get(s,start),switch$0=0; + if(40 !== opening && 123 !== opening) + {var i$6=start + 1 | 0,lim$0=caml_ml_string_length(s),i$3=i$6; + for(;;) + {if(lim$0 <= i$3) + var stop=lim$0; + else + {var match=caml_string_get(s,i$3),switch$1=0; + if(91 <= match) + {if(97 <= match) + {if(! (123 <= match))switch$1 = 1} + else + if(95 === match)switch$1 = 1} + else + if(58 <= match) + {if(65 <= match)switch$1 = 1} + else + if(48 <= match)switch$1 = 1; + if(switch$1){var i$4=i$3 + 1 | 0,i$3=i$4;continue} + var stop=i$3} + var match$0=[0,sub$0(s,start,stop - start | 0),stop]; + switch$0 = 1; + break}} + if(! switch$0) + {var i$5=start + 1 | 0,k$2=0; + if(40 === opening) + var _u$_=41; + else + {if(123 !== opening)throw [0,Assert_failure,_af_];var _u$_=125} + var lim=caml_ml_string_length(s),k=k$2,i=i$5; + for(;;) + {if(lim <= i)throw Not_found; + if(caml_string_get(s,i) === opening) + {var i$0=i + 1 | 0,k$0=k + 1 | 0,k=k$0,i=i$0;continue} + if(caml_string_get(s,i) !== _u$_) + {var i$2=i + 1 | 0,i=i$2;continue} + if(0 !== k) + {var i$1=i + 1 | 0,k$1=k - 1 | 0,k=k$1,i=i$1;continue} + var + match$0= + [0,sub$0(s,i$5,(i - start | 0) - 1 | 0),i + 1 | 0]; + break}} + var next_i=match$0[2],ident=match$0[1]; + add_string(b,caml_call1(f,ident)); + var previous=32,i$7=next_i; + continue} + if(92 === previous) + {add_char(b,92); + add_char(b,current); + var i$9=i$7 + 1 | 0,previous=32,i$7=i$9; + continue} + if(92 === current) + {var i$10=i$7 + 1 | 0,previous=current,i$7=i$10;continue} + add_char(b,current); + var i$11=i$7 + 1 | 0,previous=current,i$7=i$11; + continue} + var _va_=92 === previous?1:0; + return _va_?add_char(b,previous):_va_}} + function truncate(b,len) + {if(0 <= len && ! (b[2] < len)){b[2] = len;return 0} + return invalid_arg(cst_Buffer_truncate)} + function to_seq$8(b) + {function aux(i,param) + {if(b[2] <= i)return 0; + var x=caml_bytes_unsafe_get(b[1],i),_u9_=i + 1 | 0; + return [0,x,function(_u__){return aux(_u9_,_u__)}]} + var _u7_=0; + return function(_u8_){return aux(_u7_,_u8_)}} + function to_seqi$3(b) + {function aux(i,param) + {if(b[2] <= i)return 0; + var x=caml_bytes_unsafe_get(b[1],i),_u5_=i + 1 | 0; + return [0,[0,i,x],function(_u6_){return aux(_u5_,_u6_)}]} + var _u3_=0; + return function(_u4_){return aux(_u3_,_u4_)}} + function add_seq$1(b,seq) + {return iter(function(_u2_){return add_char(b,_u2_)},seq)} + function of_seq$6(i){var b=create$2(32);add_seq$1(b,i);return b} + function add_int8(b,x) + {var new_position=b[2] + 1 | 0; + if(b[3] < new_position)resize(b,1); + caml_bytes_unsafe_set(b[1],b[2],x); + b[2] = new_position; + return 0} + function add_int16_ne(b,x) + {var new_position=b[2] + 2 | 0; + if(b[3] < new_position)resize(b,2); + caml_bytes_set16(b[1],b[2],x); + b[2] = new_position; + return 0} + function add_int32_ne(b,x) + {var new_position=b[2] + 4 | 0; + if(b[3] < new_position)resize(b,4); + caml_bytes_set32(b[1],b[2],x); + b[2] = new_position; + return 0} + function add_int64_ne(b,x) + {var new_position=b[2] + 8 | 0; + if(b[3] < new_position)resize(b,8); + caml_bytes_set64(b[1],b[2],x); + b[2] = new_position; + return 0} + function add_int16_le(b,x){return add_int16_ne(b,x)} + function add_int16_be(b,x) + {var x$0=caml_bswap16(x);return add_int16_ne(b,x$0)} + function add_int32_le(b,x){return add_int32_ne(b,x)} + function add_int32_be(b,x) + {var x$0=caml_int32_bswap(x);return add_int32_ne(b,x$0)} + function add_int64_le(b,x){return add_int64_ne(b,x)} + function add_int64_be(b,x) + {var x$0=caml_int64_bswap(x);return add_int64_ne(b,x$0)} + var + Stdlib_Buffer= + [0, + create$2, + contents, + to_bytes$0, + sub$3, + blit$3, + nth$0, + length$4, + clear$1, + reset, + output_buffer, + truncate, + add_char, + add_utf_8_uchar, + add_utf_16le_uchar, + add_utf_16be_uchar, + add_string, + add_bytes, + add_substring, + add_subbytes, + add_substitute, + add_buffer, + add_channel, + to_seq$8, + to_seqi$3, + add_seq$1, + of_seq$6, + add_int8, + add_int8, + add_int16_ne, + add_int16_be, + add_int16_le, + add_int16_ne, + add_int16_be, + add_int16_le, + add_int32_ne, + add_int32_be, + add_int32_le, + add_int64_ne, + add_int64_be, + add_int64_le]; + caml_register_global(806,Stdlib_Buffer,"Stdlib__Buffer"); + function create_char_set(param){return make$0(32,0)} + function add_in_char_set(char_set,c) + {var str_ind=c >>> 3 | 0,mask=1 << (c & 7); + return caml_bytes_set + (char_set, + str_ind, + char_of_int(caml_bytes_get(char_set,str_ind) | mask))} + function freeze_char_set(char_set){return of_bytes(char_set)} + function rev_char_set(char_set) + {var char_set$0=create_char_set(0),i=0; + for(;;) + {caml_bytes_set + (char_set$0,i,char_of_int(caml_string_get(char_set,i) ^ 255)); + var _u1_=i + 1 | 0; + if(31 !== i){var i=_u1_;continue} + return caml_string_of_bytes(char_set$0)}} + function is_in_char_set(char_set,c) + {var str_ind=c >>> 3 | 0,mask=1 << (c & 7); + return 0 !== (caml_string_get(char_set,str_ind) & mask)?1:0} + function pad_of_pad_opt(pad_opt) + {if(pad_opt){var width=pad_opt[1];return [0,1,width]}return 0} + function param_format_of_ignored_format(ign,fmt) + {if(typeof ign === "number") + switch(ign) + {case 0:return [0,[0,fmt]]; + case 1:return [0,[1,fmt]]; + case 2:return [0,[19,fmt]]; + default:return [0,[22,fmt]]} + else + switch(ign[0]) + {case 0:var pad_opt=ign[1];return [0,[2,pad_of_pad_opt(pad_opt),fmt]]; + case 1: + var pad_opt$0=ign[1];return [0,[3,pad_of_pad_opt(pad_opt$0),fmt]]; + case 2: + var pad_opt$1=ign[2],iconv=ign[1]; + return [0,[4,iconv,pad_of_pad_opt(pad_opt$1),0,fmt]]; + case 3: + var pad_opt$2=ign[2],iconv$0=ign[1]; + return [0,[5,iconv$0,pad_of_pad_opt(pad_opt$2),0,fmt]]; + case 4: + var pad_opt$3=ign[2],iconv$1=ign[1]; + return [0,[6,iconv$1,pad_of_pad_opt(pad_opt$3),0,fmt]]; + case 5: + var pad_opt$4=ign[2],iconv$2=ign[1]; + return [0,[7,iconv$2,pad_of_pad_opt(pad_opt$4),0,fmt]]; + case 6: + var prec_opt=ign[2],pad_opt$5=ign[1]; + if(prec_opt)var ndec=prec_opt[1],_u0_=[0,ndec];else var _u0_=0; + return [0,[8,_ag_,pad_of_pad_opt(pad_opt$5),_u0_,fmt]]; + case 7: + var pad_opt$6=ign[1];return [0,[9,pad_of_pad_opt(pad_opt$6),fmt]]; + case 8: + var fmtty=ign[2],pad_opt$7=ign[1]; + return [0,[13,pad_opt$7,fmtty,fmt]]; + case 9: + var fmtty$0=ign[2],pad_opt$8=ign[1]; + return [0,[14,pad_opt$8,fmtty$0,fmt]]; + case 10: + var char_set=ign[2],width_opt=ign[1]; + return [0,[20,width_opt,char_set,fmt]]; + default:var counter=ign[1];return [0,[21,counter,fmt]]}} + function default_float_precision(fconv){return 5 === fconv[2]?12:-6} + function buffer_create(init_size) + {return [0,0,caml_create_bytes(init_size)]} + function buffer_check_size(buf,overhead) + {var + len=caml_ml_bytes_length(buf[2]), + min_len=buf[1] + overhead | 0, + _uY_=len < min_len?1:0; + if(_uY_) + {var + new_len=max$1(len * 2 | 0,min_len), + new_str=caml_create_bytes(new_len); + blit(buf[2],0,new_str,0,len); + buf[2] = new_str; + var _uZ_=0} + else + var _uZ_=_uY_; + return _uZ_} + function buffer_add_char(buf,c) + {buffer_check_size(buf,1); + caml_bytes_set(buf[2],buf[1],c); + buf[1] = buf[1] + 1 | 0; + return 0} + function buffer_add_string(buf,s) + {var str_len=caml_ml_string_length(s); + buffer_check_size(buf,str_len); + blit$0(s,0,buf[2],buf[1],str_len); + buf[1] = buf[1] + str_len | 0; + return 0} + function buffer_contents(buf){return sub_string(buf[2],0,buf[1])} + function char_of_iconv(iconv) + {switch(iconv) + {case 6: + case 7:return 120; + case 8: + case 9:return 88; + case 10: + case 11:return 111; + case 12: + case 15:return 117; + case 0: + case 1: + case 2: + case 13:return 100; + default:return 105}} + function char_of_fconv(opt,fconv) + {if(opt)var sth=opt[1],cF=sth;else var cF=70; + switch(fconv[2]) + {case 0:return 102; + case 1:return 101; + case 2:return 69; + case 3:return 103; + case 4:return 71; + case 5:return cF; + case 6:return 104; + case 7:return 72; + default:return 70}} + function bprint_padty(buf,padty) + {switch(padty) + {case 0:return buffer_add_char(buf,45); + case 1:return 0; + default:return buffer_add_char(buf,48)}} + function bprint_ignored_flag(buf,ign_flag) + {return ign_flag?buffer_add_char(buf,95):ign_flag} + function bprint_pad_opt(buf,pad_opt) + {if(pad_opt) + {var width=pad_opt[1]; + return buffer_add_string(buf,caml_string_of_jsbytes("" + width))} + return 0} + function bprint_padding(buf,pad) + {if(typeof pad === "number") + return 0; + else + {if(0 === pad[0]) + {var n=pad[2],padty=pad[1]; + bprint_padty(buf,padty); + return buffer_add_string(buf,caml_string_of_jsbytes("" + n))} + var padty$0=pad[1]; + bprint_padty(buf,padty$0); + return buffer_add_char(buf,42)}} + function bprint_precision(buf,prec) + {if(typeof prec === "number")return prec?buffer_add_string(buf,cst$11):0; + var n=prec[1]; + buffer_add_char(buf,46); + return buffer_add_string(buf,caml_string_of_jsbytes("" + n))} + function bprint_iconv_flag(buf,iconv) + {switch(iconv) + {case 1: + case 4:return buffer_add_char(buf,43); + case 2: + case 5:return buffer_add_char(buf,32); + case 7: + case 9: + case 11: + case 13: + case 14: + case 15:return buffer_add_char(buf,35); + default:return 0}} + function bprint_altint_fmt(buf,ign_flag,iconv,pad,prec,c) + {buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag); + bprint_iconv_flag(buf,iconv); + bprint_padding(buf,pad); + bprint_precision(buf,prec); + buffer_add_char(buf,c); + return buffer_add_char(buf,char_of_iconv(iconv))} + function bprint_fconv_flag(buf,fconv) + {switch(fconv[1]) + {case 0:break; + case 1:buffer_add_char(buf,43);break; + default:buffer_add_char(buf,32)} + return 8 <= fconv[2]?buffer_add_char(buf,35):0} + function string_of_formatting_lit(formatting_lit) + {if(typeof formatting_lit === "number") + switch(formatting_lit) + {case 0:return cst$12; + case 1:return cst$13; + case 2:return cst$14; + case 3:return cst$15; + case 4:return cst$16; + case 5:return cst$17; + default:return cst$18} + else + switch(formatting_lit[0]) + {case 0:var str=formatting_lit[1];return str; + case 1:var str$0=formatting_lit[1];return str$0; + default:var c=formatting_lit[1];return cat(cst$19,make$1(1,c))}} + function bprint_char_literal(buf,chr) + {return 37 === chr?buffer_add_string(buf,cst$20):buffer_add_char(buf,chr)} + function bprint_string_literal(buf,str) + {var _uW_=caml_ml_string_length(str) - 1 | 0,_uV_=0; + if(! (_uW_ < 0)) + {var i=_uV_; + for(;;) + {bprint_char_literal(buf,caml_string_get(str,i)); + var _uX_=i + 1 | 0; + if(_uW_ !== i){var i=_uX_;continue} + break}} + return 0} + function bprint_fmtty(buf,fmtty) + {var fmtty$0=fmtty; + for(;;) + if(typeof fmtty$0 === "number") + return 0; + else + switch(fmtty$0[0]) + {case 0: + var rest=fmtty$0[1]; + buffer_add_string(buf,cst_c); + var fmtty$0=rest; + continue; + case 1: + var rest$0=fmtty$0[1]; + buffer_add_string(buf,cst_s); + var fmtty$0=rest$0; + continue; + case 2: + var rest$1=fmtty$0[1]; + buffer_add_string(buf,cst_i); + var fmtty$0=rest$1; + continue; + case 3: + var rest$2=fmtty$0[1]; + buffer_add_string(buf,cst_li); + var fmtty$0=rest$2; + continue; + case 4: + var rest$3=fmtty$0[1]; + buffer_add_string(buf,cst_ni); + var fmtty$0=rest$3; + continue; + case 5: + var rest$4=fmtty$0[1]; + buffer_add_string(buf,cst_Li); + var fmtty$0=rest$4; + continue; + case 6: + var rest$5=fmtty$0[1]; + buffer_add_string(buf,cst_f); + var fmtty$0=rest$5; + continue; + case 7: + var rest$6=fmtty$0[1]; + buffer_add_string(buf,cst_B); + var fmtty$0=rest$6; + continue; + case 8: + var rest$7=fmtty$0[2],sub_fmtty=fmtty$0[1]; + buffer_add_string(buf,cst$21); + bprint_fmtty(buf,sub_fmtty); + buffer_add_string(buf,cst$22); + var fmtty$0=rest$7; + continue; + case 9: + var rest$8=fmtty$0[3],sub_fmtty$0=fmtty$0[1]; + buffer_add_string(buf,cst$23); + bprint_fmtty(buf,sub_fmtty$0); + buffer_add_string(buf,cst$24); + var fmtty$0=rest$8; + continue; + case 10: + var rest$9=fmtty$0[1]; + buffer_add_string(buf,cst_a); + var fmtty$0=rest$9; + continue; + case 11: + var rest$10=fmtty$0[1]; + buffer_add_string(buf,cst_t$0); + var fmtty$0=rest$10; + continue; + case 12: + var rest$11=fmtty$0[1]; + buffer_add_string(buf,cst$25); + var fmtty$0=rest$11; + continue; + case 13: + var rest$12=fmtty$0[1]; + buffer_add_string(buf,cst_r$0); + var fmtty$0=rest$12; + continue; + default: + var rest$13=fmtty$0[1]; + buffer_add_string(buf,cst_r$1); + var fmtty$0=rest$13; + continue}} + function int_of_custom_arity(param) + {if(param){var x=param[1];return 1 + int_of_custom_arity(x) | 0}return 0} + function string_of_fmt(fmt) + {var buf=buffer_create(16); + function fmtiter(fmt,ign_flag) + {var fmt$0=fmt,ign_flag$0=ign_flag; + a: + for(;;) + if(typeof fmt$0 === "number") + return 0; + else + switch(fmt$0[0]) + {case 0: + var rest=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,99); + var fmt$0=rest,ign_flag$0=0; + continue; + case 1: + var rest$0=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,67); + var fmt$0=rest$0,ign_flag$0=0; + continue; + case 2: + var rest$1=fmt$0[2],pad=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_padding(buf,pad); + buffer_add_char(buf,115); + var fmt$0=rest$1,ign_flag$0=0; + continue; + case 3: + var rest$2=fmt$0[2],pad$0=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_padding(buf,pad$0); + buffer_add_char(buf,83); + var fmt$0=rest$2,ign_flag$0=0; + continue; + case 4: + var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_iconv_flag(buf,iconv); + bprint_padding(buf,pad$1); + bprint_precision(buf,prec); + buffer_add_char(buf,char_of_iconv(iconv)); + var fmt$0=rest$3,ign_flag$0=0; + continue; + case 5: + var + rest$4=fmt$0[4], + prec$0=fmt$0[3], + pad$2=fmt$0[2], + iconv$0=fmt$0[1]; + bprint_altint_fmt(buf,ign_flag$0,iconv$0,pad$2,prec$0,108); + var fmt$0=rest$4,ign_flag$0=0; + continue; + case 6: + var + rest$5=fmt$0[4], + prec$1=fmt$0[3], + pad$3=fmt$0[2], + iconv$1=fmt$0[1]; + bprint_altint_fmt(buf,ign_flag$0,iconv$1,pad$3,prec$1,110); + var fmt$0=rest$5,ign_flag$0=0; + continue; + case 7: + var + rest$6=fmt$0[4], + prec$2=fmt$0[3], + pad$4=fmt$0[2], + iconv$2=fmt$0[1]; + bprint_altint_fmt(buf,ign_flag$0,iconv$2,pad$4,prec$2,76); + var fmt$0=rest$6,ign_flag$0=0; + continue; + case 8: + var + rest$7=fmt$0[4], + prec$3=fmt$0[3], + pad$5=fmt$0[2], + fconv=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_fconv_flag(buf,fconv); + bprint_padding(buf,pad$5); + bprint_precision(buf,prec$3); + buffer_add_char(buf,char_of_fconv(0,fconv)); + var fmt$0=rest$7,ign_flag$0=0; + continue; + case 9: + var rest$8=fmt$0[2],pad$6=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_padding(buf,pad$6); + buffer_add_char(buf,66); + var fmt$0=rest$8,ign_flag$0=0; + continue; + case 10: + var rest$9=fmt$0[1]; + buffer_add_string(buf,cst$26); + var fmt$0=rest$9; + continue; + case 11: + var rest$10=fmt$0[2],str=fmt$0[1]; + bprint_string_literal(buf,str); + var fmt$0=rest$10; + continue; + case 12: + var rest$11=fmt$0[2],chr$0=fmt$0[1]; + bprint_char_literal(buf,chr$0); + var fmt$0=rest$11; + continue; + case 13: + var rest$12=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_pad_opt(buf,pad_opt); + buffer_add_char(buf,123); + bprint_fmtty(buf,fmtty); + buffer_add_char(buf,37); + buffer_add_char(buf,125); + var fmt$0=rest$12,ign_flag$0=0; + continue; + case 14: + var rest$13=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_pad_opt(buf,pad_opt$0); + buffer_add_char(buf,40); + bprint_fmtty(buf,fmtty$0); + buffer_add_char(buf,37); + buffer_add_char(buf,41); + var fmt$0=rest$13,ign_flag$0=0; + continue; + case 15: + var rest$14=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,97); + var fmt$0=rest$14,ign_flag$0=0; + continue; + case 16: + var rest$15=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,116); + var fmt$0=rest$15,ign_flag$0=0; + continue; + case 17: + var rest$16=fmt$0[2],fmting_lit=fmt$0[1]; + bprint_string_literal(buf,string_of_formatting_lit(fmting_lit)); + var fmt$0=rest$16; + continue; + case 18: + var rest$17=fmt$0[2],fmting_gen=fmt$0[1]; + if(0 === fmting_gen[0]) + {var match$1=fmting_gen[1],str$0=match$1[2]; + buffer_add_string(buf,cst$27); + buffer_add_string(buf,str$0)} + else + {var match$2=fmting_gen[1],str$1=match$2[2]; + buffer_add_string(buf,cst$28); + buffer_add_string(buf,str$1)} + var fmt$0=rest$17; + continue; + case 19: + var rest$18=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,114); + var fmt$0=rest$18,ign_flag$0=0; + continue; + case 20: + var rest$19=fmt$0[3],char_set=fmt$0[2],width_opt=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_pad_opt(buf,width_opt); + var + print_char= + function(buf,i) + {var c=char_of_int(i); + return 37 === c + ?(buffer_add_char(buf,37),buffer_add_char(buf,37)) + :64 === c + ?(buffer_add_char(buf,37),buffer_add_char(buf,64)) + :buffer_add_char(buf,c)}; + buffer_add_char(buf,91); + var + _uL_= + is_in_char_set(char_set,0) + ?(buffer_add_char(buf,94),rev_char_set(char_set)) + :char_set, + is_alone$0= + function(_uQ_) + {function is_alone(c) + {var + after=chr(c + 1 | 0), + before=chr(c - 1 | 0), + _uR_=is_in_char_set(_uQ_,c); + if(_uR_) + var + _uS_=is_in_char_set(_uQ_,before), + _uT_=_uS_?is_in_char_set(_uQ_,after):_uS_, + _uU_=1 - _uT_; + else + var _uU_=_uR_; + return _uU_} + return is_alone}, + is_alone=is_alone$0(_uL_); + if(is_alone(93))buffer_add_char(buf,93); + var i=1; + b: + for(;;) + {if(i < 256) + {if(! is_in_char_set(_uL_,char_of_int(i))) + {var i$0=i + 1 | 0,i=i$0;continue} + var match=char_of_int(i),switcher=match - 45 | 0,switch$0=0; + if(48 < switcher >>> 0) + if(210 <= switcher)print_char(buf,255);else switch$0 = 1; + else + {if(46 < switcher - 1 >>> 0) + {var i$2=i + 1 | 0,i=i$2;continue} + switch$0 = 1} + if(switch$0) + {var i$1=i + 1 | 0; + if(! is_in_char_set(_uL_,char_of_int(i$1))) + {print_char(buf,i$1 - 1 | 0); + var i$6=i$1 + 1 | 0,i=i$6; + continue} + var + match$0=char_of_int(i$1), + switcher$0=match$0 - 45 | 0, + switch$1=0; + if(48 < switcher$0 >>> 0) + if(210 <= switcher$0) + {print_char(buf,254);print_char(buf,255)} + else + switch$1 = 1; + else + if(46 < switcher$0 - 1 >>> 0) + {if(! is_in_char_set(_uL_,char_of_int(i$1 + 1 | 0))) + {print_char(buf,i$1 - 1 | 0); + var i$5=i$1 + 1 | 0,i=i$5; + continue} + switch$1 = 1} + else + switch$1 = 1; + if(switch$1) + {if(! is_in_char_set(_uL_,char_of_int(i$1 + 1 | 0))) + {print_char(buf,i$1 - 1 | 0); + print_char(buf,i$1); + var i$4=i$1 + 2 | 0,i=i$4; + continue} + var j=i$1 + 2 | 0,i$3=i$1 - 1 | 0,j$0=j; + for(;;) + {if(256 !== j$0 && is_in_char_set(_uL_,char_of_int(j$0))) + {var j$1=j$0 + 1 | 0,j$0=j$1;continue} + print_char(buf,i$3); + print_char(buf,45); + print_char(buf,j$0 - 1 | 0); + if(j$0 < 256){var i$7=j$0 + 1 | 0,i=i$7;continue b} + break}}}} + if(is_alone(45))buffer_add_char(buf,45); + buffer_add_char(buf,93); + var fmt$0=rest$19,ign_flag$0=0; + continue a} + case 21: + var rest$20=fmt$0[2],counter=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + switch(counter) + {case 0:var _uM_=108;break; + case 1:var _uM_=110;break; + default:var _uM_=78} + buffer_add_char(buf,_uM_); + var fmt$0=rest$20,ign_flag$0=0; + continue; + case 22: + var rest$21=fmt$0[1]; + buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + bprint_string_literal(buf,cst_0c); + var fmt$0=rest$21,ign_flag$0=0; + continue; + case 23: + var + rest$22=fmt$0[2], + ign=fmt$0[1], + match$3=param_format_of_ignored_format(ign,rest$22), + fmt$1=match$3[1], + fmt$0=fmt$1, + ign_flag$0=1; + continue; + default: + var + rest$23=fmt$0[3], + arity=fmt$0[1], + _uO_=int_of_custom_arity(arity), + _uN_=1; + if(! (_uO_ < 1)) + {var i$8=_uN_; + for(;;) + {buffer_add_char(buf,37); + bprint_ignored_flag(buf,ign_flag$0); + buffer_add_char(buf,63); + var _uP_=i$8 + 1 | 0; + if(_uO_ !== i$8){var i$8=_uP_;continue} + break}} + var fmt$0=rest$23,ign_flag$0=0; + continue}} + fmtiter(fmt,0); + return buffer_contents(buf)} + function symm(param) + {if(typeof param === "number") + return 0; + else + switch(param[0]) + {case 0:var rest=param[1];return [0,symm(rest)]; + case 1:var rest$0=param[1];return [1,symm(rest$0)]; + case 2:var rest$1=param[1];return [2,symm(rest$1)]; + case 3:var rest$2=param[1];return [3,symm(rest$2)]; + case 4:var rest$3=param[1];return [4,symm(rest$3)]; + case 5:var rest$4=param[1];return [5,symm(rest$4)]; + case 6:var rest$5=param[1];return [6,symm(rest$5)]; + case 7:var rest$6=param[1];return [7,symm(rest$6)]; + case 8:var rest$7=param[2],ty=param[1];return [8,ty,symm(rest$7)]; + case 9: + var rest$8=param[3],ty2=param[2],ty1=param[1]; + return [9,ty2,ty1,symm(rest$8)]; + case 10:var rest$9=param[1];return [10,symm(rest$9)]; + case 11:var rest$10=param[1];return [11,symm(rest$10)]; + case 12:var rest$11=param[1];return [12,symm(rest$11)]; + case 13:var rest$12=param[1];return [13,symm(rest$12)]; + default:var rest$13=param[1];return [14,symm(rest$13)]}} + function trans(ty1,ty2) + {var switch$0=0; + if(typeof ty1 === "number") + if(typeof ty2 === "number") + return 0; + else + switch(ty2[0]) + {case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + default:throw [0,Assert_failure,_ah_]} + else + switch(ty1[0]) + {case 0: + var switch$1=0,_us_=ty1[1]; + if(typeof ty2 !== "number") + switch(ty2[0]) + {case 0:var rest2=ty2[1];return [0,trans(_us_,rest2)]; + case 8:switch$0 = 5;switch$1 = 1;break; + case 9:switch$0 = 6;switch$1 = 1;break; + case 10:switch$1 = 1;break; + case 11:switch$0 = 1;switch$1 = 1;break; + case 12:switch$0 = 2;switch$1 = 1;break; + case 13:switch$0 = 3;switch$1 = 1;break; + case 14:switch$0 = 4;switch$1 = 1;break + } + if(! switch$1)switch$0 = 7; + break; + case 1: + var switch$2=0,_ut_=ty1[1]; + if(typeof ty2 !== "number") + switch(ty2[0]) + {case 1:var rest2$0=ty2[1];return [1,trans(_ut_,rest2$0)]; + case 8:switch$0 = 5;switch$2 = 1;break; + case 9:switch$0 = 6;switch$2 = 1;break; + case 10:switch$2 = 1;break; + case 11:switch$0 = 1;switch$2 = 1;break; + case 12:switch$0 = 2;switch$2 = 1;break; + case 13:switch$0 = 3;switch$2 = 1;break; + case 14:switch$0 = 4;switch$2 = 1;break + } + if(! switch$2)switch$0 = 7; + break; + case 2: + var switch$3=0,_uu_=ty1[1]; + if(typeof ty2 === "number") + switch$3 = 1; + else + switch(ty2[0]) + {case 2:var rest2$1=ty2[1];return [2,trans(_uu_,rest2$1)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$3 = 1} + if(switch$3)switch$0 = 7; + break; + case 3: + var switch$4=0,_uv_=ty1[1]; + if(typeof ty2 === "number") + switch$4 = 1; + else + switch(ty2[0]) + {case 3:var rest2$2=ty2[1];return [3,trans(_uv_,rest2$2)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$4 = 1} + if(switch$4)switch$0 = 7; + break; + case 4: + var switch$5=0,_uw_=ty1[1]; + if(typeof ty2 === "number") + switch$5 = 1; + else + switch(ty2[0]) + {case 4:var rest2$3=ty2[1];return [4,trans(_uw_,rest2$3)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$5 = 1} + if(switch$5)switch$0 = 7; + break; + case 5: + var switch$6=0,_ux_=ty1[1]; + if(typeof ty2 === "number") + switch$6 = 1; + else + switch(ty2[0]) + {case 5:var rest2$4=ty2[1];return [5,trans(_ux_,rest2$4)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$6 = 1} + if(switch$6)switch$0 = 7; + break; + case 6: + var switch$7=0,_uy_=ty1[1]; + if(typeof ty2 === "number") + switch$7 = 1; + else + switch(ty2[0]) + {case 6:var rest2$5=ty2[1];return [6,trans(_uy_,rest2$5)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$7 = 1} + if(switch$7)switch$0 = 7; + break; + case 7: + var switch$8=0,_uz_=ty1[1]; + if(typeof ty2 === "number") + switch$8 = 1; + else + switch(ty2[0]) + {case 7:var rest2$6=ty2[1];return [7,trans(_uz_,rest2$6)]; + case 8:switch$0 = 5;break; + case 9:switch$0 = 6;break; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$8 = 1} + if(switch$8)switch$0 = 7; + break; + case 8: + var switch$9=0,_uA_=ty1[2],_uB_=ty1[1]; + if(typeof ty2 === "number") + switch$9 = 1; + else + switch(ty2[0]) + {case 8: + var rest2$7=ty2[2],ty2$0=ty2[1],_uC_=trans(_uA_,rest2$7); + return [8,trans(_uB_,ty2$0),_uC_]; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$9 = 1} + if(switch$9)throw [0,Assert_failure,_aq_]; + break; + case 9: + var switch$10=0,_uD_=ty1[3],_uE_=ty1[2],_uF_=ty1[1]; + if(typeof ty2 === "number") + switch$10 = 1; + else + switch(ty2[0]) + {case 8:switch$0 = 5;break; + case 9: + var + rest2$8=ty2[3], + ty22=ty2[2], + ty21=ty2[1], + ty=trans(symm(_uE_),ty21), + match=fmtty_rel_det(ty), + f4=match[4], + f2=match[2]; + caml_call1(f2,0); + caml_call1(f4,0); + return [9,_uF_,ty22,trans(_uD_,rest2$8)]; + case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:switch$0 = 4;break; + default:switch$10 = 1} + if(switch$10)throw [0,Assert_failure,_ar_]; + break; + case 10: + var _uG_=ty1[1]; + if(typeof ty2 !== "number" && 10 === ty2[0]) + {var rest2$9=ty2[1];return [10,trans(_uG_,rest2$9)]} + throw [0,Assert_failure,_as_]; + case 11: + var switch$11=0,_uH_=ty1[1]; + if(typeof ty2 === "number") + switch$11 = 1; + else + switch(ty2[0]) + {case 10:break; + case 11:var rest2$10=ty2[1];return [11,trans(_uH_,rest2$10)]; + default:switch$11 = 1} + if(switch$11)throw [0,Assert_failure,_at_]; + break; + case 12: + var switch$12=0,_uI_=ty1[1]; + if(typeof ty2 === "number") + switch$12 = 1; + else + switch(ty2[0]) + {case 10:break; + case 11:switch$0 = 1;break; + case 12:var rest2$11=ty2[1];return [12,trans(_uI_,rest2$11)]; + default:switch$12 = 1} + if(switch$12)throw [0,Assert_failure,_au_]; + break; + case 13: + var switch$13=0,_uJ_=ty1[1]; + if(typeof ty2 === "number") + switch$13 = 1; + else + switch(ty2[0]) + {case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:var rest2$12=ty2[1];return [13,trans(_uJ_,rest2$12)]; + default:switch$13 = 1} + if(switch$13)throw [0,Assert_failure,_av_]; + break; + default: + var switch$14=0,_uK_=ty1[1]; + if(typeof ty2 === "number") + switch$14 = 1; + else + switch(ty2[0]) + {case 10:break; + case 11:switch$0 = 1;break; + case 12:switch$0 = 2;break; + case 13:switch$0 = 3;break; + case 14:var rest2$13=ty2[1];return [14,trans(_uK_,rest2$13)]; + default:switch$14 = 1} + if(switch$14)throw [0,Assert_failure,_aw_]} + switch(switch$0) + {case 0:throw [0,Assert_failure,_ak_]; + case 1:throw [0,Assert_failure,_al_]; + case 2:throw [0,Assert_failure,_am_]; + case 3:throw [0,Assert_failure,_an_]; + case 4:throw [0,Assert_failure,_ao_]; + case 5:throw [0,Assert_failure,_ai_]; + case 6:throw [0,Assert_failure,_aj_]; + default:throw [0,Assert_failure,_ap_]}} + function fmtty_rel_det(param) + {if(typeof param === "number") + {var + _t6_=function(param){return 0}, + _t7_=function(param){return 0}, + _t8_=function(param){return 0}; + return [0,function(param){return 0},_t8_,_t7_,_t6_]} + else + switch(param[0]) + {case 0: + var + rest=param[1], + match=fmtty_rel_det(rest), + de=match[4], + ed=match[3], + af=match[2], + fa=match[1], + _t9_=function(param){caml_call1(af,0);return 0}; + return [0,function(param){caml_call1(fa,0);return 0},_t9_,ed,de]; + case 1: + var + rest$0=param[1], + match$0=fmtty_rel_det(rest$0), + de$0=match$0[4], + ed$0=match$0[3], + af$0=match$0[2], + fa$0=match$0[1], + _t__=function(param){caml_call1(af$0,0);return 0}; + return [0, + function(param){caml_call1(fa$0,0);return 0}, + _t__, + ed$0, + de$0]; + case 2: + var + rest$1=param[1], + match$1=fmtty_rel_det(rest$1), + de$1=match$1[4], + ed$1=match$1[3], + af$1=match$1[2], + fa$1=match$1[1], + _t$_=function(param){caml_call1(af$1,0);return 0}; + return [0, + function(param){caml_call1(fa$1,0);return 0}, + _t$_, + ed$1, + de$1]; + case 3: + var + rest$2=param[1], + match$2=fmtty_rel_det(rest$2), + de$2=match$2[4], + ed$2=match$2[3], + af$2=match$2[2], + fa$2=match$2[1], + _ua_=function(param){caml_call1(af$2,0);return 0}; + return [0, + function(param){caml_call1(fa$2,0);return 0}, + _ua_, + ed$2, + de$2]; + case 4: + var + rest$3=param[1], + match$3=fmtty_rel_det(rest$3), + de$3=match$3[4], + ed$3=match$3[3], + af$3=match$3[2], + fa$3=match$3[1], + _ub_=function(param){caml_call1(af$3,0);return 0}; + return [0, + function(param){caml_call1(fa$3,0);return 0}, + _ub_, + ed$3, + de$3]; + case 5: + var + rest$4=param[1], + match$4=fmtty_rel_det(rest$4), + de$4=match$4[4], + ed$4=match$4[3], + af$4=match$4[2], + fa$4=match$4[1], + _uc_=function(param){caml_call1(af$4,0);return 0}; + return [0, + function(param){caml_call1(fa$4,0);return 0}, + _uc_, + ed$4, + de$4]; + case 6: + var + rest$5=param[1], + match$5=fmtty_rel_det(rest$5), + de$5=match$5[4], + ed$5=match$5[3], + af$5=match$5[2], + fa$5=match$5[1], + _ud_=function(param){caml_call1(af$5,0);return 0}; + return [0, + function(param){caml_call1(fa$5,0);return 0}, + _ud_, + ed$5, + de$5]; + case 7: + var + rest$6=param[1], + match$6=fmtty_rel_det(rest$6), + de$6=match$6[4], + ed$6=match$6[3], + af$6=match$6[2], + fa$6=match$6[1], + _ue_=function(param){caml_call1(af$6,0);return 0}; + return [0, + function(param){caml_call1(fa$6,0);return 0}, + _ue_, + ed$6, + de$6]; + case 8: + var + rest$7=param[2], + match$7=fmtty_rel_det(rest$7), + de$7=match$7[4], + ed$7=match$7[3], + af$7=match$7[2], + fa$7=match$7[1], + _uf_=function(param){caml_call1(af$7,0);return 0}; + return [0, + function(param){caml_call1(fa$7,0);return 0}, + _uf_, + ed$7, + de$7]; + case 9: + var + rest$8=param[3], + ty2=param[2], + ty1=param[1], + match$8=fmtty_rel_det(rest$8), + de$8=match$8[4], + ed$8=match$8[3], + af$8=match$8[2], + fa$8=match$8[1], + ty=trans(symm(ty1),ty2), + match$9=fmtty_rel_det(ty), + jd=match$9[4], + dj=match$9[3], + ga=match$9[2], + ag=match$9[1], + _ug_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0}, + _uh_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0}, + _ui_=function(param){caml_call1(ga,0);caml_call1(af$8,0);return 0}; + return [0, + function(param) + {caml_call1(fa$8,0);caml_call1(ag,0);return 0}, + _ui_, + _uh_, + _ug_]; + case 10: + var + rest$9=param[1], + match$10=fmtty_rel_det(rest$9), + de$9=match$10[4], + ed$9=match$10[3], + af$9=match$10[2], + fa$9=match$10[1], + _uj_=function(param){caml_call1(af$9,0);return 0}; + return [0, + function(param){caml_call1(fa$9,0);return 0}, + _uj_, + ed$9, + de$9]; + case 11: + var + rest$10=param[1], + match$11=fmtty_rel_det(rest$10), + de$10=match$11[4], + ed$10=match$11[3], + af$10=match$11[2], + fa$10=match$11[1], + _uk_=function(param){caml_call1(af$10,0);return 0}; + return [0, + function(param){caml_call1(fa$10,0);return 0}, + _uk_, + ed$10, + de$10]; + case 12: + var + rest$11=param[1], + match$12=fmtty_rel_det(rest$11), + de$11=match$12[4], + ed$11=match$12[3], + af$11=match$12[2], + fa$11=match$12[1], + _ul_=function(param){caml_call1(af$11,0);return 0}; + return [0, + function(param){caml_call1(fa$11,0);return 0}, + _ul_, + ed$11, + de$11]; + case 13: + var + rest$12=param[1], + match$13=fmtty_rel_det(rest$12), + de$12=match$13[4], + ed$12=match$13[3], + af$12=match$13[2], + fa$12=match$13[1], + _um_=function(param){caml_call1(de$12,0);return 0}, + _un_=function(param){caml_call1(ed$12,0);return 0}, + _uo_=function(param){caml_call1(af$12,0);return 0}; + return [0, + function(param){caml_call1(fa$12,0);return 0}, + _uo_, + _un_, + _um_]; + default: + var + rest$13=param[1], + match$14=fmtty_rel_det(rest$13), + de$13=match$14[4], + ed$13=match$14[3], + af$13=match$14[2], + fa$13=match$14[1], + _up_=function(param){caml_call1(de$13,0);return 0}, + _uq_=function(param){caml_call1(ed$13,0);return 0}, + _ur_=function(param){caml_call1(af$13,0);return 0}; + return [0, + function(param){caml_call1(fa$13,0);return 0}, + _ur_, + _uq_, + _up_]}} + function fmtty_of_precision_fmtty(prec,fmtty) + {return typeof prec === "number"?prec?[2,fmtty]:fmtty:fmtty} + function fmtty_of_padding_fmtty(pad,fmtty) + {return typeof pad === "number"?fmtty:0 === pad[0]?fmtty:[2,fmtty]} + function fmtty_of_custom(arity,fmtty) + {if(arity) + {var arity$0=arity[1];return [12,fmtty_of_custom(arity$0,fmtty)]} + return fmtty} + function fmtty_of_fmt(fmtty) + {var fmtty$0=fmtty; + for(;;) + if(typeof fmtty$0 === "number") + return 0; + else + switch(fmtty$0[0]) + {case 0:var rest=fmtty$0[1];return [0,fmtty_of_fmt(rest)]; + case 1:var rest$0=fmtty$0[1];return [0,fmtty_of_fmt(rest$0)]; + case 2: + var rest$1=fmtty$0[2],pad=fmtty$0[1]; + return fmtty_of_padding_fmtty(pad,[1,fmtty_of_fmt(rest$1)]); + case 3: + var rest$2=fmtty$0[2],pad$0=fmtty$0[1]; + return fmtty_of_padding_fmtty(pad$0,[1,fmtty_of_fmt(rest$2)]); + case 4: + var + rest$3=fmtty$0[4], + prec=fmtty$0[3], + pad$1=fmtty$0[2], + ty_rest=fmtty_of_fmt(rest$3), + prec_ty=fmtty_of_precision_fmtty(prec,[2,ty_rest]); + return fmtty_of_padding_fmtty(pad$1,prec_ty); + case 5: + var + rest$4=fmtty$0[4], + prec$0=fmtty$0[3], + pad$2=fmtty$0[2], + ty_rest$0=fmtty_of_fmt(rest$4), + prec_ty$0=fmtty_of_precision_fmtty(prec$0,[3,ty_rest$0]); + return fmtty_of_padding_fmtty(pad$2,prec_ty$0); + case 6: + var + rest$5=fmtty$0[4], + prec$1=fmtty$0[3], + pad$3=fmtty$0[2], + ty_rest$1=fmtty_of_fmt(rest$5), + prec_ty$1=fmtty_of_precision_fmtty(prec$1,[4,ty_rest$1]); + return fmtty_of_padding_fmtty(pad$3,prec_ty$1); + case 7: + var + rest$6=fmtty$0[4], + prec$2=fmtty$0[3], + pad$4=fmtty$0[2], + ty_rest$2=fmtty_of_fmt(rest$6), + prec_ty$2=fmtty_of_precision_fmtty(prec$2,[5,ty_rest$2]); + return fmtty_of_padding_fmtty(pad$4,prec_ty$2); + case 8: + var + rest$7=fmtty$0[4], + prec$3=fmtty$0[3], + pad$5=fmtty$0[2], + ty_rest$3=fmtty_of_fmt(rest$7), + prec_ty$3=fmtty_of_precision_fmtty(prec$3,[6,ty_rest$3]); + return fmtty_of_padding_fmtty(pad$5,prec_ty$3); + case 9: + var rest$8=fmtty$0[2],pad$6=fmtty$0[1]; + return fmtty_of_padding_fmtty(pad$6,[7,fmtty_of_fmt(rest$8)]); + case 10:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue; + case 11:var fmtty$2=fmtty$0[2],fmtty$0=fmtty$2;continue; + case 12:var fmtty$3=fmtty$0[2],fmtty$0=fmtty$3;continue; + case 13: + var rest$9=fmtty$0[3],ty=fmtty$0[2]; + return [8,ty,fmtty_of_fmt(rest$9)]; + case 14: + var rest$10=fmtty$0[3],ty$0=fmtty$0[2]; + return [9,ty$0,ty$0,fmtty_of_fmt(rest$10)]; + case 15:var rest$11=fmtty$0[1];return [10,fmtty_of_fmt(rest$11)]; + case 16:var rest$12=fmtty$0[1];return [11,fmtty_of_fmt(rest$12)]; + case 17:var fmtty$4=fmtty$0[2],fmtty$0=fmtty$4;continue; + case 18: + var + rest$13=fmtty$0[2], + fmting_gen=fmtty$0[1], + _t4_=fmtty_of_fmt(rest$13); + if(0 === fmting_gen[0]) + var match=fmting_gen[1],fmt=match[1],_t5_=fmtty_of_fmt(fmt); + else + var + match$0=fmting_gen[1], + fmt$0=match$0[1], + _t5_=fmtty_of_fmt(fmt$0); + return concat_fmtty(_t5_,_t4_); + case 19:var rest$14=fmtty$0[1];return [13,fmtty_of_fmt(rest$14)]; + case 20:var rest$15=fmtty$0[3];return [1,fmtty_of_fmt(rest$15)]; + case 21:var rest$16=fmtty$0[2];return [2,fmtty_of_fmt(rest$16)]; + case 22:var rest$17=fmtty$0[1];return [0,fmtty_of_fmt(rest$17)]; + case 23: + var rest$18=fmtty$0[2],ign=fmtty$0[1]; + if(typeof ign === "number") + switch(ign) + {case 0:var fmtty$0=rest$18;continue; + case 1:var fmtty$0=rest$18;continue; + case 2:return [14,fmtty_of_fmt(rest$18)]; + default:var fmtty$0=rest$18;continue} + else + switch(ign[0]) + {case 0:var fmtty$0=rest$18;continue; + case 1:var fmtty$0=rest$18;continue; + case 2:var fmtty$0=rest$18;continue; + case 3:var fmtty$0=rest$18;continue; + case 4:var fmtty$0=rest$18;continue; + case 5:var fmtty$0=rest$18;continue; + case 6:var fmtty$0=rest$18;continue; + case 7:var fmtty$0=rest$18;continue; + case 8:var fmtty$0=rest$18;continue; + case 9: + var fmtty$5=ign[2]; + return concat_fmtty(fmtty$5,fmtty_of_fmt(rest$18)); + case 10:var fmtty$0=rest$18;continue; + default:var fmtty$0=rest$18;continue} + default: + var rest$19=fmtty$0[3],arity=fmtty$0[1]; + return fmtty_of_custom(arity,fmtty_of_fmt(rest$19))}} + var + Type_mismatch= + [248,cst_CamlinternalFormat_Type_mi,caml_fresh_oo_id(0)]; + function type_padding(pad,fmtty) + {if(typeof pad === "number") + return [0,0,fmtty]; + else + {if(0 === pad[0]) + {var w=pad[2],padty=pad[1];return [0,[0,padty,w],fmtty]} + if(typeof fmtty !== "number" && 2 === fmtty[0]) + {var rest=fmtty[1],padty$0=pad[1];return [0,[1,padty$0],rest]} + throw Type_mismatch}} + function type_padprec(pad,prec,fmtty) + {var match=type_padding(pad,fmtty); + if(typeof prec === "number") + {if(prec) + {var _t3_=match[2]; + if(typeof _t3_ !== "number" && 2 === _t3_[0]) + {var rest=_t3_[1],pad$0=match[1];return [0,pad$0,1,rest]} + throw Type_mismatch} + var rest$0=match[2],pad$1=match[1]; + return [0,pad$1,0,rest$0]} + var rest$1=match[2],pad$2=match[1],p=prec[1]; + return [0,pad$2,[0,p],rest$1]} + function type_ignored_format_substituti(sub_fmtty,fmt,fmtty) + {if(typeof sub_fmtty === "number") + return [0,0,type_format_gen(fmt,fmtty)]; + else + switch(sub_fmtty[0]) + {case 0: + if(typeof fmtty !== "number" && 0 === fmtty[0]) + {var + fmtty_rest=fmtty[1], + sub_fmtty_rest=sub_fmtty[1], + match= + type_ignored_format_substituti(sub_fmtty_rest,fmt,fmtty_rest), + fmt$0=match[2], + sub_fmtty_rest$0=match[1]; + return [0,[0,sub_fmtty_rest$0],fmt$0]} + break; + case 1: + if(typeof fmtty !== "number" && 1 === fmtty[0]) + {var + fmtty_rest$0=fmtty[1], + sub_fmtty_rest$1=sub_fmtty[1], + match$0= + type_ignored_format_substituti + (sub_fmtty_rest$1,fmt,fmtty_rest$0), + fmt$1=match$0[2], + sub_fmtty_rest$2=match$0[1]; + return [0,[1,sub_fmtty_rest$2],fmt$1]} + break; + case 2: + if(typeof fmtty !== "number" && 2 === fmtty[0]) + {var + fmtty_rest$1=fmtty[1], + sub_fmtty_rest$3=sub_fmtty[1], + match$1= + type_ignored_format_substituti + (sub_fmtty_rest$3,fmt,fmtty_rest$1), + fmt$2=match$1[2], + sub_fmtty_rest$4=match$1[1]; + return [0,[2,sub_fmtty_rest$4],fmt$2]} + break; + case 3: + if(typeof fmtty !== "number" && 3 === fmtty[0]) + {var + fmtty_rest$2=fmtty[1], + sub_fmtty_rest$5=sub_fmtty[1], + match$2= + type_ignored_format_substituti + (sub_fmtty_rest$5,fmt,fmtty_rest$2), + fmt$3=match$2[2], + sub_fmtty_rest$6=match$2[1]; + return [0,[3,sub_fmtty_rest$6],fmt$3]} + break; + case 4: + if(typeof fmtty !== "number" && 4 === fmtty[0]) + {var + fmtty_rest$3=fmtty[1], + sub_fmtty_rest$7=sub_fmtty[1], + match$3= + type_ignored_format_substituti + (sub_fmtty_rest$7,fmt,fmtty_rest$3), + fmt$4=match$3[2], + sub_fmtty_rest$8=match$3[1]; + return [0,[4,sub_fmtty_rest$8],fmt$4]} + break; + case 5: + if(typeof fmtty !== "number" && 5 === fmtty[0]) + {var + fmtty_rest$4=fmtty[1], + sub_fmtty_rest$9=sub_fmtty[1], + match$4= + type_ignored_format_substituti + (sub_fmtty_rest$9,fmt,fmtty_rest$4), + fmt$5=match$4[2], + sub_fmtty_rest$10=match$4[1]; + return [0,[5,sub_fmtty_rest$10],fmt$5]} + break; + case 6: + if(typeof fmtty !== "number" && 6 === fmtty[0]) + {var + fmtty_rest$5=fmtty[1], + sub_fmtty_rest$11=sub_fmtty[1], + match$5= + type_ignored_format_substituti + (sub_fmtty_rest$11,fmt,fmtty_rest$5), + fmt$6=match$5[2], + sub_fmtty_rest$12=match$5[1]; + return [0,[6,sub_fmtty_rest$12],fmt$6]} + break; + case 7: + if(typeof fmtty !== "number" && 7 === fmtty[0]) + {var + fmtty_rest$6=fmtty[1], + sub_fmtty_rest$13=sub_fmtty[1], + match$6= + type_ignored_format_substituti + (sub_fmtty_rest$13,fmt,fmtty_rest$6), + fmt$7=match$6[2], + sub_fmtty_rest$14=match$6[1]; + return [0,[7,sub_fmtty_rest$14],fmt$7]} + break; + case 8: + if(typeof fmtty !== "number" && 8 === fmtty[0]) + {var + fmtty_rest$7=fmtty[2], + sub2_fmtty=fmtty[1], + sub_fmtty_rest$15=sub_fmtty[2], + sub2_fmtty$0=sub_fmtty[1]; + if(caml_notequal([0,sub2_fmtty$0],[0,sub2_fmtty])) + throw Type_mismatch; + var + match$7= + type_ignored_format_substituti + (sub_fmtty_rest$15,fmt,fmtty_rest$7), + fmt$8=match$7[2], + sub_fmtty_rest$16=match$7[1]; + return [0,[8,sub2_fmtty,sub_fmtty_rest$16],fmt$8]} + break; + case 9: + if(typeof fmtty !== "number" && 9 === fmtty[0]) + {var + fmtty_rest$8=fmtty[3], + sub2_fmtty$1=fmtty[2], + sub1_fmtty=fmtty[1], + sub_fmtty_rest$17=sub_fmtty[3], + sub2_fmtty$2=sub_fmtty[2], + sub1_fmtty$0=sub_fmtty[1], + _t1_=[0,erase_rel(sub1_fmtty)]; + if(caml_notequal([0,erase_rel(sub1_fmtty$0)],_t1_)) + throw Type_mismatch; + var _t2_=[0,erase_rel(sub2_fmtty$1)]; + if(caml_notequal([0,erase_rel(sub2_fmtty$2)],_t2_)) + throw Type_mismatch; + var + sub_fmtty$0=trans(symm(sub1_fmtty),sub2_fmtty$1), + match$8=fmtty_rel_det(sub_fmtty$0), + f4=match$8[4], + f2=match$8[2]; + caml_call1(f2,0); + caml_call1(f4,0); + var + match$9= + type_ignored_format_substituti + (erase_rel(sub_fmtty_rest$17),fmt,fmtty_rest$8), + fmt$9=match$9[2], + sub_fmtty_rest$18=match$9[1]; + return [0, + [9,sub1_fmtty,sub2_fmtty$1,symm(sub_fmtty_rest$18)], + fmt$9]} + break; + case 10: + if(typeof fmtty !== "number" && 10 === fmtty[0]) + {var + fmtty_rest$9=fmtty[1], + sub_fmtty_rest$19=sub_fmtty[1], + match$10= + type_ignored_format_substituti + (sub_fmtty_rest$19,fmt,fmtty_rest$9), + fmt$10=match$10[2], + sub_fmtty_rest$20=match$10[1]; + return [0,[10,sub_fmtty_rest$20],fmt$10]} + break; + case 11: + if(typeof fmtty !== "number" && 11 === fmtty[0]) + {var + fmtty_rest$10=fmtty[1], + sub_fmtty_rest$21=sub_fmtty[1], + match$11= + type_ignored_format_substituti + (sub_fmtty_rest$21,fmt,fmtty_rest$10), + fmt$11=match$11[2], + sub_fmtty_rest$22=match$11[1]; + return [0,[11,sub_fmtty_rest$22],fmt$11]} + break; + case 13: + if(typeof fmtty !== "number" && 13 === fmtty[0]) + {var + fmtty_rest$11=fmtty[1], + sub_fmtty_rest$23=sub_fmtty[1], + match$12= + type_ignored_format_substituti + (sub_fmtty_rest$23,fmt,fmtty_rest$11), + fmt$12=match$12[2], + sub_fmtty_rest$24=match$12[1]; + return [0,[13,sub_fmtty_rest$24],fmt$12]} + break; + case 14: + if(typeof fmtty !== "number" && 14 === fmtty[0]) + {var + fmtty_rest$12=fmtty[1], + sub_fmtty_rest$25=sub_fmtty[1], + match$13= + type_ignored_format_substituti + (sub_fmtty_rest$25,fmt,fmtty_rest$12), + fmt$13=match$13[2], + sub_fmtty_rest$26=match$13[1]; + return [0,[14,sub_fmtty_rest$26],fmt$13]} + break + } + throw Type_mismatch} + function type_format_gen(fmt,fmtty) + {if(typeof fmt === "number") + return [0,0,fmtty]; + else + switch(fmt[0]) + {case 0: + if(typeof fmtty !== "number" && 0 === fmtty[0]) + {var + fmtty_rest=fmtty[1], + fmt_rest=fmt[1], + match=type_format_gen(fmt_rest,fmtty_rest), + fmtty$0=match[2], + fmt$0=match[1]; + return [0,[0,fmt$0],fmtty$0]} + break; + case 1: + if(typeof fmtty !== "number" && 0 === fmtty[0]) + {var + fmtty_rest$0=fmtty[1], + fmt_rest$0=fmt[1], + match$0=type_format_gen(fmt_rest$0,fmtty_rest$0), + fmtty$1=match$0[2], + fmt$1=match$0[1]; + return [0,[1,fmt$1],fmtty$1]} + break; + case 2: + var + fmt_rest$1=fmt[2], + pad=fmt[1], + match$1=type_padding(pad,fmtty), + _tK_=match$1[2], + _tJ_=match$1[1]; + if(typeof _tK_ !== "number" && 1 === _tK_[0]) + {var + fmtty_rest$1=_tK_[1], + match$2=type_format_gen(fmt_rest$1,fmtty_rest$1), + fmtty$2=match$2[2], + fmt$2=match$2[1]; + return [0,[2,_tJ_,fmt$2],fmtty$2]} + throw Type_mismatch; + case 3: + var + fmt_rest$2=fmt[2], + pad$0=fmt[1], + match$3=type_padding(pad$0,fmtty), + _tM_=match$3[2], + _tL_=match$3[1]; + if(typeof _tM_ !== "number" && 1 === _tM_[0]) + {var + fmtty_rest$2=_tM_[1], + match$4=type_format_gen(fmt_rest$2,fmtty_rest$2), + fmtty$3=match$4[2], + fmt$3=match$4[1]; + return [0,[3,_tL_,fmt$3],fmtty$3]} + throw Type_mismatch; + case 4: + var + fmt_rest$3=fmt[4], + prec=fmt[3], + pad$1=fmt[2], + iconv=fmt[1], + match$5=type_padprec(pad$1,prec,fmtty), + _tO_=match$5[3], + _tN_=match$5[1]; + if(typeof _tO_ !== "number" && 2 === _tO_[0]) + {var + fmtty_rest$3=_tO_[1], + prec$0=match$5[2], + match$6=type_format_gen(fmt_rest$3,fmtty_rest$3), + fmtty$4=match$6[2], + fmt$4=match$6[1]; + return [0,[4,iconv,_tN_,prec$0,fmt$4],fmtty$4]} + throw Type_mismatch; + case 5: + var + fmt_rest$4=fmt[4], + prec$1=fmt[3], + pad$2=fmt[2], + iconv$0=fmt[1], + match$7=type_padprec(pad$2,prec$1,fmtty), + _tQ_=match$7[3], + _tP_=match$7[1]; + if(typeof _tQ_ !== "number" && 3 === _tQ_[0]) + {var + fmtty_rest$4=_tQ_[1], + prec$2=match$7[2], + match$8=type_format_gen(fmt_rest$4,fmtty_rest$4), + fmtty$5=match$8[2], + fmt$5=match$8[1]; + return [0,[5,iconv$0,_tP_,prec$2,fmt$5],fmtty$5]} + throw Type_mismatch; + case 6: + var + fmt_rest$5=fmt[4], + prec$3=fmt[3], + pad$3=fmt[2], + iconv$1=fmt[1], + match$9=type_padprec(pad$3,prec$3,fmtty), + _tS_=match$9[3], + _tR_=match$9[1]; + if(typeof _tS_ !== "number" && 4 === _tS_[0]) + {var + fmtty_rest$5=_tS_[1], + prec$4=match$9[2], + match$10=type_format_gen(fmt_rest$5,fmtty_rest$5), + fmtty$6=match$10[2], + fmt$6=match$10[1]; + return [0,[6,iconv$1,_tR_,prec$4,fmt$6],fmtty$6]} + throw Type_mismatch; + case 7: + var + fmt_rest$6=fmt[4], + prec$5=fmt[3], + pad$4=fmt[2], + iconv$2=fmt[1], + match$11=type_padprec(pad$4,prec$5,fmtty), + _tU_=match$11[3], + _tT_=match$11[1]; + if(typeof _tU_ !== "number" && 5 === _tU_[0]) + {var + fmtty_rest$6=_tU_[1], + prec$6=match$11[2], + match$12=type_format_gen(fmt_rest$6,fmtty_rest$6), + fmtty$7=match$12[2], + fmt$7=match$12[1]; + return [0,[7,iconv$2,_tT_,prec$6,fmt$7],fmtty$7]} + throw Type_mismatch; + case 8: + var + fmt_rest$7=fmt[4], + prec$7=fmt[3], + pad$5=fmt[2], + fconv=fmt[1], + match$13=type_padprec(pad$5,prec$7,fmtty), + _tW_=match$13[3], + _tV_=match$13[1]; + if(typeof _tW_ !== "number" && 6 === _tW_[0]) + {var + fmtty_rest$7=_tW_[1], + prec$8=match$13[2], + match$14=type_format_gen(fmt_rest$7,fmtty_rest$7), + fmtty$8=match$14[2], + fmt$8=match$14[1]; + return [0,[8,fconv,_tV_,prec$8,fmt$8],fmtty$8]} + throw Type_mismatch; + case 9: + var + fmt_rest$8=fmt[2], + pad$6=fmt[1], + match$15=type_padding(pad$6,fmtty), + _tY_=match$15[2], + _tX_=match$15[1]; + if(typeof _tY_ !== "number" && 7 === _tY_[0]) + {var + fmtty_rest$8=_tY_[1], + match$16=type_format_gen(fmt_rest$8,fmtty_rest$8), + fmtty$9=match$16[2], + fmt$9=match$16[1]; + return [0,[9,_tX_,fmt$9],fmtty$9]} + throw Type_mismatch; + case 10: + var + fmt_rest$9=fmt[1], + match$17=type_format_gen(fmt_rest$9,fmtty), + fmtty$10=match$17[2], + fmt$10=match$17[1]; + return [0,[10,fmt$10],fmtty$10]; + case 11: + var + fmt_rest$10=fmt[2], + str=fmt[1], + match$18=type_format_gen(fmt_rest$10,fmtty), + fmtty$11=match$18[2], + fmt$11=match$18[1]; + return [0,[11,str,fmt$11],fmtty$11]; + case 12: + var + fmt_rest$11=fmt[2], + chr=fmt[1], + match$19=type_format_gen(fmt_rest$11,fmtty), + fmtty$12=match$19[2], + fmt$12=match$19[1]; + return [0,[12,chr,fmt$12],fmtty$12]; + case 13: + if(typeof fmtty !== "number" && 8 === fmtty[0]) + {var + fmtty_rest$9=fmtty[2], + sub_fmtty=fmtty[1], + fmt_rest$12=fmt[3], + sub_fmtty$0=fmt[2], + pad_opt=fmt[1]; + if(caml_notequal([0,sub_fmtty$0],[0,sub_fmtty])) + throw Type_mismatch; + var + match$20=type_format_gen(fmt_rest$12,fmtty_rest$9), + fmtty$13=match$20[2], + fmt$13=match$20[1]; + return [0,[13,pad_opt,sub_fmtty,fmt$13],fmtty$13]} + break; + case 14: + if(typeof fmtty !== "number" && 9 === fmtty[0]) + {var + fmtty_rest$10=fmtty[3], + sub_fmtty1=fmtty[1], + fmt_rest$13=fmt[3], + sub_fmtty$1=fmt[2], + pad_opt$0=fmt[1], + _tZ_=[0,erase_rel(sub_fmtty1)]; + if(caml_notequal([0,erase_rel(sub_fmtty$1)],_tZ_)) + throw Type_mismatch; + var + match$21=type_format_gen(fmt_rest$13,erase_rel(fmtty_rest$10)), + fmtty$14=match$21[2], + fmt$14=match$21[1]; + return [0,[14,pad_opt$0,sub_fmtty1,fmt$14],fmtty$14]} + break; + case 15: + if(typeof fmtty !== "number" && 10 === fmtty[0]) + {var + fmtty_rest$11=fmtty[1], + fmt_rest$14=fmt[1], + match$22=type_format_gen(fmt_rest$14,fmtty_rest$11), + fmtty$15=match$22[2], + fmt$15=match$22[1]; + return [0,[15,fmt$15],fmtty$15]} + break; + case 16: + if(typeof fmtty !== "number" && 11 === fmtty[0]) + {var + fmtty_rest$12=fmtty[1], + fmt_rest$15=fmt[1], + match$23=type_format_gen(fmt_rest$15,fmtty_rest$12), + fmtty$16=match$23[2], + fmt$16=match$23[1]; + return [0,[16,fmt$16],fmtty$16]} + break; + case 17: + var + fmt_rest$16=fmt[2], + formatting_lit=fmt[1], + match$24=type_format_gen(fmt_rest$16,fmtty), + fmtty$17=match$24[2], + fmt$17=match$24[1]; + return [0,[17,formatting_lit,fmt$17],fmtty$17]; + case 18: + var fmt_rest$17=fmt[2],formatting_gen=fmt[1]; + if(0 === formatting_gen[0]) + {var + match$28=formatting_gen[1], + str$0=match$28[2], + fmt1=match$28[1], + match$29=type_format_gen(fmt1,fmtty), + fmtty2=match$29[2], + fmt2=match$29[1], + match$30=type_format_gen(fmt_rest$17,fmtty2), + fmtty3=match$30[2], + fmt3=match$30[1]; + return [0,[18,[0,[0,fmt2,str$0]],fmt3],fmtty3]} + var + match$31=formatting_gen[1], + str$1=match$31[2], + fmt1$0=match$31[1], + match$32=type_format_gen(fmt1$0,fmtty), + fmtty2$0=match$32[2], + fmt2$0=match$32[1], + match$33=type_format_gen(fmt_rest$17,fmtty2$0), + fmtty3$0=match$33[2], + fmt3$0=match$33[1]; + return [0,[18,[1,[0,fmt2$0,str$1]],fmt3$0],fmtty3$0]; + case 19: + if(typeof fmtty !== "number" && 13 === fmtty[0]) + {var + fmtty_rest$13=fmtty[1], + fmt_rest$18=fmt[1], + match$25=type_format_gen(fmt_rest$18,fmtty_rest$13), + fmtty$18=match$25[2], + fmt$18=match$25[1]; + return [0,[19,fmt$18],fmtty$18]} + break; + case 20: + if(typeof fmtty !== "number" && 1 === fmtty[0]) + {var + fmtty_rest$14=fmtty[1], + fmt_rest$19=fmt[3], + char_set=fmt[2], + width_opt=fmt[1], + match$26=type_format_gen(fmt_rest$19,fmtty_rest$14), + fmtty$19=match$26[2], + fmt$19=match$26[1]; + return [0,[20,width_opt,char_set,fmt$19],fmtty$19]} + break; + case 21: + if(typeof fmtty !== "number" && 2 === fmtty[0]) + {var + fmtty_rest$15=fmtty[1], + fmt_rest$20=fmt[2], + counter=fmt[1], + match$27=type_format_gen(fmt_rest$20,fmtty_rest$15), + fmtty$20=match$27[2], + fmt$20=match$27[1]; + return [0,[21,counter,fmt$20],fmtty$20]} + break; + case 23: + var rest=fmt[2],ign=fmt[1]; + if(typeof ign === "number") + switch(ign) + {case 0:return type_ignored_param_one(ign,rest,fmtty); + case 1:return type_ignored_param_one(ign,rest,fmtty); + case 2: + if(typeof fmtty !== "number" && 14 === fmtty[0]) + {var + fmtty_rest$16=fmtty[1], + match$34=type_format_gen(rest,fmtty_rest$16), + fmtty$21=match$34[2], + fmt$21=match$34[1]; + return [0,[23,2,fmt$21],fmtty$21]} + throw Type_mismatch; + default:return type_ignored_param_one(ign,rest,fmtty)} + else + switch(ign[0]) + {case 0:return type_ignored_param_one(ign,rest,fmtty); + case 1:return type_ignored_param_one(ign,rest,fmtty); + case 2:return type_ignored_param_one(ign,rest,fmtty); + case 3:return type_ignored_param_one(ign,rest,fmtty); + case 4:return type_ignored_param_one(ign,rest,fmtty); + case 5:return type_ignored_param_one(ign,rest,fmtty); + case 6:return type_ignored_param_one(ign,rest,fmtty); + case 7:return type_ignored_param_one(ign,rest,fmtty); + case 8: + var sub_fmtty$2=ign[2],pad_opt$1=ign[1]; + return type_ignored_param_one + ([8,pad_opt$1,sub_fmtty$2],rest,fmtty); + case 9: + var + sub_fmtty$3=ign[2], + pad_opt$2=ign[1], + _t0_=type_ignored_format_substituti(sub_fmtty$3,rest,fmtty), + match$35=_t0_[2], + fmtty$22=match$35[2], + fmt$22=match$35[1], + sub_fmtty$4=_t0_[1]; + return [0,[23,[9,pad_opt$2,sub_fmtty$4],fmt$22],fmtty$22]; + case 10:return type_ignored_param_one(ign,rest,fmtty); + default:return type_ignored_param_one(ign,rest,fmtty)} + } + throw Type_mismatch} + function type_ignored_param_one(ign,fmt,fmtty) + {var match=type_format_gen(fmt,fmtty),fmtty$0=match[2],fmt$0=match[1]; + return [0,[23,ign,fmt$0],fmtty$0]} + function type_format(fmt,fmtty) + {var _tI_=type_format_gen(fmt,fmtty); + if(typeof _tI_[2] === "number"){var fmt$0=_tI_[1];return fmt$0} + throw Type_mismatch} + function recast(fmt,fmtty){return type_format(fmt,erase_rel(symm(fmtty)))} + function fix_padding(padty,width,str) + {var + len=caml_ml_string_length(str), + padty$0=0 <= width?padty:0, + width$0=abs(width); + if(width$0 <= len)return str; + var _tH_=2 === padty$0?48:32,res=make$0(width$0,_tH_); + switch(padty$0) + {case 0:blit$0(str,0,res,0,len);break; + case 1:blit$0(str,0,res,width$0 - len | 0,len);break; + default: + var switch$0=0; + if(0 < len) + {var switch$1=0; + if + (43 + !== + caml_string_get(str,0) + && + 45 + !== + caml_string_get(str,0) + && + 32 + !== + caml_string_get(str,0)) + {switch$0 = 1;switch$1 = 1} + if(! switch$1) + {caml_bytes_set(res,0,caml_string_get(str,0)); + blit$0(str,1,res,(width$0 - len | 0) + 1 | 0,len - 1 | 0)}} + else + switch$0 = 1; + if(switch$0) + {var switch$2=0; + if(1 < len && 48 === caml_string_get(str,0)) + {var switch$3=0; + if + (120 + !== + caml_string_get(str,1) + && + 88 + !== + caml_string_get(str,1)) + {switch$2 = 1;switch$3 = 1} + if(! switch$3) + {caml_bytes_set(res,1,caml_string_get(str,1)); + blit$0(str,2,res,(width$0 - len | 0) + 2 | 0,len - 2 | 0)}} + else + switch$2 = 1; + if(switch$2)blit$0(str,0,res,width$0 - len | 0,len)}} + return caml_string_of_bytes(res)} + function fix_int_precision(prec,str) + {var + prec$0=abs(prec), + len=caml_ml_string_length(str), + c=caml_string_get(str,0), + switch$0=0; + if(58 <= c) + {if(71 <= c) + {if(! (5 < c - 97 >>> 0))switch$0 = 1} + else + if(65 <= c)switch$0 = 1} + else + {var switch$1=0; + if(32 !== c) + if(43 <= c) + switch(c - 43 | 0) + {case 5: + if(len < (prec$0 + 2 | 0) && 1 < len) + {var switch$2=0; + if + (120 + === + caml_string_get(str,1) + || + 88 + === + caml_string_get(str,1)) + switch$2 = 1; + if(switch$2) + {var res$1=make$0(prec$0 + 2 | 0,48); + caml_bytes_set(res$1,1,caml_string_get(str,1)); + blit$0(str,2,res$1,(prec$0 - len | 0) + 4 | 0,len - 2 | 0); + return caml_string_of_bytes(res$1)}} + switch$0 = 1; + switch$1 = 1; + break; + case 0: + case 2:break; + case 1: + case 3: + case 4:switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1} + else + switch$1 = 1; + if(! switch$1 && len < (prec$0 + 1 | 0)) + {var res$0=make$0(prec$0 + 1 | 0,48); + caml_bytes_set(res$0,0,c); + blit$0(str,1,res$0,(prec$0 - len | 0) + 2 | 0,len - 1 | 0); + return caml_string_of_bytes(res$0)}} + if(switch$0 && len < prec$0) + {var res=make$0(prec$0,48); + blit$0(str,0,res,prec$0 - len | 0,len); + return caml_string_of_bytes(res)} + return str} + function string_to_caml_string(str) + {var + str$0=escaped$1(str), + l=caml_ml_string_length(str$0), + res=make$0(l + 2 | 0,34); + caml_blit_string(str$0,0,res,1,l); + return caml_string_of_bytes(res)} + function format_of_fconv(fconv,prec) + {var + prec$0=abs(prec), + symb=char_of_fconv(_ax_,fconv), + buf=buffer_create(16); + buffer_add_char(buf,37); + bprint_fconv_flag(buf,fconv); + buffer_add_char(buf,46); + buffer_add_string(buf,caml_string_of_jsbytes("" + prec$0)); + buffer_add_char(buf,symb); + return buffer_contents(buf)} + function transform_int_alt(iconv,s) + {if(13 <= iconv) + {var n=[0,0],_tC_=caml_ml_string_length(s) - 1 | 0,_tB_=0; + if(! (_tC_ < 0)) + {var i$0=_tB_; + for(;;) + {var match=caml_string_unsafe_get(s,i$0); + if(! (9 < match - 48 >>> 0))n[1]++; + var _tG_=i$0 + 1 | 0; + if(_tC_ !== i$0){var i$0=_tG_;continue} + break}} + var + digits=n[1], + buf= + caml_create_bytes + (caml_ml_string_length(s) + ((digits - 1 | 0) / 3 | 0) | 0), + pos=[0,0], + put=function(c){caml_bytes_set(buf,pos[1],c);pos[1]++;return 0}, + left=[0,((digits - 1 | 0) % 3 | 0) + 1 | 0], + _tE_=caml_ml_string_length(s) - 1 | 0, + _tD_=0; + if(! (_tE_ < 0)) + {var i=_tD_; + for(;;) + {var c=caml_string_unsafe_get(s,i); + if(9 < c - 48 >>> 0) + put(c); + else + {if(0 === left[1]){put(95);left[1] = 3}left[1] += -1;put(c)} + var _tF_=i + 1 | 0; + if(_tE_ !== i){var i=_tF_;continue} + break}} + return caml_string_of_bytes(buf)} + return s} + function convert_int(iconv,n) + {switch(iconv) + {case 1:var _tA_=cst_d$3;break; + case 2:var _tA_=cst_d$4;break; + case 4:var _tA_=cst_i$1;break; + case 5:var _tA_=cst_i$2;break; + case 6:var _tA_=cst_x;break; + case 7:var _tA_=cst_x$0;break; + case 8:var _tA_=cst_X$0;break; + case 9:var _tA_=cst_X$1;break; + case 10:var _tA_=cst_o;break; + case 11:var _tA_=cst_o$0;break; + case 0: + case 13:var _tA_=cst_d$2;break; + case 3: + case 14:var _tA_=cst_i$0;break; + default:var _tA_=cst_u} + return transform_int_alt(iconv,caml_format_int(_tA_,n))} + function convert_int32(iconv,n) + {switch(iconv) + {case 1:var _tz_=cst_ld$0;break; + case 2:var _tz_=cst_ld$1;break; + case 4:var _tz_=cst_li$1;break; + case 5:var _tz_=cst_li$2;break; + case 6:var _tz_=cst_lx;break; + case 7:var _tz_=cst_lx$0;break; + case 8:var _tz_=cst_lX;break; + case 9:var _tz_=cst_lX$0;break; + case 10:var _tz_=cst_lo;break; + case 11:var _tz_=cst_lo$0;break; + case 0: + case 13:var _tz_=cst_ld;break; + case 3: + case 14:var _tz_=cst_li$0;break; + default:var _tz_=cst_lu} + return transform_int_alt(iconv,caml_format_int(_tz_,n))} + function convert_nativeint(iconv,n) + {switch(iconv) + {case 1:var _ty_=cst_nd$0;break; + case 2:var _ty_=cst_nd$1;break; + case 4:var _ty_=cst_ni$1;break; + case 5:var _ty_=cst_ni$2;break; + case 6:var _ty_=cst_nx;break; + case 7:var _ty_=cst_nx$0;break; + case 8:var _ty_=cst_nX;break; + case 9:var _ty_=cst_nX$0;break; + case 10:var _ty_=cst_no;break; + case 11:var _ty_=cst_no$0;break; + case 0: + case 13:var _ty_=cst_nd;break; + case 3: + case 14:var _ty_=cst_ni$0;break; + default:var _ty_=cst_nu} + return transform_int_alt(iconv,caml_format_int(_ty_,n))} + function convert_int64(iconv,n) + {switch(iconv) + {case 1:var _tx_=cst_Ld$0;break; + case 2:var _tx_=cst_Ld$1;break; + case 4:var _tx_=cst_Li$1;break; + case 5:var _tx_=cst_Li$2;break; + case 6:var _tx_=cst_Lx;break; + case 7:var _tx_=cst_Lx$0;break; + case 8:var _tx_=cst_LX;break; + case 9:var _tx_=cst_LX$0;break; + case 10:var _tx_=cst_Lo;break; + case 11:var _tx_=cst_Lo$0;break; + case 0: + case 13:var _tx_=cst_Ld;break; + case 3: + case 14:var _tx_=cst_Li$0;break; + default:var _tx_=cst_Lu} + return transform_int_alt(iconv,caml_int64_format(_tx_,n))} + function convert_float(fconv,prec,x) + {function hex(param) + {switch(fconv[1]) + {case 0:var sign=45;break; + case 1:var sign=43;break; + default:var sign=32} + return runtime.caml_hexstring_of_float(x,prec,sign)} + function caml_special_val(str) + {var match=runtime.caml_classify_float(x); + return 3 === match + ?x < 0.?cst_neg_infinity:cst_infinity + :4 <= match?cst_nan:str} + switch(fconv[2]) + {case 5: + var + str=caml_format_float(format_of_fconv(fconv,prec),x), + len=caml_ml_string_length(str), + i=0; + for(;;) + {if(i === len) + var _tv_=0; + else + {var match=caml_string_get(str,i),_tu_=match - 46 | 0,switch$0=0; + if(23 < _tu_ >>> 0) + {if(55 === _tu_)switch$0 = 1} + else + if(21 < _tu_ - 1 >>> 0)switch$0 = 1; + if(! switch$0){var i$0=i + 1 | 0,i=i$0;continue} + var _tv_=1} + var _tw_=_tv_?str:cat(str,cst$29); + return caml_special_val(_tw_)} + case 6:return hex(0); + case 7:return uppercase_ascii$1(hex(0)); + case 8:return caml_special_val(hex(0)); + default:return caml_format_float(format_of_fconv(fconv,prec),x)}} + function string_of_fmtty(fmtty) + {var buf=buffer_create(16); + bprint_fmtty(buf,fmtty); + return buffer_contents(buf)} + function make_printf$0(counter,k,acc,fmt) + {var k$0=k,acc$0=acc,fmt$0=fmt; + for(;;) + if(typeof fmt$0 === "number") + return caml_call1(k$0,acc$0); + else + switch(fmt$0[0]) + {case 0: + var rest=fmt$0[1]; + return function(c) + {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest)}; + case 1: + var rest$0=fmt$0[1]; + return function(c) + {var + str=escaped(c), + l=caml_ml_string_length(str), + res=make$0(l + 2 | 0,39); + caml_blit_string(str,0,res,1,l); + var new_acc=[4,acc$0,caml_string_of_bytes(res)]; + return make_printf(k$0,new_acc,rest$0)}; + case 2: + var rest$1=fmt$0[2],pad=fmt$0[1]; + return make_padding(k$0,acc$0,rest$1,pad,function(str){return str}); + case 3: + var rest$2=fmt$0[2],pad$0=fmt$0[1]; + return make_padding(k$0,acc$0,rest$2,pad$0,string_to_caml_string); + case 4: + var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1]; + return make_int_padding_precision + (k$0,acc$0,rest$3,pad$1,prec,convert_int,iconv); + case 5: + var + rest$4=fmt$0[4], + prec$0=fmt$0[3], + pad$2=fmt$0[2], + iconv$0=fmt$0[1]; + return make_int_padding_precision + (k$0,acc$0,rest$4,pad$2,prec$0,convert_int32,iconv$0); + case 6: + var + rest$5=fmt$0[4], + prec$1=fmt$0[3], + pad$3=fmt$0[2], + iconv$1=fmt$0[1]; + return make_int_padding_precision + (k$0,acc$0,rest$5,pad$3,prec$1,convert_nativeint,iconv$1); + case 7: + var + rest$6=fmt$0[4], + prec$2=fmt$0[3], + pad$4=fmt$0[2], + iconv$2=fmt$0[1]; + return make_int_padding_precision + (k$0,acc$0,rest$6,pad$4,prec$2,convert_int64,iconv$2); + case 8: + var rest$7=fmt$0[4],prec$3=fmt$0[3],pad$5=fmt$0[2],fconv=fmt$0[1]; + if(typeof pad$5 === "number") + {if(typeof prec$3 === "number") + return prec$3 + ?function(p,x) + {var str=convert_float(fconv,p,x); + return make_printf(k$0,[4,acc$0,str],rest$7)} + :function(x) + {var + str= + convert_float(fconv,default_float_precision(fconv),x); + return make_printf(k$0,[4,acc$0,str],rest$7)}; + var p=prec$3[1]; + return function(x) + {var str=convert_float(fconv,p,x); + return make_printf(k$0,[4,acc$0,str],rest$7)}} + else + {if(0 === pad$5[0]) + {var _tr_=pad$5[2],_ts_=pad$5[1]; + if(typeof prec$3 === "number") + return prec$3 + ?function(p,x) + {var str=fix_padding(_ts_,_tr_,convert_float(fconv,p,x)); + return make_printf(k$0,[4,acc$0,str],rest$7)} + :function(x) + {var + str=convert_float(fconv,default_float_precision(fconv),x), + str$0=fix_padding(_ts_,_tr_,str); + return make_printf(k$0,[4,acc$0,str$0],rest$7)}; + var p$0=prec$3[1]; + return function(x) + {var str=fix_padding(_ts_,_tr_,convert_float(fconv,p$0,x)); + return make_printf(k$0,[4,acc$0,str],rest$7)}} + var _tt_=pad$5[1]; + if(typeof prec$3 === "number") + return prec$3 + ?function(w,p,x) + {var str=fix_padding(_tt_,w,convert_float(fconv,p,x)); + return make_printf(k$0,[4,acc$0,str],rest$7)} + :function(w,x) + {var + str=convert_float(fconv,default_float_precision(fconv),x), + str$0=fix_padding(_tt_,w,str); + return make_printf(k$0,[4,acc$0,str$0],rest$7)}; + var p$1=prec$3[1]; + return function(w,x) + {var str=fix_padding(_tt_,w,convert_float(fconv,p$1,x)); + return make_printf(k$0,[4,acc$0,str],rest$7)}} + case 9: + var rest$8=fmt$0[2],pad$6=fmt$0[1]; + return make_padding(k$0,acc$0,rest$8,pad$6,string_of_bool); + case 10: + var fmt$1=fmt$0[1],acc$1=[7,acc$0],acc$0=acc$1,fmt$0=fmt$1; + continue; + case 11: + var + fmt$2=fmt$0[2], + str=fmt$0[1], + acc$2=[2,acc$0,str], + acc$0=acc$2, + fmt$0=fmt$2; + continue; + case 12: + var + fmt$3=fmt$0[2], + chr=fmt$0[1], + acc$3=[3,acc$0,chr], + acc$0=acc$3, + fmt$0=fmt$3; + continue; + case 13: + var + rest$9=fmt$0[3], + sub_fmtty=fmt$0[2], + ty=string_of_fmtty(sub_fmtty); + return function(str){return make_printf(k$0,[4,acc$0,ty],rest$9)}; + case 14: + var rest$10=fmt$0[3],fmtty=fmt$0[2]; + return function(param) + {var fmt=param[1]; + return make_printf + (k$0,acc$0,concat_fmt(recast(fmt,fmtty),rest$10))}; + case 15: + var rest$11=fmt$0[1]; + return function(f,x) + {return make_printf + (k$0, + [6,acc$0,function(o){return caml_call2(f,o,x)}], + rest$11)}; + case 16: + var rest$12=fmt$0[1]; + return function(f){return make_printf(k$0,[6,acc$0,f],rest$12)}; + case 17: + var + fmt$4=fmt$0[2], + fmting_lit=fmt$0[1], + acc$4=[0,acc$0,fmting_lit], + acc$0=acc$4, + fmt$0=fmt$4; + continue; + case 18: + var _tp_=fmt$0[1]; + if(0 === _tp_[0]) + {var + rest$13=fmt$0[2], + match=_tp_[1], + fmt$5=match[1], + k$3= + function(acc,k,rest) + {function k$0(kacc) + {return make_printf(k,[1,acc,[0,kacc]],rest)} + return k$0}, + k$1=k$3(acc$0,k$0,rest$13), + k$0=k$1, + acc$0=0, + fmt$0=fmt$5; + continue} + var + rest$14=fmt$0[2], + match$0=_tp_[1], + fmt$6=match$0[1], + k$4= + function(acc,k,rest) + {function k$0(kacc){return make_printf(k,[1,acc,[1,kacc]],rest)} + return k$0}, + k$2=k$4(acc$0,k$0,rest$14), + k$0=k$2, + acc$0=0, + fmt$0=fmt$6; + continue; + case 19:throw [0,Assert_failure,_ay_]; + case 20: + var rest$15=fmt$0[3],new_acc=[8,acc$0,cst_Printf_bad_conversion]; + return function(param){return make_printf(k$0,new_acc,rest$15)}; + case 21: + var rest$16=fmt$0[2]; + return function(n) + {var new_acc=[4,acc$0,caml_format_int(cst_u$0,n)]; + return make_printf(k$0,new_acc,rest$16)}; + case 22: + var rest$17=fmt$0[1]; + return function(c) + {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest$17)}; + case 23: + var rest$18=fmt$0[2],ign=fmt$0[1]; + if(counter < 50) + {var counter$1=counter + 1 | 0; + return make_ignored_param$0(counter$1,k$0,acc$0,ign,rest$18)} + return caml_trampoline_return + (make_ignored_param$0,[0,k$0,acc$0,ign,rest$18]); + default: + var + rest$19=fmt$0[3], + f=fmt$0[2], + arity=fmt$0[1], + _tq_=caml_call1(f,0); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_custom$0(counter$0,k$0,acc$0,rest$19,arity,_tq_)} + return caml_trampoline_return + (make_custom$0,[0,k$0,acc$0,rest$19,arity,_tq_])}} + function make_ignored_param$0(counter,k,acc,ign,fmt) + {if(typeof ign === "number") + switch(ign) + {case 0: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_invalid_arg(counter$0,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 1: + if(counter < 50) + {var counter$1=counter + 1 | 0; + return make_invalid_arg(counter$1,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 2:throw [0,Assert_failure,_az_]; + default: + if(counter < 50) + {var counter$2=counter + 1 | 0; + return make_invalid_arg(counter$2,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])} + else + switch(ign[0]) + {case 0: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return make_invalid_arg(counter$3,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 1: + if(counter < 50) + {var counter$4=counter + 1 | 0; + return make_invalid_arg(counter$4,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 2: + if(counter < 50) + {var counter$5=counter + 1 | 0; + return make_invalid_arg(counter$5,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 3: + if(counter < 50) + {var counter$6=counter + 1 | 0; + return make_invalid_arg(counter$6,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 4: + if(counter < 50) + {var counter$7=counter + 1 | 0; + return make_invalid_arg(counter$7,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 5: + if(counter < 50) + {var counter$8=counter + 1 | 0; + return make_invalid_arg(counter$8,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 6: + if(counter < 50) + {var counter$9=counter + 1 | 0; + return make_invalid_arg(counter$9,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 7: + if(counter < 50) + {var counter$10=counter + 1 | 0; + return make_invalid_arg(counter$10,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 8: + if(counter < 50) + {var counter$11=counter + 1 | 0; + return make_invalid_arg(counter$11,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + case 9: + var fmtty=ign[2]; + if(counter < 50) + {var counter$14=counter + 1 | 0; + return make_from_fmtty$0(counter$14,k,acc,fmtty,fmt)} + return caml_trampoline_return(make_from_fmtty$0,[0,k,acc,fmtty,fmt]); + case 10: + if(counter < 50) + {var counter$12=counter + 1 | 0; + return make_invalid_arg(counter$12,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); + default: + if(counter < 50) + {var counter$13=counter + 1 | 0; + return make_invalid_arg(counter$13,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}} + function make_from_fmtty$0(counter,k,acc,fmtty,fmt) + {if(typeof fmtty === "number") + {if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_invalid_arg(counter$0,k,acc,fmt)} + return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])} + else + switch(fmtty[0]) + {case 0: + var rest=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest,fmt)}; + case 1: + var rest$0=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$0,fmt)}; + case 2: + var rest$1=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$1,fmt)}; + case 3: + var rest$2=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$2,fmt)}; + case 4: + var rest$3=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$3,fmt)}; + case 5: + var rest$4=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$4,fmt)}; + case 6: + var rest$5=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$5,fmt)}; + case 7: + var rest$6=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$6,fmt)}; + case 8: + var rest$7=fmtty[2]; + return function(param){return make_from_fmtty(k,acc,rest$7,fmt)}; + case 9: + var + rest$8=fmtty[3], + ty2=fmtty[2], + ty1=fmtty[1], + ty=trans(symm(ty1),ty2); + return function(param) + {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)}; + case 10: + var rest$9=fmtty[1]; + return function(param,_to_) + {return make_from_fmtty(k,acc,rest$9,fmt)}; + case 11: + var rest$10=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$10,fmt)}; + case 12: + var rest$11=fmtty[1]; + return function(param){return make_from_fmtty(k,acc,rest$11,fmt)}; + case 13:throw [0,Assert_failure,_aA_]; + default:throw [0,Assert_failure,_aB_]}} + function make_invalid_arg(counter,k,acc,fmt) + {var _tn_=[8,acc,cst_Printf_bad_conversion$0]; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_printf$0(counter$0,k,_tn_,fmt)} + return caml_trampoline_return(make_printf$0,[0,k,_tn_,fmt])} + function make_custom$0(counter,k,acc,rest,arity,f) + {if(arity) + {var arity$0=arity[1]; + return function(x) + {return make_custom(k,acc,rest,arity$0,caml_call1(f,x))}} + var _tm_=[4,acc,f]; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_printf$0(counter$0,k,_tm_,rest)} + return caml_trampoline_return(make_printf$0,[0,k,_tm_,rest])} + function make_printf(k,acc,fmt) + {return caml_trampoline(make_printf$0(0,k,acc,fmt))} + function make_ignored_param(k,acc,ign,fmt) + {return caml_trampoline(make_ignored_param$0(0,k,acc,ign,fmt))} + function make_from_fmtty(k,acc,fmtty,fmt) + {return caml_trampoline(make_from_fmtty$0(0,k,acc,fmtty,fmt))} + function make_custom(k,acc,rest,arity,f) + {return caml_trampoline(make_custom$0(0,k,acc,rest,arity,f))} + function make_padding(k,acc,fmt,pad,trans) + {if(typeof pad === "number") + return function(x) + {var new_acc=[4,acc,caml_call1(trans,x)]; + return make_printf(k,new_acc,fmt)}; + else + {if(0 === pad[0]) + {var width=pad[2],padty=pad[1]; + return function(x) + {var new_acc=[4,acc,fix_padding(padty,width,caml_call1(trans,x))]; + return make_printf(k,new_acc,fmt)}} + var padty$0=pad[1]; + return function(w,x) + {var new_acc=[4,acc,fix_padding(padty$0,w,caml_call1(trans,x))]; + return make_printf(k,new_acc,fmt)}}} + function make_int_padding_precision(k,acc,fmt,pad,prec,trans,iconv) + {if(typeof pad === "number") + {if(typeof prec === "number") + return prec + ?function(p,x) + {var str=fix_int_precision(p,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)} + :function(x) + {var str=caml_call2(trans,iconv,x); + return make_printf(k,[4,acc,str],fmt)}; + var p=prec[1]; + return function(x) + {var str=fix_int_precision(p,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)}} + else + {if(0 === pad[0]) + {var _tj_=pad[2],_tk_=pad[1]; + if(typeof prec === "number") + return prec + ?function(p,x) + {var + str= + fix_padding + (_tk_,_tj_,fix_int_precision(p,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)} + :function(x) + {var str=fix_padding(_tk_,_tj_,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)}; + var p$0=prec[1]; + return function(x) + {var + str= + fix_padding + (_tk_,_tj_,fix_int_precision(p$0,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)}} + var _tl_=pad[1]; + if(typeof prec === "number") + return prec + ?function(w,p,x) + {var + str= + fix_padding + (_tl_,w,fix_int_precision(p,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)} + :function(w,x) + {var str=fix_padding(_tl_,w,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)}; + var p$1=prec[1]; + return function(w,x) + {var + str= + fix_padding + (_tl_,w,fix_int_precision(p$1,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)}}} + function make_iprintf$0(counter,k,o,fmt) + {var k$0=k,fmt$0=fmt; + for(;;) + if(typeof fmt$0 === "number") + return caml_call1(k$0,o); + else + switch(fmt$0[0]) + {case 0: + var rest=fmt$0[1],_sA_=make_iprintf(k$0,o,rest); + return function(_ti_){return _sA_}; + case 1: + var rest$0=fmt$0[1],_sB_=make_iprintf(k$0,o,rest$0); + return function(_th_){return _sB_}; + case 2: + var _sC_=fmt$0[1]; + if(typeof _sC_ === "number") + {var rest$1=fmt$0[2],_sD_=make_iprintf(k$0,o,rest$1); + return function(_td_){return _sD_}} + else + {if(0 === _sC_[0]) + {var rest$2=fmt$0[2],_sE_=make_iprintf(k$0,o,rest$2); + return function(_tg_){return _sE_}} + var + rest$3=fmt$0[2], + _sF_=make_iprintf(k$0,o,rest$3), + _sG_=function(_tf_){return _sF_}; + return function(_te_){return _sG_}} + case 3: + var _sH_=fmt$0[1]; + if(typeof _sH_ === "number") + {var rest$4=fmt$0[2],_sI_=make_iprintf(k$0,o,rest$4); + return function(_s$_){return _sI_}} + else + {if(0 === _sH_[0]) + {var rest$5=fmt$0[2],_sJ_=make_iprintf(k$0,o,rest$5); + return function(_tc_){return _sJ_}} + var + rest$6=fmt$0[2], + _sK_=make_iprintf(k$0,o,rest$6), + _sL_=function(_tb_){return _sK_}; + return function(_ta_){return _sL_}} + case 4: + var rest$7=fmt$0[4],prec=fmt$0[3],pad=fmt$0[2]; + return fn_of_padding_precision(k$0,o,rest$7,pad,prec); + case 5: + var rest$8=fmt$0[4],prec$0=fmt$0[3],pad$0=fmt$0[2]; + return fn_of_padding_precision(k$0,o,rest$8,pad$0,prec$0); + case 6: + var rest$9=fmt$0[4],prec$1=fmt$0[3],pad$1=fmt$0[2]; + return fn_of_padding_precision(k$0,o,rest$9,pad$1,prec$1); + case 7: + var rest$10=fmt$0[4],prec$2=fmt$0[3],pad$2=fmt$0[2]; + return fn_of_padding_precision(k$0,o,rest$10,pad$2,prec$2); + case 8: + var rest$11=fmt$0[4],prec$3=fmt$0[3],pad$3=fmt$0[2]; + return fn_of_padding_precision(k$0,o,rest$11,pad$3,prec$3); + case 9: + var _sM_=fmt$0[1]; + if(typeof _sM_ === "number") + {var rest$12=fmt$0[2],_sN_=make_iprintf(k$0,o,rest$12); + return function(_s7_){return _sN_}} + else + {if(0 === _sM_[0]) + {var rest$13=fmt$0[2],_sO_=make_iprintf(k$0,o,rest$13); + return function(_s__){return _sO_}} + var + rest$14=fmt$0[2], + _sP_=make_iprintf(k$0,o,rest$14), + _sQ_=function(_s9_){return _sP_}; + return function(_s8_){return _sQ_}} + case 10:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue; + case 11:var fmt$2=fmt$0[2],fmt$0=fmt$2;continue; + case 12:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue; + case 13: + var rest$15=fmt$0[3],_sR_=make_iprintf(k$0,o,rest$15); + return function(_s6_){return _sR_}; + case 14: + var rest$16=fmt$0[3],fmtty=fmt$0[2]; + return function(param) + {var fmt=param[1]; + return make_iprintf(k$0,o,concat_fmt(recast(fmt,fmtty),rest$16))}; + case 15: + var + rest$17=fmt$0[1], + _sS_=make_iprintf(k$0,o,rest$17), + _sT_=function(_s5_){return _sS_}; + return function(_s4_){return _sT_}; + case 16: + var rest$18=fmt$0[1],_sU_=make_iprintf(k$0,o,rest$18); + return function(_s3_){return _sU_}; + case 17:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue; + case 18: + var _sV_=fmt$0[1]; + if(0 === _sV_[0]) + {var + rest$19=fmt$0[2], + match=_sV_[1], + fmt$5=match[1], + k$3= + function(k,rest) + {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0}, + k$1=k$3(k$0,rest$19), + k$0=k$1, + fmt$0=fmt$5; + continue} + var + rest$20=fmt$0[2], + match$0=_sV_[1], + fmt$6=match$0[1], + k$4= + function(k,rest) + {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0}, + k$2=k$4(k$0,rest$20), + k$0=k$2, + fmt$0=fmt$6; + continue; + case 19:throw [0,Assert_failure,_aC_]; + case 20: + var rest$21=fmt$0[3],_sW_=make_iprintf(k$0,o,rest$21); + return function(_s2_){return _sW_}; + case 21: + var rest$22=fmt$0[2],_sX_=make_iprintf(k$0,o,rest$22); + return function(_s1_){return _sX_}; + case 22: + var rest$23=fmt$0[1],_sY_=make_iprintf(k$0,o,rest$23); + return function(_s0_){return _sY_}; + case 23: + var rest$24=fmt$0[2],ign=fmt$0[1],_sZ_=0; + return make_ignored_param + (function(param){return caml_call1(k$0,o)},_sZ_,ign,rest$24); + default: + var rest$25=fmt$0[3],arity=fmt$0[1]; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return fn_of_custom_arity$0(counter$0,k$0,o,rest$25,arity)} + return caml_trampoline_return + (fn_of_custom_arity$0,[0,k$0,o,rest$25,arity])}} + function fn_of_custom_arity$0(counter,k,o,fmt,param) + {if(param) + {var arity=param[1],_sy_=fn_of_custom_arity(k,o,fmt,arity); + return function(_sz_){return _sy_}} + if(counter < 50) + {var counter$0=counter + 1 | 0; + return make_iprintf$0(counter$0,k,o,fmt)} + return caml_trampoline_return(make_iprintf$0,[0,k,o,fmt])} + function make_iprintf(k,o,fmt) + {return caml_trampoline(make_iprintf$0(0,k,o,fmt))} + function fn_of_custom_arity(k,o,fmt,param) + {return caml_trampoline(fn_of_custom_arity$0(0,k,o,fmt,param))} + function fn_of_padding_precision(k,o,fmt,pad,prec) + {if(typeof pad === "number") + {if(typeof prec === "number") + {if(prec) + {var _r6_=make_iprintf(k,o,fmt),_r7_=function(_sm_){return _r6_}; + return function(_sl_){return _r7_}} + var _r8_=make_iprintf(k,o,fmt); + return function(_sk_){return _r8_}} + var _r9_=make_iprintf(k,o,fmt); + return function(_sj_){return _r9_}} + else + {if(0 === pad[0]) + {if(typeof prec === "number") + {if(prec) + {var _r__=make_iprintf(k,o,fmt),_r$_=function(_sx_){return _r__}; + return function(_sw_){return _r$_}} + var _sa_=make_iprintf(k,o,fmt); + return function(_sv_){return _sa_}} + var _sb_=make_iprintf(k,o,fmt); + return function(_su_){return _sb_}} + if(typeof prec === "number") + {if(prec) + {var + _sc_=make_iprintf(k,o,fmt), + _sd_=function(_st_){return _sc_}, + _se_=function(_ss_){return _sd_}; + return function(_sr_){return _se_}} + var _sf_=make_iprintf(k,o,fmt),_sg_=function(_sq_){return _sf_}; + return function(_sp_){return _sg_}} + var _sh_=make_iprintf(k,o,fmt),_si_=function(_so_){return _sh_}; + return function(_sn_){return _si_}}} + function output_acc(o,acc) + {var acc$0=acc; + for(;;) + if(typeof acc$0 === "number") + return 0; + else + switch(acc$0[0]) + {case 0: + var + fmting_lit=acc$0[2], + p=acc$0[1], + s=string_of_formatting_lit(fmting_lit); + output_acc(o,p); + return output_string(o,s); + case 1: + var _r4_=acc$0[2],_r5_=acc$0[1]; + if(0 === _r4_[0]) + {var acc$1=_r4_[1]; + output_acc(o,_r5_); + output_string(o,cst$30); + var acc$0=acc$1; + continue} + var acc$2=_r4_[1]; + output_acc(o,_r5_); + output_string(o,cst$31); + var acc$0=acc$2; + continue; + case 6: + var f=acc$0[2],p$2=acc$0[1]; + output_acc(o,p$2); + return caml_call1(f,o); + case 7:var p$3=acc$0[1];output_acc(o,p$3);return caml_ml_flush(o); + case 8: + var msg=acc$0[2],p$4=acc$0[1]; + output_acc(o,p$4); + return invalid_arg(msg); + case 2: + case 4: + var s$0=acc$0[2],p$0=acc$0[1]; + output_acc(o,p$0); + return output_string(o,s$0); + default: + var c=acc$0[2],p$1=acc$0[1]; + output_acc(o,p$1); + return caml_ml_output_char(o,c)}} + function bufput_acc(b,acc) + {var acc$0=acc; + for(;;) + if(typeof acc$0 === "number") + return 0; + else + switch(acc$0[0]) + {case 0: + var + fmting_lit=acc$0[2], + p=acc$0[1], + s=string_of_formatting_lit(fmting_lit); + bufput_acc(b,p); + return add_string(b,s); + case 1: + var _r2_=acc$0[2],_r3_=acc$0[1]; + if(0 === _r2_[0]) + {var acc$1=_r2_[1]; + bufput_acc(b,_r3_); + add_string(b,cst$32); + var acc$0=acc$1; + continue} + var acc$2=_r2_[1]; + bufput_acc(b,_r3_); + add_string(b,cst$33); + var acc$0=acc$2; + continue; + case 6: + var f=acc$0[2],p$2=acc$0[1]; + bufput_acc(b,p$2); + return caml_call1(f,b); + case 7:var acc$3=acc$0[1],acc$0=acc$3;continue; + case 8: + var msg=acc$0[2],p$3=acc$0[1]; + bufput_acc(b,p$3); + return invalid_arg(msg); + case 2: + case 4: + var s$0=acc$0[2],p$0=acc$0[1]; + bufput_acc(b,p$0); + return add_string(b,s$0); + default: + var c=acc$0[2],p$1=acc$0[1];bufput_acc(b,p$1);return add_char(b,c)}} + function strput_acc(b,acc) + {var acc$0=acc; + for(;;) + if(typeof acc$0 === "number") + return 0; + else + switch(acc$0[0]) + {case 0: + var + fmting_lit=acc$0[2], + p=acc$0[1], + s=string_of_formatting_lit(fmting_lit); + strput_acc(b,p); + return add_string(b,s); + case 1: + var _r0_=acc$0[2],_r1_=acc$0[1]; + if(0 === _r0_[0]) + {var acc$1=_r0_[1]; + strput_acc(b,_r1_); + add_string(b,cst$34); + var acc$0=acc$1; + continue} + var acc$2=_r0_[1]; + strput_acc(b,_r1_); + add_string(b,cst$35); + var acc$0=acc$2; + continue; + case 6: + var f=acc$0[2],p$2=acc$0[1]; + strput_acc(b,p$2); + return add_string(b,caml_call1(f,0)); + case 7:var acc$3=acc$0[1],acc$0=acc$3;continue; + case 8: + var msg=acc$0[2],p$3=acc$0[1]; + strput_acc(b,p$3); + return invalid_arg(msg); + case 2: + case 4: + var s$0=acc$0[2],p$0=acc$0[1]; + strput_acc(b,p$0); + return add_string(b,s$0); + default: + var c=acc$0[2],p$1=acc$0[1];strput_acc(b,p$1);return add_char(b,c)}} + function failwith_message(param) + {var fmt=param[1],buf=create$2(256); + function k(acc){strput_acc(buf,acc);return failwith(contents(buf))} + return make_printf(k,0,fmt)} + function open_box_of_string(str) + {if(caml_string_equal(str,cst$36))return _aD_; + var len=caml_ml_string_length(str); + function invalid_box(param) + {return caml_call1(failwith_message(_aE_),str)} + function parse_spaces(i) + {var i$0=i; + for(;;) + {if(i$0 === len)return i$0; + var match=caml_string_get(str,i$0); + if(9 !== match && 32 !== match)return i$0; + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function parse_lword(i,j) + {var j$0=j; + for(;;) + {if(j$0 === len)return j$0; + var match=caml_string_get(str,j$0); + if(25 < match - 97 >>> 0)return j$0; + var j$1=j$0 + 1 | 0,j$0=j$1; + continue}} + function parse_int(i,j) + {var j$0=j; + for(;;) + {if(j$0 === len)return j$0; + var match=caml_string_get(str,j$0),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + else + if(45 === match)switch$0 = 1; + if(switch$0){var j$1=j$0 + 1 | 0,j$0=j$1;continue} + return j$0}} + var + wstart=parse_spaces(0), + wend=parse_lword(wstart,wstart), + box_name=sub$0(str,wstart,wend - wstart | 0), + nstart=parse_spaces(wend), + nend=parse_int(nstart,nstart); + if(nstart === nend) + var indent=0; + else + try + {var + _rY_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)), + indent=_rY_} + catch(_rZ_) + {_rZ_ = caml_wrap_exception(_rZ_); + if(_rZ_[1] !== Failure)throw _rZ_; + var indent=invalid_box(0)} + var exp_end=parse_spaces(nend); + if(exp_end !== len)invalid_box(0); + var switch$0=0; + if + (caml_string_notequal(box_name,cst$37) + && + caml_string_notequal(box_name,cst_b$0)) + var + box_type= + caml_string_notequal(box_name,cst_h) + ?caml_string_notequal(box_name,cst_hov) + ?caml_string_notequal(box_name,cst_hv) + ?caml_string_notequal(box_name,cst_v)?invalid_box(0):1 + :2 + :3 + :0; + else + switch$0 = 1; + if(switch$0)var box_type=4; + return [0,indent,box_type]} + function make_padding_fmt_ebb(pad,fmt) + {if(typeof pad === "number") + return [0,0,fmt]; + else + {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],fmt]} + var s$0=pad[1]; + return [0,[1,s$0],fmt]}} + function make_padprec_fmt_ebb(pad,prec,fmt) + {if(typeof prec === "number") + var match=prec?[0,1,fmt]:[0,0,fmt]; + else + var p=prec[1],match=[0,[0,p],fmt]; + var prec$0=match[1]; + if(typeof pad === "number") + return [0,0,prec$0,fmt]; + else + {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],prec$0,fmt]} + var s$0=pad[1]; + return [0,[1,s$0],prec$0,fmt]}} + function fmt_ebb_of_string(legacy_behavior,str) + {if(legacy_behavior) + var flag=legacy_behavior[1],legacy_behavior$0=flag; + else + var legacy_behavior$0=1; + function invalid_format_message(str_ind,msg) + {return caml_call3(failwith_message(_aF_),str,str_ind,msg)} + function unexpected_end_of_format(end_ind) + {return invalid_format_message(end_ind,cst_unexpected_end_of_format)} + function invalid_format_without(str_ind,c,s) + {return caml_call4(failwith_message(_aG_),str,str_ind,c,s)} + function expected_character(str_ind,expected,read) + {return caml_call4(failwith_message(_aH_),str,str_ind,expected,read)} + function add_literal(lit_start,str_ind,fmt) + {var size=str_ind - lit_start | 0; + return 0 === size + ?[0,fmt] + :1 === size + ?[0,[12,caml_string_get(str,lit_start),fmt]] + :[0,[11,sub$0(str,lit_start,size),fmt]]} + function parse_positive(str_ind,end_ind,acc) + {var str_ind$0=str_ind,acc$0=acc; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var c=caml_string_get(str,str_ind$0); + if(9 < c - 48 >>> 0)return [0,str_ind$0,acc$0]; + var acc$1=(acc$0 * 10 | 0) + (c - 48 | 0) | 0; + if(max_string_length < acc$1) + return caml_call3 + (failwith_message(_aY_),str,acc$1,max_string_length); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,acc$0=acc$1; + continue}} + function parse_integer(str_ind,end_ind) + {if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var match=caml_string_get(str,str_ind); + if(48 <= match) + {if(! (58 <= match))return parse_positive(str_ind,end_ind,0)} + else + if(45 === match) + {if((str_ind + 1 | 0) === end_ind)unexpected_end_of_format(end_ind); + var c=caml_string_get(str,str_ind + 1 | 0); + if(9 < c - 48 >>> 0) + return expected_character(str_ind + 1 | 0,cst_digit,c); + var + match$0=parse_positive(str_ind + 1 | 0,end_ind,0), + n=match$0[2], + next_ind=match$0[1]; + return [0,next_ind,- n | 0]} + throw [0,Assert_failure,_aZ_]} + function parse_spaces(str_ind,end_ind) + {var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + if(32 === caml_string_get(str,str_ind$0)) + {var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;continue} + return str_ind$0}} + function incompatible_flag(pct_ind,str_ind,symb,option) + {var subfmt=sub$0(str,pct_ind,str_ind - pct_ind | 0); + return caml_call5 + (failwith_message(_a4_),str,pct_ind,option,symb,subfmt)} + function compute_int_conv(pct_ind,str_ind,plus,hash,space,symb) + {var plus$0=plus,hash$0=hash,space$0=space; + for(;;) + {var switch$0=0; + if(plus$0) + {if(hash$0) + switch$0 = 1; + else + if(! space$0){if(100 === symb)return 1;if(105 === symb)return 4}} + else + if(hash$0) + if(space$0) + switch$0 = 1; + else + {var switcher$0=symb - 88 | 0; + if(32 < switcher$0 >>> 0) + switch$0 = 1; + else + switch(switcher$0) + {case 0:return 9; + case 12:return 13; + case 17:return 14; + case 23:return 11; + case 29:return 15; + case 32:return 7; + default:switch$0 = 1}} + else + if(space$0) + {if(100 === symb)return 2;if(105 === symb)return 5} + else + {var switcher$1=symb - 88 | 0; + if(! (32 < switcher$1 >>> 0)) + switch(switcher$1) + {case 0:return 8; + case 12:return 0; + case 17:return 3; + case 23:return 10; + case 29:return 12; + case 32:return 6 + }} + if(switch$0) + {var switcher=symb - 88 | 0; + if(! (32 < switcher >>> 0)) + switch(switcher) + {case 0:if(legacy_behavior$0)return 9;break; + case 23:if(legacy_behavior$0)return 11;break; + case 32:if(legacy_behavior$0)return 7;break; + case 12: + case 17: + case 29: + if(legacy_behavior$0){var hash$0=0;continue} + return incompatible_flag(pct_ind,str_ind,symb,cst$49) + }} + if(plus$0) + {if(space$0) + {if(legacy_behavior$0){var space$0=0;continue} + return incompatible_flag(pct_ind,str_ind,32,cst$46)} + if(legacy_behavior$0){var plus$0=0;continue} + return incompatible_flag(pct_ind,str_ind,symb,cst$47)} + if(space$0) + {if(legacy_behavior$0){var space$0=0;continue} + return incompatible_flag(pct_ind,str_ind,symb,cst$48)} + throw [0,Assert_failure,_a2_]}} + function search_subformat_end(str_ind,end_ind,c) + {var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind) + caml_call3(failwith_message(_a0_),str,c,end_ind); + var match=caml_string_get(str,str_ind$0); + if(37 === match) + {if((str_ind$0 + 1 | 0) === end_ind) + unexpected_end_of_format(end_ind); + if(caml_string_get(str,str_ind$0 + 1 | 0) === c)return str_ind$0; + var match$0=caml_string_get(str,str_ind$0 + 1 | 0); + if(95 <= match$0) + {if(123 <= match$0) + {if(! (126 <= match$0)) + switch(match$0 - 123 | 0) + {case 0: + var + sub_end=search_subformat_end(str_ind$0 + 2 | 0,end_ind,125), + str_ind$2=sub_end + 2 | 0, + str_ind$0=str_ind$2; + continue; + case 1:break; + default: + return expected_character + (str_ind$0 + 1 | 0,cst_character,125)}} + else + if(! (96 <= match$0)) + {if((str_ind$0 + 2 | 0) === end_ind) + unexpected_end_of_format(end_ind); + var match$1=caml_string_get(str,str_ind$0 + 2 | 0); + if(40 === match$1) + {var + sub_end$0=search_subformat_end(str_ind$0 + 3 | 0,end_ind,41), + str_ind$3=sub_end$0 + 2 | 0, + str_ind$0=str_ind$3; + continue} + if(123 === match$1) + {var + sub_end$1= + search_subformat_end(str_ind$0 + 3 | 0,end_ind,125), + str_ind$4=sub_end$1 + 2 | 0, + str_ind$0=str_ind$4; + continue} + var str_ind$5=str_ind$0 + 3 | 0,str_ind$0=str_ind$5; + continue}} + else + {if(40 === match$0) + {var + sub_end$2=search_subformat_end(str_ind$0 + 2 | 0,end_ind,41), + str_ind$6=sub_end$2 + 2 | 0, + str_ind$0=str_ind$6; + continue} + if(41 === match$0) + return expected_character(str_ind$0 + 1 | 0,cst_character$0,41)} + var str_ind$1=str_ind$0 + 2 | 0,str_ind$0=str_ind$1; + continue} + var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7; + continue}} + function parse_magic_size(str_ind,end_ind) + {try + {var + str_ind_1=parse_spaces(str_ind,end_ind), + match$2=caml_string_get(str,str_ind_1), + switch$0=0; + if(48 <= match$2) + {if(! (58 <= match$2))switch$0 = 1} + else + if(45 === match$2)switch$0 = 1; + if(switch$0) + {var + match$3=parse_integer(str_ind_1,end_ind), + size=match$3[2], + str_ind_2=match$3[1], + str_ind_3=parse_spaces(str_ind_2,end_ind); + if(62 !== caml_string_get(str,str_ind_3))throw Not_found; + var + s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), + _rW_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]} + else + var _rW_=0; + var _rV_=_rW_} + catch(_rX_) + {_rX_ = caml_wrap_exception(_rX_); + if(_rX_ !== Not_found && _rX_[1] !== Failure)throw _rX_; + var _rV_=0} + if(_rV_) + {var + match=_rV_[1], + formatting_lit=match[2], + next_ind=match[1], + match$0=parse(next_ind,end_ind), + fmt_rest=match$0[1]; + return [0,[17,formatting_lit,fmt_rest]]} + var match$1=parse(str_ind,end_ind),fmt_rest$0=match$1[1]; + return [0,[17,_aW_,fmt_rest$0]]} + function parse_good_break(str_ind,end_ind) + {try + {var + _rO_=str_ind === end_ind?1:0, + _rP_=_rO_ || (60 !== caml_string_get(str,str_ind)?1:0); + if(_rP_)throw Not_found; + var + str_ind_1=parse_spaces(str_ind + 1 | 0,end_ind), + match$0=caml_string_get(str,str_ind_1), + switch$0=0; + if(48 <= match$0) + {if(! (58 <= match$0))switch$0 = 1} + else + if(45 === match$0)switch$0 = 1; + if(! switch$0)throw Not_found; + var + match$1=parse_integer(str_ind_1,end_ind), + width=match$1[2], + str_ind_2=match$1[1], + str_ind_3=parse_spaces(str_ind_2,end_ind), + match$2=caml_string_get(str,str_ind_3), + switcher=match$2 - 45 | 0, + switch$1=0; + if(12 < switcher >>> 0) + if(17 === switcher) + var + s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), + _rQ_=[0,s,width,0], + _rR_=str_ind_3 + 1 | 0, + formatting_lit$0=_rQ_, + next_ind=_rR_; + else + switch$1 = 1; + else + if(1 < switcher - 1 >>> 0) + {var + match$3=parse_integer(str_ind_3,end_ind), + offset=match$3[2], + str_ind_4=match$3[1], + str_ind_5=parse_spaces(str_ind_4,end_ind); + if(62 !== caml_string_get(str,str_ind_5))throw Not_found; + var + s$0=sub$0(str,str_ind - 2 | 0,(str_ind_5 - str_ind | 0) + 3 | 0), + _rS_=[0,s$0,width,offset], + _rT_=str_ind_5 + 1 | 0, + formatting_lit$0=_rS_, + next_ind=_rT_} + else + switch$1 = 1; + if(switch$1)throw Not_found} + catch(_rU_) + {_rU_ = caml_wrap_exception(_rU_); + if(_rU_ !== Not_found && _rU_[1] !== Failure)throw _rU_; + var formatting_lit$0=formatting_lit,next_ind=str_ind} + var match=parse(next_ind,end_ind),fmt_rest=match[1]; + return [0,[17,formatting_lit$0,fmt_rest]]} + function parse_tag(is_open_tag,str_ind,end_ind) + {try + {if(str_ind === end_ind)throw Not_found; + var match$0=caml_string_get(str,str_ind); + if(60 === match$0) + {var ind=index_from$0(str,str_ind + 1 | 0,62); + if(end_ind <= ind)throw Not_found; + var + sub_str=sub$0(str,str_ind,(ind - str_ind | 0) + 1 | 0), + match$1=parse(ind + 1 | 0,end_ind), + fmt_rest$0=match$1[1], + match$2=parse(str_ind,ind + 1 | 0), + sub_fmt=match$2[1], + sub_format$0=[0,sub_fmt,sub_str], + formatting$0=is_open_tag?[0,sub_format$0]:[1,sub_format$0], + _rM_=[0,[18,formatting$0,fmt_rest$0]]; + return _rM_} + throw Not_found} + catch(_rN_) + {_rN_ = caml_wrap_exception(_rN_); + if(_rN_ === Not_found) + {var + match=parse(str_ind,end_ind), + fmt_rest=match[1], + formatting=is_open_tag?[0,sub_format]:[1,sub_format]; + return [0,[18,formatting,fmt_rest]]} + throw _rN_}} + function parse_flags(pct_ind,str_ind,end_ind,ign) + {var zero=[0,0],minus=[0,0],plus=[0,0],space=[0,0],hash=[0,0]; + function set_flag(str_ind,flag) + {var _rJ_=flag[1],_rK_=_rJ_?1 - legacy_behavior$0:_rJ_; + if(_rK_) + {var _rL_=caml_string_get(str,str_ind); + caml_call3(failwith_message(_aI_),str,str_ind,_rL_)} + flag[1] = 1; + return 0} + var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var match=caml_string_get(str,str_ind$0),switcher=match - 32 | 0; + if(! (16 < switcher >>> 0)) + switch(switcher) + {case 0: + set_flag(str_ind$0,space); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; + continue; + case 3: + set_flag(str_ind$0,hash); + var str_ind$2=str_ind$0 + 1 | 0,str_ind$0=str_ind$2; + continue; + case 11: + set_flag(str_ind$0,plus); + var str_ind$3=str_ind$0 + 1 | 0,str_ind$0=str_ind$3; + continue; + case 13: + set_flag(str_ind$0,minus); + var str_ind$4=str_ind$0 + 1 | 0,str_ind$0=str_ind$4; + continue; + case 16: + set_flag(str_ind$0,zero); + var str_ind$5=str_ind$0 + 1 | 0,str_ind$0=str_ind$5; + continue + } + var + _rE_=space[1], + _rF_=hash[1], + _rG_=plus[1], + _rH_=minus[1], + _rI_=zero[1]; + if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var + padty= + _rI_ + ?_rH_ + ?legacy_behavior$0 + ?0 + :incompatible_flag(pct_ind,str_ind$0,45,cst_0) + :2 + :_rH_?0:1, + match$0=caml_string_get(str,str_ind$0); + if(48 <= match$0) + {if(! (58 <= match$0)) + {var + match$1=parse_positive(str_ind$0,end_ind,0), + width=match$1[2], + new_ind=match$1[1]; + return parse_after_padding + (pct_ind, + new_ind, + end_ind, + _rH_, + _rG_, + _rF_, + _rE_, + ign, + [0,padty,width])}} + else + if(42 === match$0) + return parse_after_padding + (pct_ind, + str_ind$0 + 1 | 0, + end_ind, + _rH_, + _rG_, + _rF_, + _rE_, + ign, + [1,padty]); + switch(padty) + {case 0: + if(1 - legacy_behavior$0) + invalid_format_without(str_ind$0 - 1 | 0,45,cst_padding); + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,0); + case 1: + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,0); + default: + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,_aJ_)}}} + function parse_after_padding + (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad) + {if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var symb=caml_string_get(str,str_ind); + if(46 === symb) + {var str_ind$0=str_ind + 1 | 0; + if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var + parse_literal= + function(minus,str_ind) + {var + match=parse_positive(str_ind,end_ind,0), + prec=match[2], + new_ind=match[1]; + return parse_after_precision + (pct_ind, + new_ind, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + [0,prec])}, + symb$0=caml_string_get(str,str_ind$0); + if(48 <= symb$0) + {if(! (58 <= symb$0))return parse_literal(minus,str_ind$0)} + else + if(42 <= symb$0) + switch(symb$0 - 42 | 0) + {case 0: + return parse_after_precision + (pct_ind, + str_ind$0 + 1 | 0, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + 1); + case 1: + case 3: + if(legacy_behavior$0) + {var + _rD_=str_ind$0 + 1 | 0, + minus$0=minus || (45 === symb$0?1:0); + return parse_literal(minus$0,_rD_)} + break + } + return legacy_behavior$0 + ?parse_after_precision + (pct_ind, + str_ind$0, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + _aK_) + :invalid_format_without(str_ind$0 - 1 | 0,46,cst_precision)} + return parse_conversion + (pct_ind, + str_ind + 1 | 0, + end_ind, + plus, + hash, + space, + ign, + pad, + 0, + pad, + symb)} + function parse_after_precision + (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad,prec) + {if(str_ind === end_ind)unexpected_end_of_format(end_ind); + function parse_conv(padprec) + {return parse_conversion + (pct_ind, + str_ind + 1 | 0, + end_ind, + plus, + hash, + space, + ign, + pad, + prec, + padprec, + caml_string_get(str,str_ind))} + if(typeof pad === "number") + {if(typeof prec === "number" && ! prec)return parse_conv(0); + if(minus) + {if(typeof prec === "number")return parse_conv(_aL_); + var n=prec[1]; + return parse_conv([0,0,n])} + if(typeof prec === "number")return parse_conv(_aM_); + var n$0=prec[1]; + return parse_conv([0,1,n$0])} + return parse_conv(pad)} + function parse_conversion + (pct_ind,str_ind,end_ind,plus,hash,space,ign,pad,prec,padprec,symb) + {var + plus_used=[0,0], + hash_used=[0,0], + space_used=[0,0], + ign_used=[0,0], + pad_used=[0,0], + prec_used=[0,0]; + function get_plus(param){plus_used[1] = 1;return plus} + function get_hash(param){hash_used[1] = 1;return hash} + function get_space(param){space_used[1] = 1;return space} + function get_ign(param){ign_used[1] = 1;return ign} + function get_pad(param){pad_used[1] = 1;return pad} + function get_prec(param){prec_used[1] = 1;return prec} + function get_padprec(param){pad_used[1] = 1;return padprec} + function get_int_pad(param) + {var pad=get_pad(0),match=get_prec(0); + if(typeof match === "number" && ! match)return pad; + if(typeof pad === "number") + return 0; + else + {if(0 === pad[0]) + {if(2 <= pad[1]) + {var n=pad[2]; + return legacy_behavior$0 + ?[0,1,n] + :incompatible_flag(pct_ind,str_ind,48,cst_precision$0)} + return pad} + return 2 <= pad[1] + ?legacy_behavior$0 + ?_aN_ + :incompatible_flag(pct_ind,str_ind,48,cst_precision$1) + :pad}} + function check_no_0(symb,pad) + {if(typeof pad === "number") + return pad; + else + {if(0 === pad[0]) + {if(2 <= pad[1]) + {var width=pad[2]; + return legacy_behavior$0 + ?[0,1,width] + :incompatible_flag(pct_ind,str_ind,symb,cst_0$0)} + return pad} + return 2 <= pad[1] + ?legacy_behavior$0 + ?_aO_ + :incompatible_flag(pct_ind,str_ind,symb,cst_0$1) + :pad}} + function opt_of_pad(c,pad) + {if(typeof pad === "number") + return 0; + else + {if(0 === pad[0]) + switch(pad[1]) + {case 0: + var width=pad[2]; + return legacy_behavior$0 + ?[0,width] + :incompatible_flag(pct_ind,str_ind,c,cst$38); + case 1:var width$0=pad[2];return [0,width$0]; + default: + var width$1=pad[2]; + return legacy_behavior$0 + ?[0,width$1] + :incompatible_flag(pct_ind,str_ind,c,cst_0$2)} + return incompatible_flag(pct_ind,str_ind,c,cst$39)}} + function get_pad_opt(c){return opt_of_pad(c,get_pad(0))} + function get_padprec_opt(c){return opt_of_pad(c,get_padprec(0))} + var switch$0=0; + if(124 <= symb) + switch$0 = 1; + else + switch(symb) + {case 33: + var + match$6=parse(str_ind,end_ind), + fmt_rest$5=match$6[1], + fmt_result=[0,[10,fmt_rest$5]]; + break; + case 40: + var + sub_end=search_subformat_end(str_ind,end_ind,41), + match$8=parse(sub_end + 2 | 0,end_ind), + fmt_rest$7=match$8[1], + match$9=parse(str_ind,sub_end), + sub_fmt=match$9[1], + sub_fmtty=fmtty_of_fmt(sub_fmt); + if(get_ign(0)) + var + ignored$2=[9,get_pad_opt(95),sub_fmtty], + _ra_=[0,[23,ignored$2,fmt_rest$7]]; + else + var _ra_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]]; + var fmt_result=_ra_; + break; + case 44:var fmt_result=parse(str_ind,end_ind);break; + case 67: + var + match$12=parse(str_ind,end_ind), + fmt_rest$10=match$12[1], + _rc_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]], + fmt_result=_rc_; + break; + case 78: + var + match$16=parse(str_ind,end_ind), + fmt_rest$14=match$16[1], + counter$0=2; + if(get_ign(0)) + var ignored$6=[11,counter$0],_ri_=[0,[23,ignored$6,fmt_rest$14]]; + else + var _ri_=[0,[21,counter$0,fmt_rest$14]]; + var fmt_result=_ri_; + break; + case 83: + var + pad$6=check_no_0(symb,get_padprec(0)), + match$17=parse(str_ind,end_ind), + fmt_rest$15=match$17[1]; + if(get_ign(0)) + var + ignored$7=[1,get_padprec_opt(95)], + _rj_=[0,[23,ignored$7,fmt_rest$15]]; + else + var + match$18=make_padding_fmt_ebb(pad$6,fmt_rest$15), + fmt_rest$16=match$18[2], + pad$7=match$18[1], + _rj_=[0,[3,pad$7,fmt_rest$16]]; + var fmt_result=_rj_; + break; + case 91: + if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var + char_set=create_char_set(0), + add_char=function(c){return add_in_char_set(char_set,c)}, + add_range= + function(c$0,c) + {if(! (c < c$0)) + {var i=c$0; + for(;;) + {add_in_char_set(char_set,char_of_int(i)); + var _rC_=i + 1 | 0; + if(c !== i){var i=_rC_;continue} + break}} + return 0}, + fail_single_percent= + function(str_ind) + {return caml_call2(failwith_message(_aX_),str,str_ind)}, + parse_char_set_content= + function(counter,str_ind,end_ind) + {var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var c=caml_string_get(str,str_ind$0); + if(45 === c) + {add_char(45); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; + continue} + if(93 === c)return str_ind$0 + 1 | 0; + var _rB_=str_ind$0 + 1 | 0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return parse_char_set_after_char$0(counter$0,_rB_,end_ind,c)} + return caml_trampoline_return + (parse_char_set_after_char$0,[0,_rB_,end_ind,c])}}, + parse_char_set_after_char$0= + function(counter,str_ind,end_ind,c) + {var str_ind$0=str_ind,c$0=c; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var c$1=caml_string_get(str,str_ind$0),switch$0=0; + if(46 <= c$1) + {if(64 === c$1) + switch$0 = 1; + else + if(93 === c$1){add_char(c$0);return str_ind$0 + 1 | 0}} + else + if(37 === c$1) + switch$0 = 1; + else + if(45 <= c$1) + {var str_ind$2=str_ind$0 + 1 | 0; + if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); + var c$2=caml_string_get(str,str_ind$2); + if(37 === c$2) + {if((str_ind$2 + 1 | 0) === end_ind) + unexpected_end_of_format(end_ind); + var c$3=caml_string_get(str,str_ind$2 + 1 | 0); + if(37 !== c$3 && 64 !== c$3) + return fail_single_percent(str_ind$2); + add_range(c$0,c$3); + var _rz_=str_ind$2 + 2 | 0; + if(counter < 50) + {var counter$2=counter + 1 | 0; + return parse_char_set_content(counter$2,_rz_,end_ind)} + return caml_trampoline_return + (parse_char_set_content,[0,_rz_,end_ind])} + if(93 === c$2) + {add_char(c$0);add_char(45);return str_ind$2 + 1 | 0} + add_range(c$0,c$2); + var _rA_=str_ind$2 + 1 | 0; + if(counter < 50) + {var counter$1=counter + 1 | 0; + return parse_char_set_content(counter$1,_rA_,end_ind)} + return caml_trampoline_return + (parse_char_set_content,[0,_rA_,end_ind])} + if(switch$0 && 37 === c$0) + {add_char(c$1); + var _ry_=str_ind$0 + 1 | 0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return parse_char_set_content(counter$0,_ry_,end_ind)} + return caml_trampoline_return + (parse_char_set_content,[0,_ry_,end_ind])} + if(37 === c$0)fail_single_percent(str_ind$0); + add_char(c$0); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,c$0=c$1; + continue}}, + parse_char_set_after_char= + function(str_ind,end_ind,c) + {return caml_trampoline + (parse_char_set_after_char$0(0,str_ind,end_ind,c))}; + if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var match$31=caml_string_get(str,str_ind); + if(94 === match$31) + var str_ind$0=str_ind + 1 | 0,reverse=1,str_ind$1=str_ind$0; + else + var reverse=0,str_ind$1=str_ind; + if(str_ind$1 === end_ind)unexpected_end_of_format(end_ind); + var + c=caml_string_get(str,str_ind$1), + next_ind=parse_char_set_after_char(str_ind$1 + 1 | 0,end_ind,c), + char_set$0=freeze_char_set(char_set), + char_set$1=reverse?rev_char_set(char_set$0):char_set$0, + match$21=parse(next_ind,end_ind), + fmt_rest$19=match$21[1]; + if(get_ign(0)) + var + ignored$9=[10,get_pad_opt(95),char_set$1], + _ro_=[0,[23,ignored$9,fmt_rest$19]]; + else + var _ro_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]]; + var fmt_result=_ro_; + break; + case 97: + var + match$22=parse(str_ind,end_ind), + fmt_rest$20=match$22[1], + fmt_result=[0,[15,fmt_rest$20]]; + break; + case 99: + var + char_format= + function(fmt_rest) + {return get_ign(0)?[0,[23,0,fmt_rest]]:[0,[0,fmt_rest]]}, + match$23=parse(str_ind,end_ind), + fmt_rest$21=match$23[1], + match$24=get_pad_opt(99); + if(match$24) + {if(0 === match$24[1]) + var + _rp_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]], + _rq_=_rp_; + else + var + _rq_= + legacy_behavior$0 + ?char_format(fmt_rest$21) + :invalid_format_message + (str_ind,cst_non_zero_widths_are_unsupp); + var _rr_=_rq_} + else + var _rr_=char_format(fmt_rest$21); + var fmt_result=_rr_; + break; + case 114: + var + match$25=parse(str_ind,end_ind), + fmt_rest$22=match$25[1], + _rs_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]], + fmt_result=_rs_; + break; + case 115: + var + pad$9=check_no_0(symb,get_padprec(0)), + match$26=parse(str_ind,end_ind), + fmt_rest$23=match$26[1]; + if(get_ign(0)) + var + ignored$10=[0,get_padprec_opt(95)], + _rt_=[0,[23,ignored$10,fmt_rest$23]]; + else + var + match$27=make_padding_fmt_ebb(pad$9,fmt_rest$23), + fmt_rest$24=match$27[2], + pad$10=match$27[1], + _rt_=[0,[2,pad$10,fmt_rest$24]]; + var fmt_result=_rt_; + break; + case 116: + var + match$28=parse(str_ind,end_ind), + fmt_rest$25=match$28[1], + fmt_result=[0,[16,fmt_rest$25]]; + break; + case 123: + var + sub_end$0=search_subformat_end(str_ind,end_ind,125), + match$29=parse(str_ind,sub_end$0), + sub_fmt$0=match$29[1], + match$30=parse(sub_end$0 + 2 | 0,end_ind), + fmt_rest$26=match$30[1], + sub_fmtty$0=fmtty_of_fmt(sub_fmt$0); + if(get_ign(0)) + var + ignored$11=[8,get_pad_opt(95),sub_fmtty$0], + _ru_=[0,[23,ignored$11,fmt_rest$26]]; + else + var _ru_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]]; + var fmt_result=_ru_; + break; + case 66: + case 98: + var + pad$3=check_no_0(symb,get_padprec(0)), + match$10=parse(str_ind,end_ind), + fmt_rest$8=match$10[1]; + if(get_ign(0)) + var + ignored$3=[7,get_padprec_opt(95)], + _rb_=[0,[23,ignored$3,fmt_rest$8]]; + else + var + match$11=make_padding_fmt_ebb(pad$3,fmt_rest$8), + fmt_rest$9=match$11[2], + pad$4=match$11[1], + _rb_=[0,[9,pad$4,fmt_rest$9]]; + var fmt_result=_rb_; + break; + case 37: + case 64: + var + match$7=parse(str_ind,end_ind), + fmt_rest$6=match$7[1], + fmt_result=[0,[12,symb,fmt_rest$6]]; + break; + case 76: + case 108: + case 110: + var switch$1=0; + if(str_ind !== end_ind) + {var + symb$0=caml_string_get(str,str_ind), + _rv_=symb$0 - 88 | 0, + switch$2=0; + if(! (32 < _rv_ >>> 0)) + switch(_rv_) + {case 0: + case 12: + case 17: + case 23: + case 29: + case 32:var _rh_=1;switch$2 = 1;break + } + if(! switch$2)var _rh_=0; + if(_rh_){switch$0 = 1;switch$1 = 1}} + if(! switch$1) + {var + match$15=parse(str_ind,end_ind), + fmt_rest$13=match$15[1], + switch$3=0; + if(108 <= symb) + {if(! (111 <= symb)) + switch(symb - 108 | 0) + {case 0:var counter=0;switch$3 = 1;break; + case 1:break; + default:var counter=1;switch$3 = 1}} + else + if(76 === symb){var counter=2;switch$3 = 1} + if(! switch$3)throw [0,Assert_failure,_a1_]; + if(get_ign(0)) + var ignored$5=[11,counter],_rg_=[0,[23,ignored$5,fmt_rest$13]]; + else + var _rg_=[0,[21,counter,fmt_rest$13]]; + var fmt_result=_rg_} + break; + case 32: + case 35: + case 43: + case 45: + case 95: + var + fmt_result= + caml_call3(failwith_message(_aS_),str,pct_ind,symb); + break; + case 88: + case 100: + case 105: + case 111: + case 117: + case 120: + var + _rk_=get_space(0), + _rl_=get_hash(0), + iconv$2= + compute_int_conv(pct_ind,str_ind,get_plus(0),_rl_,_rk_,symb), + match$19=parse(str_ind,end_ind), + fmt_rest$17=match$19[1]; + if(get_ign(0)) + var + ignored$8=[2,iconv$2,get_pad_opt(95)], + _rm_=[0,[23,ignored$8,fmt_rest$17]]; + else + var + _rn_=get_prec(0), + match$20=make_padprec_fmt_ebb(get_int_pad(0),_rn_,fmt_rest$17), + fmt_rest$18=match$20[3], + prec$4=match$20[2], + pad$8=match$20[1], + _rm_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]]; + var fmt_result=_rm_; + break; + case 69: + case 70: + case 71: + case 72: + case 101: + case 102: + case 103: + case 104: + var + space$1=get_space(0), + hash$1=get_hash(0), + plus$2=get_plus(0), + flag= + plus$2 + ?space$1 + ?legacy_behavior$0 + ?1 + :incompatible_flag(pct_ind,str_ind,32,cst$50) + :1 + :space$1?2:0, + switch$4=0; + if(73 <= symb) + {var switcher=symb - 101 | 0; + if(3 < switcher >>> 0) + switch$4 = 1; + else + {switch(switcher) + {case 0:var _rw_=1;break; + case 1:var _rw_=0;break; + case 2:var _rw_=3;break; + default:var _rw_=6} + var kind=_rw_}} + else + if(69 <= symb) + {var switch$5=0; + switch(symb - 69 | 0) + {case 0:var _rx_=2;break; + case 1:switch$4 = 1;switch$5 = 1;break; + case 2:var _rx_=4;break; + default:var _rx_=7} + if(! switch$5)var kind=_rx_} + else + switch$4 = 1; + if(switch$4) + {var switch$6=0; + if(hash$1) + if(70 === symb)var kind=8;else switch$6 = 1; + else + if(70 === symb)var kind=5;else switch$6 = 1; + if(switch$6)throw [0,Assert_failure,_a3_]} + var + fconv=[0,flag,kind], + match$13=parse(str_ind,end_ind), + fmt_rest$11=match$13[1]; + if(get_ign(0)) + {var match=get_prec(0); + if(typeof match === "number") + var _rd_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0; + else + var ndec=match[1],_rd_=[0,ndec]; + var + ignored$4=[6,get_pad_opt(95),_rd_], + _re_=[0,[23,ignored$4,fmt_rest$11]]} + else + var + _rf_=get_prec(0), + match$14=make_padprec_fmt_ebb(get_pad(0),_rf_,fmt_rest$11), + fmt_rest$12=match$14[3], + prec$3=match$14[2], + pad$5=match$14[1], + _re_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]]; + var fmt_result=_re_; + break; + default:switch$0 = 1} + if(switch$0) + {var switch$7=0; + if(108 <= symb) + if(111 <= symb) + switch$7 = 1; + else + {var switch$8=0; + switch(symb - 108 | 0) + {case 0: + var + _qW_=caml_string_get(str,str_ind), + _qX_=get_space(0), + _qY_=get_hash(0), + iconv= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_qY_,_qX_,_qW_), + match$0=parse(str_ind + 1 | 0,end_ind), + fmt_rest=match$0[1]; + if(get_ign(0)) + var + ignored=[3,iconv,get_pad_opt(95)], + _qZ_=[0,[23,ignored,fmt_rest]]; + else + var + _q1_=get_prec(0), + match$1=make_padprec_fmt_ebb(get_int_pad(0),_q1_,fmt_rest), + fmt_rest$0=match$1[3], + prec$0=match$1[2], + pad$0=match$1[1], + _qZ_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]]; + var _q0_=_qZ_; + break; + case 1:switch$7 = 1;switch$8 = 1;break; + default: + var + _q2_=caml_string_get(str,str_ind), + _q3_=get_space(0), + _q4_=get_hash(0), + iconv$0= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_q4_,_q3_,_q2_), + match$2=parse(str_ind + 1 | 0,end_ind), + fmt_rest$1=match$2[1]; + if(get_ign(0)) + var + ignored$0=[4,iconv$0,get_pad_opt(95)], + _q5_=[0,[23,ignored$0,fmt_rest$1]]; + else + var + _q6_=get_prec(0), + match$3=make_padprec_fmt_ebb(get_int_pad(0),_q6_,fmt_rest$1), + fmt_rest$2=match$3[3], + prec$1=match$3[2], + pad$1=match$3[1], + _q5_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]]; + var _q0_=_q5_} + if(! switch$8)var fmt_result=_q0_} + else + if(76 === symb) + {var + _q7_=caml_string_get(str,str_ind), + _q8_=get_space(0), + _q9_=get_hash(0), + iconv$1= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_q9_,_q8_,_q7_), + match$4=parse(str_ind + 1 | 0,end_ind), + fmt_rest$3=match$4[1]; + if(get_ign(0)) + var + ignored$1=[5,iconv$1,get_pad_opt(95)], + _q__=[0,[23,ignored$1,fmt_rest$3]]; + else + var + _q$_=get_prec(0), + match$5=make_padprec_fmt_ebb(get_int_pad(0),_q$_,fmt_rest$3), + fmt_rest$4=match$5[3], + prec$2=match$5[2], + pad$2=match$5[1], + _q__=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]]; + var fmt_result=_q__} + else + switch$7 = 1; + if(switch$7) + var + fmt_result= + caml_call3(failwith_message(_aP_),str,str_ind - 1 | 0,symb)} + if(1 - legacy_behavior$0) + {var _qN_=1 - plus_used[1],plus$0=_qN_?plus:_qN_; + if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41); + var _qO_=1 - hash_used[1],hash$0=_qO_?hash:_qO_; + if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42); + var _qP_=1 - space_used[1],space$0=_qP_?space:_qP_; + if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43); + var _qQ_=1 - pad_used[1],_qR_=_qQ_?caml_notequal([0,pad],_aQ_):_qQ_; + if(_qR_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0); + var + _qS_=1 - prec_used[1], + _qT_=_qS_?caml_notequal([0,prec],_aR_):_qS_; + if(_qT_) + {var _qU_=ign?95:symb; + incompatible_flag(pct_ind,str_ind,_qU_,cst_precision$2)} + var plus$1=ign?plus:ign; + if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)} + var _qV_=1 - ign_used[1],ign$0=_qV_?ign:_qV_; + if(ign$0) + {var switch$9=0; + if(38 <= symb) + {if(44 !== symb && 64 !== symb)switch$9 = 1} + else + if(33 !== symb && ! (37 <= symb))switch$9 = 1; + var switch$10=0; + if(switch$9 || ! legacy_behavior$0)switch$10 = 1; + if(switch$10)incompatible_flag(pct_ind,str_ind,symb,cst$45)} + return fmt_result} + function parse(lit_start,end_ind) + {var str_ind=lit_start; + for(;;) + {if(str_ind === end_ind)return add_literal(lit_start,str_ind,0); + var match=caml_string_get(str,str_ind); + if(37 === match) + {var str_ind$2=str_ind + 1 | 0; + if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); + var + match$1=caml_string_get(str,str_ind$2), + _qM_= + 95 === match$1 + ?parse_flags(str_ind,str_ind$2 + 1 | 0,end_ind,1) + :parse_flags(str_ind,str_ind$2,end_ind,0), + fmt_rest=_qM_[1]; + return add_literal(lit_start,str_ind,fmt_rest)} + if(64 === match) + {var str_ind$0=str_ind + 1 | 0; + if(str_ind$0 === end_ind) + var match$0=_aT_; + else + {var c=caml_string_get(str,str_ind$0),switch$0=0; + if(65 <= c) + if(94 <= c) + {var switcher=c - 123 | 0; + if(2 < switcher >>> 0) + switch$0 = 1; + else + switch(switcher) + {case 0: + var match$0=parse_tag(1,str_ind$0 + 1 | 0,end_ind);break; + case 1:switch$0 = 1;break; + default: + var + match$3=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$2=match$3[1], + match$0=[0,[17,1,fmt_rest$2]]}} + else + if(91 <= c) + switch(c - 91 | 0) + {case 0: + var match$0=parse_tag(0,str_ind$0 + 1 | 0,end_ind);break; + case 1:switch$0 = 1;break; + default: + var + match$4=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$3=match$4[1], + match$0=[0,[17,0,fmt_rest$3]]} + else + switch$0 = 1; + else + if(10 === c) + var + match$5=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$4=match$5[1], + match$0=[0,[17,3,fmt_rest$4]]; + else + if(32 <= c) + switch(c - 32 | 0) + {case 0: + var + match$6=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$5=match$6[1], + match$0=[0,[17,_aU_,fmt_rest$5]]; + break; + case 5: + var switch$1=0; + if + ((str_ind$0 + 1 | 0) + < + end_ind + && + 37 + === + caml_string_get(str,str_ind$0 + 1 | 0)) + {var + match$7=parse(str_ind$0 + 2 | 0,end_ind), + fmt_rest$6=match$7[1], + match$0=[0,[17,6,fmt_rest$6]]; + switch$1 = 1} + if(! switch$1) + var + match$8=parse(str_ind$0,end_ind), + fmt_rest$7=match$8[1], + match$0=[0,[12,64,fmt_rest$7]]; + break; + case 12: + var + match$9=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$8=match$9[1], + match$0=[0,[17,_aV_,fmt_rest$8]]; + break; + case 14: + var + match$10=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$9=match$10[1], + match$0=[0,[17,4,fmt_rest$9]]; + break; + case 27: + var match$0=parse_good_break(str_ind$0 + 1 | 0,end_ind); + break; + case 28: + var match$0=parse_magic_size(str_ind$0 + 1 | 0,end_ind); + break; + case 31: + var + match$11=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$10=match$11[1], + match$0=[0,[17,2,fmt_rest$10]]; + break; + case 32: + var + match$12=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$11=match$12[1], + match$0=[0,[17,5,fmt_rest$11]]; + break; + default:switch$0 = 1} + else + switch$0 = 1; + if(switch$0) + var + match$2=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$1=match$2[1], + match$0=[0,[17,[2,c],fmt_rest$1]]} + var fmt_rest$0=match$0[1]; + return add_literal(lit_start,str_ind,fmt_rest$0)} + var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1; + continue}} + return parse(0,caml_ml_string_length(str))} + function format_of_string_fmtty(str,fmtty) + {var match=fmt_ebb_of_string(0,str),fmt=match[1]; + try + {var _qK_=[0,type_format(fmt,fmtty),str];return _qK_} + catch(_qL_) + {_qL_ = caml_wrap_exception(_qL_); + if(_qL_ === Type_mismatch) + {var _qJ_=string_of_fmtty(fmtty); + return caml_call2(failwith_message(_a5_),str,_qJ_)} + throw _qL_}} + function format_of_string_format(str,param) + {var + str$0=param[2], + fmt=param[1], + match=fmt_ebb_of_string(0,str), + fmt$0=match[1]; + try + {var _qH_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _qH_} + catch(_qI_) + {_qI_ = caml_wrap_exception(_qI_); + if(_qI_ === Type_mismatch) + return caml_call2(failwith_message(_a6_),str,str$0); + throw _qI_}} + var + CamlinternalFormat= + [0, + is_in_char_set, + rev_char_set, + create_char_set, + add_in_char_set, + freeze_char_set, + param_format_of_ignored_format, + make_printf, + make_iprintf, + output_acc, + bufput_acc, + strput_acc, + type_format, + fmt_ebb_of_string, + format_of_string_fmtty, + format_of_string_format, + char_of_iconv, + string_of_formatting_lit, + string_of_fmtty, + string_of_fmt, + open_box_of_string, + symm, + trans, + recast]; + caml_register_global(807,CamlinternalFormat,"CamlinternalFormat"); + function kfprintf(k,o,param) + {var fmt=param[1],_qG_=0; + return make_printf + (function(acc){output_acc(o,acc);return caml_call1(k,o)}, + _qG_, + fmt)} + function kbprintf(k,b,param) + {var fmt=param[1],_qF_=0; + return make_printf + (function(acc){bufput_acc(b,acc);return caml_call1(k,b)}, + _qF_, + fmt)} + function ikfprintf(k,oc,param) + {var fmt=param[1];return make_iprintf(k,oc,fmt)} + function fprintf(oc,fmt){return kfprintf(function(_qE_){return 0},oc,fmt)} + function bprintf(b,fmt){return kbprintf(function(_qD_){return 0},b,fmt)} + function ifprintf(oc,fmt) + {return ikfprintf(function(_qC_){return 0},oc,fmt)} + function ibprintf(b,fmt){return ikfprintf(function(_qB_){return 0},b,fmt)} + function printf(fmt){return fprintf(stdout,fmt)} + function eprintf(fmt){return fprintf(stderr,fmt)} + function ksprintf(k,param) + {var fmt=param[1]; + function k$0(acc) + {var buf=create$2(64); + strput_acc(buf,acc); + return caml_call1(k,contents(buf))} + return make_printf(k$0,0,fmt)} + function sprintf(fmt){return ksprintf(function(s){return s},fmt)} + var + Stdlib_Printf= + [0, + fprintf, + printf, + eprintf, + sprintf, + bprintf, + ifprintf, + ibprintf, + kfprintf, + ikfprintf, + ksprintf, + kbprintf, + ikfprintf, + ksprintf]; + caml_register_global(808,Stdlib_Printf,"Stdlib__Printf"); + var + Bad=[248,cst_Stdlib_Arg_Bad,caml_fresh_oo_id(0)], + Help=[248,cst_Stdlib_Arg_Help,caml_fresh_oo_id(0)], + Stop=[248,cst_Stdlib_Arg_Stop,caml_fresh_oo_id(0)]; + function assoc3(x,l) + {var l$0=l; + for(;;) + {if(l$0) + {var match=l$0[1],y2=match[2],y1=match[1]; + if(caml_equal(y1,x))return y2; + var l$1=l$0[2],l$0=l$1; + continue} + throw Not_found}} + function split$1(s) + {var + i=index$0(s,61), + len=caml_ml_string_length(s), + _qA_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0); + return [0,sub$0(s,0,i),_qA_]} + function make_symlist(prefix,sep,suffix,l) + {if(l) + {var t=l[2],h=l[1],_qz_=cat(prefix,h); + return cat + (fold_left$0(function(x,y){return cat(x,cat(sep,y))},_qz_,t), + suffix)} + return cst_none} + function help_action(param){throw [0,Stop,_a9_]} + function add_help(speclist) + {try + {assoc3(cst_help$2,speclist);var _qw_=0,_qu_=_qw_} + catch(_qy_) + {_qy_ = caml_wrap_exception(_qy_); + if(_qy_ !== Not_found)throw _qy_; + var + _qu_= + [0,[0,cst_help,[0,help_action],cst_Display_this_list_of_optio],0]} + try + {assoc3(cst_help$1,speclist);var _qv_=0,add2=_qv_} + catch(_qx_) + {_qx_ = caml_wrap_exception(_qx_); + if(_qx_ !== Not_found)throw _qx_; + var + add2= + [0, + [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0], + 0]} + return append(speclist,append(_qu_,add2))} + function usage_b(buf,speclist,errmsg) + {caml_call1(bprintf(buf,_a__),errmsg); + var _qr_=add_help(speclist); + return iter$2 + (function(param) + {var + doc=param[3], + spec=param[2], + key=param[1], + _qs_=0 < caml_ml_string_length(doc)?1:0; + if(_qs_) + {if(11 === spec[0]) + {var l=spec[1],_qt_=make_symlist(cst$53,cst$52,cst$51,l); + return caml_call3(bprintf(buf,_a8_),key,_qt_,doc)} + return caml_call2(bprintf(buf,_a7_),key,doc)} + return _qs_}, + _qr_)} + function usage_string(speclist,errmsg) + {var b=create$2(200);usage_b(b,speclist,errmsg);return contents(b)} + function usage(speclist,errmsg) + {var _qq_=usage_string(speclist,errmsg); + return caml_call1(eprintf(_a$_),_qq_)} + var current=[0,0]; + function bool_of_string_opt$0(x) + {try + {var _qo_=[0,bool_of_string(x)];return _qo_} + catch(_qp_) + {_qp_ = caml_wrap_exception(_qp_); + if(_qp_[1] === Invalid_argument)return 0; + throw _qp_}} + function int_of_string_opt$0(x) + {try + {var _qm_=[0,caml_int_of_string(x)];return _qm_} + catch(_qn_) + {_qn_ = caml_wrap_exception(_qn_); + if(_qn_[1] === Failure)return 0; + throw _qn_}} + function float_of_string_opt(x) + {try + {var _qk_=[0,caml_float_of_string(x)];return _qk_} + catch(_ql_) + {_ql_ = caml_wrap_exception(_ql_); + if(_ql_[1] === Failure)return 0; + throw _ql_}} + function parse_and_expand_argv_dynamic_ + (allow_expand,current,argv,speclist,anonfun,errmsg) + {var initpos=current[1]; + function convert_error(error) + {var + b=create$2(200), + progname= + initpos < argv[1].length - 1 + ?caml_check_bound(argv[1],initpos)[1 + initpos] + :cst$54; + switch(error[0]) + {case 0: + var _qj_=error[1]; + if + (caml_string_notequal(_qj_,cst_help$3) + && + caml_string_notequal(_qj_,cst_help$4)) + caml_call2(bprintf(b,_ba_),progname,_qj_); + break; + case 1: + var expected=error[3],arg=error[2],opt=error[1]; + caml_call4(bprintf(b,_bd_),progname,arg,opt,expected); + break; + case 2:var s=error[1];caml_call2(bprintf(b,_be_),progname,s);break; + default:var s$0=error[1];caml_call2(bprintf(b,_bf_),progname,s$0)} + usage_b(b,speclist[1],errmsg); + if(! caml_equal(error,_bb_) && ! caml_equal(error,_bc_)) + return [0,Bad,contents(b)]; + return [0,Help,contents(b)]} + current[1]++; + for(;;) + {if(current[1] < argv[1].length - 1) + {try + {var + _p__=current[1], + s=caml_check_bound(argv[1],_p__)[1 + _p__], + switch$0=0; + if(1 <= caml_ml_string_length(s) && 45 === caml_string_get(s,0)) + {try + {var + follow$1=0, + _qa_=assoc3(s,speclist[1]), + follow$0=follow$1, + action=_qa_} + catch(_qh_) + {_qh_ = caml_wrap_exception(_qh_); + if(_qh_ !== Not_found)throw _qh_; + try + {var + match=split$1(s), + arg=match[2], + keyword=match[1], + follow=[0,arg], + _p$_=assoc3(keyword,speclist[1])} + catch(_qi_) + {_qi_ = caml_wrap_exception(_qi_); + if(_qi_ === Not_found)throw [0,Stop,[0,s]]; + throw _qi_; + var _qb_=_qi_} + var follow$0=follow,action=_p$_,_qc_=_qh_} + var + no_arg$0= + function(s,follow) + {function no_arg(param) + {if(follow) + {var arg=follow[1];throw [0,Stop,[1,s,arg,cst_no_argument]]} + return 0} + return no_arg}, + no_arg=no_arg$0(s,follow$0), + get_arg$0= + function(s,follow) + {function get_arg(param) + {if(follow){var arg=follow[1];return arg} + if((current[1] + 1 | 0) < argv[1].length - 1) + {var _qg_=current[1] + 1 | 0; + return caml_check_bound(argv[1],_qg_)[1 + _qg_]} + throw [0,Stop,[2,s]]} + return get_arg}, + get_arg=get_arg$0(s,follow$0), + consume_arg$0= + function(follow) + {function consume_arg(param) + {return follow?0:(current[1]++,0)} + return consume_arg}, + consume_arg=consume_arg$0(follow$0), + treat_action$0= + function(s,no_arg,get_arg,consume_arg) + {function treat_action(param) + {switch(param[0]) + {case 0:var f=param[1];no_arg(0);return caml_call1(f,0); + case 1: + var + f$0=param[1], + arg=get_arg(0), + match=bool_of_string_opt$0(arg); + if(match) + {var s$0=match[1];caml_call1(f$0,s$0);return consume_arg(0)} + throw [0,Stop,[1,s,arg,cst_a_boolean]]; + case 2:var r=param[1];no_arg(0);r[1] = 1;return 0; + case 3:var r$0=param[1];no_arg(0);r$0[1] = 0;return 0; + case 4: + var f$1=param[1],arg$0=get_arg(0); + caml_call1(f$1,arg$0); + return consume_arg(0); + case 5: + var r$1=param[1];r$1[1] = get_arg(0);return consume_arg(0); + case 6: + var + f$2=param[1], + arg$1=get_arg(0), + match$0=int_of_string_opt$0(arg$1); + if(match$0) + {var x=match$0[1];caml_call1(f$2,x);return consume_arg(0)} + throw [0,Stop,[1,s,arg$1,cst_an_integer]]; + case 7: + var + r$2=param[1], + arg$2=get_arg(0), + match$1=int_of_string_opt$0(arg$2); + if(match$1) + {var x$0=match$1[1];r$2[1] = x$0;return consume_arg(0)} + throw [0,Stop,[1,s,arg$2,cst_an_integer$0]]; + case 8: + var + f$3=param[1], + arg$3=get_arg(0), + match$2=float_of_string_opt(arg$3); + if(match$2) + {var x$1=match$2[1]; + caml_call1(f$3,x$1); + return consume_arg(0)} + throw [0,Stop,[1,s,arg$3,cst_a_float]]; + case 9: + var + r$3=param[1], + arg$4=get_arg(0), + match$3=float_of_string_opt(arg$4); + if(match$3) + {var x$2=match$3[1];r$3[1] = x$2;return consume_arg(0)} + throw [0,Stop,[1,s,arg$4,cst_a_float$0]]; + case 10: + var specs=param[1]; + no_arg(0); + return iter$2(treat_action,specs); + case 11: + var f$4=param[2],symb=param[1],arg$5=get_arg(0); + if(mem(arg$5,symb)) + {caml_call1(f$4,arg$5);return consume_arg(0)} + throw [0, + Stop, + [1, + s, + arg$5, + cat(cst_one_of,make_symlist(cst$57,cst$56,cst$55,symb))]]; + case 12: + var f$5=param[1]; + no_arg(0); + for(;;) + {if(current[1] < (argv[1].length - 1 - 1 | 0)) + {var _qd_=current[1] + 1 | 0; + caml_call1(f$5,caml_check_bound(argv[1],_qd_)[1 + _qd_]); + consume_arg(0); + continue} + return 0} + case 13: + var f$6=param[1]; + no_arg(0); + var acc=[0,0]; + for(;;) + {if(current[1] < (argv[1].length - 1 - 1 | 0)) + {var _qf_=current[1] + 1 | 0,_qe_=acc[1]; + acc[1] = [0,caml_check_bound(argv[1],_qf_)[1 + _qf_],_qe_]; + consume_arg(0); + continue} + return caml_call1(f$6,rev(acc[1]))} + default: + var f$7=param[1]; + if(1 - allow_expand) + throw [0,Invalid_argument,cst_Arg_Expand_is_is_only_allo]; + var arg$6=get_arg(0),newarg=caml_call1(f$7,arg$6); + consume_arg(0); + var + before=sub$1(argv[1],0,current[1] + 1 | 0), + after= + sub$1 + (argv[1], + current[1] + 1 | 0, + (argv[1].length - 1 - current[1] | 0) - 1 | 0); + argv[1] + = + caml_array_concat([0,before,[0,newarg,[0,after,0]]]); + return 0}} + return treat_action}, + treat_action=treat_action$0(s,no_arg,get_arg,consume_arg); + treat_action(action); + switch$0 = 1} + if(! switch$0)caml_call1(anonfun,s)} + catch(exn$0) + {exn$0 = caml_wrap_exception(exn$0); + if(exn$0[1] === Bad){var m=exn$0[2];throw convert_error([3,m])} + if(exn$0[1] === Stop){var e=exn$0[2];throw convert_error(e)} + throw exn$0; + var exn=exn$0} + current[1]++; + continue} + return 0}} + function parse_and_expand_argv_dynamic + (current,argv,speclist,anonfun,errmsg) + {return parse_and_expand_argv_dynamic_ + (1,current,argv,speclist,anonfun,errmsg)} + function parse_argv_dynamic(opt,argv,speclist,anonfun,errmsg) + {if(opt)var sth=opt[1],current$0=sth;else var current$0=current; + return parse_and_expand_argv_dynamic_ + (0,current$0,[0,argv],speclist,anonfun,errmsg)} + function parse_argv(opt,argv,speclist,anonfun,errmsg) + {if(opt)var sth=opt[1],current$0=sth;else var current$0=current; + return parse_argv_dynamic + ([0,current$0],argv,[0,speclist],anonfun,errmsg)} + function parse(l,f,msg) + {try + {var _p9_=parse_argv(0,caml_sys_argv(0),l,f,msg);return _p9_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bad) + {var msg$0=exn[2];caml_call1(eprintf(_bg_),msg$0);return exit(2)} + if(exn[1] === Help) + {var msg$1=exn[2];caml_call1(printf(_bh_),msg$1);return exit(0)} + throw exn}} + function parse_dynamic(l,f,msg) + {try + {var _p8_=parse_argv_dynamic(0,caml_sys_argv(0),l,f,msg);return _p8_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bad) + {var msg$0=exn[2];caml_call1(eprintf(_bi_),msg$0);return exit(2)} + if(exn[1] === Help) + {var msg$1=exn[2];caml_call1(printf(_bj_),msg$1);return exit(0)} + throw exn}} + function parse_expand(l,f,msg) + {try + {var + argv=[0,caml_sys_argv(0)], + spec=[0,l], + current$0=[0,current[1]], + _p7_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg); + return _p7_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Bad) + {var msg$0=exn[2];caml_call1(eprintf(_bk_),msg$0);return exit(2)} + if(exn[1] === Help) + {var msg$1=exn[2];caml_call1(printf(_bl_),msg$1);return exit(0)} + throw exn}} + function second_word(s) + {var len=caml_ml_string_length(s); + function loop(n) + {var n$0=n; + for(;;) + {if(len <= n$0)return len; + if(32 === caml_string_get(s,n$0)) + {var n$1=n$0 + 1 | 0,n$0=n$1;continue} + return n$0}} + try + {var n$0=index$0(s,9)} + catch(_p5_) + {_p5_ = caml_wrap_exception(_p5_); + if(_p5_ === Not_found) + {try + {var n=index$0(s,32)} + catch(_p6_) + {_p6_ = caml_wrap_exception(_p6_); + if(_p6_ === Not_found)return len; + throw _p6_} + return loop(n + 1 | 0)} + throw _p5_} + return loop(n$0 + 1 | 0)} + function max_arg_len(cur,param) + {var doc=param[3],spec=param[2],kwd=param[1]; + return 11 === spec[0] + ?max$1(cur,caml_ml_string_length(kwd)) + :max$1(cur,caml_ml_string_length(kwd) + second_word(doc) | 0)} + function replace_leading_tab(s) + {var seen=[0,0]; + return map$6 + (function(c) + {if(9 === c && ! seen[1]){seen[1] = 1;return 32}return c}, + s)} + function align(opt,speclist) + {if(opt)var sth=opt[1],limit=sth;else var limit=max_int; + var + completed=add_help(speclist), + len=fold_left$0(max_arg_len,0,completed), + len$0=min$1(len,limit); + return map$4 + (function(ksd) + {var _p3_=ksd[1],_p4_=ksd[2]; + if(caml_string_notequal(ksd[3],cst$58)) + {if(11 === _p4_[0]) + {var + msg$0=ksd[3], + cutcol$0=second_word(msg$0), + spaces$0=make$1(max$1(0,len$0 - cutcol$0 | 0) + 3 | 0,32); + return [0, + _p3_, + _p4_, + cat(cst$59,cat(spaces$0,replace_leading_tab(msg$0)))]} + var + msg=ksd[3], + spec=ksd[2], + cutcol=second_word(msg), + kwd_len=caml_ml_string_length(_p3_), + diff=(len$0 - kwd_len | 0) - cutcol | 0; + if(0 < diff) + {var + spaces=make$1(diff,32), + prefix=sub$0(replace_leading_tab(msg),0,cutcol), + suffix= + sub$0(msg,cutcol,caml_ml_string_length(msg) - cutcol | 0); + return [0,_p3_,spec,cat(prefix,cat(spaces,suffix))]} + return [0,_p3_,spec,replace_leading_tab(msg)]} + return ksd}, + completed)} + function read_aux(trim,sep,file) + {var ic=open_bin$0(file),buf=create$2(200),words=[0,0]; + function stash(param) + {var s=contents(buf); + if(trim) + {var len=caml_ml_string_length(s),switch$0=0; + if(0 < len && 13 === caml_string_get(s,len - 1 | 0)) + {var _p2_=sub$0(s,0,len - 1 | 0);switch$0 = 1} + if(! switch$0)var _p2_=s; + var word=_p2_} + else + var word=s; + words[1] = [0,word,words[1]]; + return clear$1(buf)} + try + {for(;;) + {var c=caml_ml_input_char(ic); + if(c === sep)stash(0);else add_char(buf,c); + continue}} + catch(_p1_) + {_p1_ = caml_wrap_exception(_p1_); + if(_p1_ === End_of_file) + {if(0 < buf[2])stash(0); + caml_ml_close_channel(ic); + return of_list(rev(words[1]))} + throw _p1_}} + var _bm_=10,_bn_=1; + function read_arg(_p0_){return read_aux(_bn_,_bm_,_p0_)} + var _bo_=0,_bp_=0; + function read_arg0(_pZ_){return read_aux(_bp_,_bo_,_pZ_)} + function write_aux(sep,file,args) + {var oc=open_bin(file); + iter$5(function(s){return caml_call2(fprintf(oc,_bq_),s,sep)},args); + return close(oc)} + var _br_=10; + function write_arg(_pX_,_pY_){return write_aux(_br_,_pX_,_pY_)} + var _bs_=0; + function write_arg0(_pV_,_pW_){return write_aux(_bs_,_pV_,_pW_)} + var + Stdlib_Arg= + [0, + parse, + parse_dynamic, + parse_argv, + parse_argv_dynamic, + parse_and_expand_argv_dynamic, + parse_expand, + Help, + Bad, + usage, + usage_string, + align, + current, + read_arg, + read_arg0, + write_arg, + write_arg0]; + caml_register_global(809,Stdlib_Arg,"Stdlib__Arg"); + var + Stdlib_Atomic= + [0,make,get,set,exchange,compare_and_set,fetch_and_add,incr,decr]; + caml_register_global(810,Stdlib_Atomic,"Stdlib__Atomic"); + var printers=[0,0]; + function field(x,i) + {var f=x[1 + i]; + return is_block(f) + ?caml_obj_tag(f) === 252 + ?caml_call1(sprintf(_bt_),f) + :caml_obj_tag(f) === 253?to_string(f):cst$60 + :caml_call1(sprintf(_bu_),f)} + function other_fields(x,i) + {if(x.length - 1 <= i)return cst$61; + var _pT_=other_fields(x,i + 1 | 0),_pU_=field(x,i); + return caml_call2(sprintf(_bv_),_pU_,_pT_)} + function use_printers(x) + {function conv(param) + {var param$0=param; + for(;;) + {if(param$0) + {var tl=param$0[2],hd=param$0[1]; + try + {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1} + catch(_pS_){} + if(switch$0 && val){var s=val[1];return [0,s]} + var param$0=tl; + continue} + return 0}} + return conv(printers[1])} + function to_string_default(x) + {if(x === Out_of_memory)return cst_Out_of_memory; + if(x === Stack_overflow)return cst_Stack_overflow; + if(x[1] === Match_failure) + {var match$0=x[2],char$0=match$0[3],line=match$0[2],file=match$0[1]; + return caml_call5 + (sprintf(locfmt), + file, + line, + char$0, + char$0 + 5 | 0, + cst_Pattern_matching_failed)} + if(x[1] === Assert_failure) + {var + match$1=x[2], + char$1=match$1[3], + line$0=match$1[2], + file$0=match$1[1]; + return caml_call5 + (sprintf(locfmt), + file$0, + line$0, + char$1, + char$1 + 6 | 0, + cst_Assertion_failed)} + if(x[1] === Undefined_recursive_module) + {var + match$2=x[2], + char$2=match$2[3], + line$1=match$2[2], + file$1=match$2[1]; + return caml_call5 + (sprintf(locfmt), + file$1, + line$1, + char$2, + char$2 + 6 | 0, + cst_Undefined_recursive_module)} + if(0 === caml_obj_tag(x)) + {var constructor=x[1][1],match=x.length - 1; + if(2 < match >>> 0) + var + _pO_=other_fields(x,2), + _pP_=field(x,1), + _pR_=caml_call2(sprintf(_bw_),_pP_,_pO_); + else + switch(match) + {case 0:var _pR_=cst$62;break; + case 1:var _pR_=cst$63;break; + default:var _pQ_=field(x,1),_pR_=caml_call1(sprintf(_bx_),_pQ_)} + return cat(constructor,_pR_)} + return x[1]} + function to_string$6(e) + {var match=use_printers(e); + if(match){var s=match[1];return s} + return to_string_default(e)} + function print(fct,arg) + {try + {var _pN_=caml_call1(fct,arg);return _pN_} + catch(x) + {x = caml_wrap_exception(x); + var _pM_=to_string$6(x); + caml_call1(eprintf(_by_),_pM_); + caml_ml_flush(stderr); + throw x}} + function catch$0(fct,arg) + {try + {var _pL_=caml_call1(fct,arg);return _pL_} + catch(x) + {x = caml_wrap_exception(x); + caml_ml_flush(stdout); + var _pK_=to_string$6(x); + caml_call1(eprintf(_bz_),_pK_); + return exit(2)}} + function raw_backtrace_entries(bt){return bt} + function convert_raw_backtrace(bt) + {return [0,runtime.caml_convert_raw_backtrace(bt)]} + function format_backtrace_slot(pos,slot) + {function info(is_raise) + {return is_raise + ?0 === pos?cst_Raised_at:cst_Re_raised_at + :0 === pos?cst_Raised_by_primitive_operat:cst_Called_from} + if(0 === slot[0]) + {var + _pC_=slot[5], + _pD_=slot[4], + _pE_=slot[3], + _pF_=slot[6]?cst_inlined:cst$64, + _pG_=slot[2], + _pH_=slot[7], + _pI_=info(slot[1]); + return [0, + caml_call7(sprintf(_bA_),_pI_,_pH_,_pG_,_pF_,_pE_,_pD_,_pC_)]} + if(slot[1])return 0; + var _pJ_=info(0); + return [0,caml_call1(sprintf(_bB_),_pJ_)]} + function print_raw_backtrace(outchan,raw_backtrace) + {var backtrace=convert_raw_backtrace(raw_backtrace); + if(backtrace) + {var a=backtrace[1],_pA_=a.length - 1 - 1 | 0,_pz_=0; + if(! (_pA_ < 0)) + {var i=_pz_; + for(;;) + {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]); + if(match){var str=match[1];caml_call1(fprintf(outchan,_bC_),str)} + var _pB_=i + 1 | 0; + if(_pA_ !== i){var i=_pB_;continue} + break}} + return 0} + return fprintf(outchan,_bD_)} + function print_backtrace(outchan) + {return print_raw_backtrace(outchan,caml_get_exception_raw_backtra(0))} + function raw_backtrace_to_string(raw_backtrace) + {var backtrace=convert_raw_backtrace(raw_backtrace); + if(backtrace) + {var a=backtrace[1],b=create$2(1024),_px_=a.length - 1 - 1 | 0,_pw_=0; + if(! (_px_ < 0)) + {var i=_pw_; + for(;;) + {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]); + if(match){var str=match[1];caml_call1(bprintf(b,_bE_),str)} + var _py_=i + 1 | 0; + if(_px_ !== i){var i=_py_;continue} + break}} + return contents(b)} + return cst_Program_not_linked_with_g_} + function backtrace_slot_is_raise(param) + {return 0 === param[0]?param[1]:param[1]} + function backtrace_slot_is_inline(param){return 0 === param[0]?param[6]:0} + function backtrace_slot_location(param) + {return 0 === param[0]?[0,[0,param[2],param[3],param[4],param[5]]]:0} + function backtrace_slot_defname(param) + {if(0 === param[0] && caml_string_notequal(param[7],cst$65)) + return [0,param[7]]; + return 0} + function backtrace_slots(raw_backtrace) + {var match=convert_raw_backtrace(raw_backtrace); + if(match) + {var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1; + for(;;) + {if(-1 === i) + var _pv_=0; + else + {var + param=caml_check_bound(backtrace,i)[1 + i], + _pu_=0 === param[0]?1:0; + if(! _pu_){var i$0=i - 1 | 0,i=i$0;continue} + var _pv_=_pu_} + return _pv_?[0,backtrace]:0}} + return 0} + function backtrace_slots_of_raw_entry(entry) + {return backtrace_slots([0,entry])} + function raw_backtrace_length(bt){return bt.length - 1} + function get_backtrace(param) + {return raw_backtrace_to_string(caml_get_exception_raw_backtra(0))} + function register_printer(fn) + {for(;;) + {var + old_printers=printers[1], + new_printers=[0,fn,old_printers], + success=compare_and_set(printers,old_printers,new_printers), + _pt_=1 - success; + if(_pt_)continue; + return _pt_}} + function exn_slot(x){return 0 === caml_obj_tag(x)?x[1]:x} + function exn_slot_id(x){var slot=exn_slot(x);return slot[2]} + function exn_slot_name(x){var slot=exn_slot(x);return slot[1]} + var errors=_bF_.slice(); + function default_uncaught_exception_han(exn,raw_backtrace) + {var _pr_=to_string$6(exn); + caml_call1(eprintf(_bG_),_pr_); + print_raw_backtrace(stderr,raw_backtrace); + var status=runtime.caml_ml_debug_info_status(0); + if(status < 0) + {var _ps_=abs(status); + prerr_endline(caml_check_bound(errors,_ps_)[1 + _ps_])} + return caml_ml_flush(stderr)} + var uncaught_exception_handler=[0,default_uncaught_exception_han]; + function set_uncaught_exception_handler(fn) + {uncaught_exception_handler[1] = fn;return 0} + var empty_backtrace=[0]; + function handle_uncaught_exception(exn,debugger_in_use) + {try + {try + {var + raw_backtrace= + debugger_in_use?empty_backtrace:caml_get_exception_raw_backtra(0); + try {do_at_exit(0)}catch(_pq_){} + try + {var + _pm_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), + _pl_=_pm_} + catch(exn$0) + {exn$0 = caml_wrap_exception(exn$0); + var + raw_backtrace$0=caml_get_exception_raw_backtra(0), + _pj_=to_string$6(exn); + caml_call1(eprintf(_bH_),_pj_); + print_raw_backtrace(stderr,raw_backtrace); + var _pk_=to_string$6(exn$0); + caml_call1(eprintf(_bI_),_pk_); + print_raw_backtrace(stderr,raw_backtrace$0); + var _pl_=caml_ml_flush(stderr)} + var _pn_=_pl_} + catch(_pp_) + {_pp_ = caml_wrap_exception(_pp_); + if(_pp_ !== Out_of_memory)throw _pp_; + var _pn_=prerr_endline(cst_Fatal_error_out_of_memory_)} + return _pn_} + catch(_po_){return 0}} + caml_register_named_value + (caml_string_of_jsbytes("Printexc.handle_uncaught_exception"), + handle_uncaught_exception); + function _bJ_(_pi_){return runtime.caml_raw_backtrace_next_slot(_pi_)} + function _bK_(_ph_){return runtime.caml_convert_raw_backtrace_slot(_ph_)} + function _bL_(_pg_,_pf_) + {return runtime.caml_raw_backtrace_slot(_pg_,_pf_)} + var + _bM_= + [0, + backtrace_slot_is_raise, + backtrace_slot_is_inline, + backtrace_slot_location, + backtrace_slot_defname, + format_backtrace_slot]; + function _bN_(_pe_){return caml_get_exception_raw_backtra(_pe_)} + function _bO_(_pd_){return runtime.caml_backtrace_status(_pd_)} + var + Stdlib_Printexc= + [0, + to_string$6, + to_string_default, + print, + catch$0, + print_backtrace, + get_backtrace, + function(_pc_){return runtime.caml_record_backtrace(_pc_)}, + _bO_, + register_printer, + use_printers, + raw_backtrace_entries, + _bN_, + print_raw_backtrace, + raw_backtrace_to_string, + default_uncaught_exception_han, + set_uncaught_exception_handler, + backtrace_slots, + backtrace_slots_of_raw_entry, + _bM_, + raw_backtrace_length, + _bL_, + _bK_, + _bJ_, + exn_slot_id, + exn_slot_name]; + caml_register_global(811,Stdlib_Printexc,"Stdlib__Printexc"); + function const$0(c,param){return c} + function flip(f,x,y){return caml_call2(f,y,x)} + function negate(p,v){return 1 - caml_call1(p,v)} + var + Finally_raised= + [248,cst_Stdlib_Fun_Finally_raised,caml_fresh_oo_id(0)]; + register_printer + (function(param) + {if(param[1] === Finally_raised) + {var exn=param[2]; + return [0,cat(cst_Fun_Finally_raised,to_string$6(exn))]} + return 0}); + function protect(finally$0,work) + {function finally_no_exn(param) + {try + {var _pb_=caml_call1(finally$0,0);return _pb_} + catch(e) + {e = caml_wrap_exception(e); + var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e]; + caml_restore_raw_backtrace(exn,bt); + throw exn}} + try + {var result=caml_call1(work,0)} + catch(work_exn) + {work_exn = caml_wrap_exception(work_exn); + var work_bt=caml_get_exception_raw_backtra(0); + finally_no_exn(0); + caml_restore_raw_backtrace(work_exn,work_bt); + throw work_exn} + finally_no_exn(0); + return result} + var Stdlib_Fun=[0,const$0,flip,negate,protect,Finally_raised]; + caml_register_global(812,Stdlib_Fun,"Stdlib__Fun"); + function print_stat(c) + {var st=runtime.caml_gc_stat(0),_oV_=st[4]; + caml_call1(fprintf(c,_bP_),_oV_); + var _oW_=st[5]; + caml_call1(fprintf(c,_bQ_),_oW_); + var _oX_=st[14]; + caml_call1(fprintf(c,_bR_),_oX_); + var _oY_=st[17]; + caml_call1(fprintf(c,_bS_),_oY_); + fprintf(c,_bT_); + var + _oZ_=st[1], + l1=caml_ml_string_length(caml_call1(sprintf(_bU_),_oZ_)), + _o0_=st[1]; + caml_call2(fprintf(c,_bV_),l1,_o0_); + var _o1_=st[2]; + caml_call2(fprintf(c,_bW_),l1,_o1_); + var _o2_=st[3]; + caml_call2(fprintf(c,_bX_),l1,_o2_); + fprintf(c,_bY_); + var + _o3_=st[15], + l2=caml_ml_string_length(caml_call1(sprintf(_bZ_),_o3_)), + _o4_=st[15]; + caml_call2(fprintf(c,_b0_),l2,_o4_); + var _o5_=st[6]; + caml_call2(fprintf(c,_b1_),l2,_o5_); + var _o6_=st[8]; + caml_call2(fprintf(c,_b2_),l2,_o6_); + var _o7_=st[10]; + caml_call2(fprintf(c,_b3_),l2,_o7_); + var _o8_=st[12]; + caml_call2(fprintf(c,_b4_),l2,_o8_); + var _o9_=st[13]; + caml_call2(fprintf(c,_b5_),l2,_o9_); + fprintf(c,_b6_); + var _o__=st[9]; + caml_call1(fprintf(c,_b7_),_o__); + var _o$_=st[11]; + caml_call1(fprintf(c,_b8_),_o$_); + var _pa_=st[7]; + return caml_call1(fprintf(c,_b9_),_pa_)} + function allocated_bytes(param) + {var + match=runtime.caml_gc_counters(0), + ma=match[3], + pro=match[2], + mi=match[1]; + return (mi + ma - pro) * 4} + function create_alarm(f){return [0,1]} + function delete_alarm(a){a[1] = 0;return 0} + function _b__(param){return 0} + function _b$_(param){return 0} + function _ca_(param){return 0} + function _cb_(param){return 0} + var null_tracker=[0,function(param){return 0},_cb_,_ca_,_b$_,_b__]; + function start(sampling_rate,opt,tracker) + {if(opt) + var sth=opt[1],callstack_size=sth; + else + var callstack_size=max_int; + return runtime.caml_memprof_start(sampling_rate,callstack_size,tracker)} + var _cc_=[0,null_tracker,start,runtime.caml_memprof_stop]; + function _cd_(_oU_){return runtime.caml_final_release(_oU_)} + function _ce_(_oT_,_oS_) + {return runtime.caml_final_register_called_without_value(_oT_,_oS_)} + var + Stdlib_Gc= + [0, + print_stat, + allocated_bytes, + function(_oR_,_oQ_){return runtime.caml_final_register(_oR_,_oQ_)}, + _ce_, + _cd_, + create_alarm, + delete_alarm, + _cc_]; + caml_register_global(813,Stdlib_Gc,"Stdlib__Gc"); + function string(str) + {return caml_md5_string(str,0,caml_ml_string_length(str))} + function bytes(b){return string(caml_string_of_bytes(b))} + function substring(str,ofs,len) + {if + (0 + <= + ofs + && + 0 + <= + len + && + ! + ((caml_ml_string_length(str) - len | 0) < ofs)) + return caml_md5_string(str,ofs,len); + return invalid_arg(cst_Digest_substring)} + function subbytes(b,ofs,len) + {return substring(caml_string_of_bytes(b),ofs,len)} + function file(filename) + {var ic=open_bin$0(filename); + try + {var d=runtime.caml_md5_chan(ic,-1)} + catch(e){e = caml_wrap_exception(e);caml_ml_close_channel(ic);throw e} + caml_ml_close_channel(ic); + return d} + function output$0(chan,digest){return output_string(chan,digest)} + function input$0(chan){return really_input_string(chan,16)} + function char_hex(n){var _oP_=10 <= n?87:48;return n + _oP_ | 0} + function to_hex(d) + {if(16 !== caml_ml_string_length(d))invalid_arg(cst_Digest_to_hex); + var result=caml_create_bytes(32),i=0; + for(;;) + {var x=caml_string_get(d,i); + caml_bytes_unsafe_set(result,i * 2 | 0,char_hex(x >>> 4 | 0)); + caml_bytes_unsafe_set(result,(i * 2 | 0) + 1 | 0,char_hex(x & 15)); + var _oO_=i + 1 | 0; + if(15 !== i){var i=_oO_;continue} + return caml_string_of_bytes(result)}} + function from_hex(s) + {if(32 !== caml_ml_string_length(s))invalid_arg(cst_Digest_from_hex); + function digit(c) + {if(65 <= c) + {if(97 <= c) + {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + else + if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + else + if(! (9 < c - 48 >>> 0))return c - 48 | 0; + throw [0,Invalid_argument,cst_Digest_from_hex$0]} + var result=caml_create_bytes(16),i=0; + for(;;) + {var i$0=2 * i | 0,_oM_=digit(caml_string_get(s,i$0 + 1 | 0)); + caml_bytes_set + (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _oM_ | 0)); + var _oN_=i + 1 | 0; + if(15 !== i){var i=_oN_;continue} + return caml_string_of_bytes(result)}} + var + Stdlib_Digest= + [0, + compare$9, + equal$9, + string, + bytes, + substring, + subbytes, + file, + output$0, + input$0, + to_hex, + from_hex]; + caml_register_global(814,Stdlib_Digest,"Stdlib__Digest"); + function new_state(param){return [0,caml_make_vect(55,0),0]} + function assign(st1,st2) + {blit$1(st2[1],0,st1[1],0,55);st1[2] = st2[2];return 0} + function full_init(s,seed) + {var seed$0=0 === seed.length - 1?[0,0]:seed,l=seed$0.length - 1,i$0=0; + for(;;) + {caml_check_bound(s[1],i$0)[1 + i$0] = i$0; + var _oL_=i$0 + 1 | 0; + if(54 !== i$0){var i$0=_oL_;continue} + var accu=[0,cst_x$1],_oH_=54 + max$1(55,l) | 0,_oG_=0; + if(! (_oH_ < 0)) + {var i=_oG_; + for(;;) + {var + j=i % 55 | 0, + k=caml_mod(i,l), + x=caml_check_bound(seed$0,k)[1 + k]; + accu[1] = string(cat(accu[1],caml_string_of_jsbytes("" + x))); + var + _oI_=accu[1], + _oC_=caml_string_get(_oI_,3) << 24, + _oD_=caml_string_get(_oI_,2) << 16, + _oE_=caml_string_get(_oI_,1) << 8, + _oF_=((caml_string_get(_oI_,0) + _oE_ | 0) + _oD_ | 0) + _oC_ | 0, + _oJ_=(caml_check_bound(s[1],j)[1 + j] ^ _oF_) & 1073741823; + caml_check_bound(s[1],j)[1 + j] = _oJ_; + var _oK_=i + 1 | 0; + if(_oH_ !== i){var i=_oK_;continue} + break}} + s[2] = 0; + return 0}} + function make$3(seed) + {var result=new_state(0);full_init(result,seed);return result} + function make_self_init(param){return make$3(caml_sys_random_seed(0))} + function copy$5(s){var result=new_state(0);assign(result,s);return result} + function bits(s) + {s[2] = (s[2] + 1 | 0) % 55 | 0; + var + _oz_=s[2], + curval=caml_check_bound(s[1],_oz_)[1 + _oz_], + _oA_=(s[2] + 24 | 0) % 55 | 0, + newval= + caml_check_bound(s[1],_oA_)[1 + _oA_] + + + (curval ^ (curval >>> 25 | 0) & 31) + | + 0, + newval30=newval & 1073741823, + _oB_=s[2]; + caml_check_bound(s[1],_oB_)[1 + _oB_] = newval30; + return newval30} + function intaux(s,n) + {for(;;) + {var r=bits(s),v=caml_mod(r,n); + if(((1073741823 - n | 0) + 1 | 0) < (r - v | 0))continue; + return v}} + function int$0(s,bound) + {if(! (1073741823 < bound) && 0 < bound)return intaux(s,bound); + return invalid_arg(cst_Random_int)} + function full_int(s,bound) + {if(0 < bound) + {if(1073741823 < bound) + for(;;) + {var b1=bits(s),b2=bits(s); + if(bound <= 2147483647) + var bpos=(b2 & 1073725440) << 1 | b1 >>> 15 | 0,r=bpos; + else + var + b3=bits(s), + bpos$0= + ((b3 & 1073741312) << 12 | b2 >>> 9 | 0) + << + 20 + | + b1 + >>> + 10 + | + 0, + r=bpos$0; + var v=caml_mod(r,bound); + if(((2147483647 - bound | 0) + 1 | 0) < (r - v | 0))continue; + return v} + return intaux(s,bound)} + return invalid_arg(cst_Random_full_int)} + function int32(s,bound) + {if(caml_lessequal(bound,0))return invalid_arg(cst_Random_int32); + for(;;) + {var b1=bits(s),b2=(bits(s) & 1) << 30,r=b1 | b2,v=caml_mod(r,bound); + if(caml_greaterthan(r - v | 0,(2147483647 - bound | 0) + 1 | 0)) + continue; + return v}} + function int64(s,bound) + {if(caml_lessequal(bound,_cg_))return invalid_arg(cst_Random_int64); + for(;;) + {var + b1=caml_int64_of_int32(bits(s)), + b2=caml_int64_shift_left(caml_int64_of_int32(bits(s)),30), + b3=caml_int64_shift_left(caml_int64_of_int32(bits(s) & 7),60), + r=caml_int64_or(b1,caml_int64_or(b2,b3)), + v=runtime.caml_int64_mod(r,bound); + if + (caml_greaterthan + (caml_int64_sub(r,v), + caml_int64_add(caml_int64_sub(max_int$2,bound),_cf_))) + continue; + return v}} + function nativeint(s,bound){return int32(s,bound)} + function float$0(s,bound) + {var r1=bits(s),r2=bits(s); + return (r1 / 1073741824. + r2) / 1073741824. * bound} + function bool(s){return 0 === (bits(s) & 1)?1:0} + function bits32(s) + {var b1=bits(s) >>> 14 | 0,b2=bits(s) >>> 14 | 0;return b1 | b2 << 16} + function bits64(s) + {var + b1=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),9), + b2=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),9), + b3=caml_int64_shift_right_unsigne(caml_int64_of_int32(bits(s)),8); + return caml_int64_or + (b1, + caml_int64_or + (caml_int64_shift_left(b2,21),caml_int64_shift_left(b3,42)))} + function nativebits(s){return bits32(s)} + var default$0=[0,_ch_.slice(),0]; + function bits$0(param){return bits(default$0)} + function int$1(bound){return int$0(default$0,bound)} + function full_int$0(bound){return full_int(default$0,bound)} + function int32$0(bound){return int32(default$0,bound)} + function nativeint$0(bound){return nativeint(default$0,bound)} + function int64$0(bound){return int64(default$0,bound)} + function float$1(scale){return float$0(default$0,scale)} + function bool$0(param){return bool(default$0)} + function bits32$0(param){return bits32(default$0)} + function bits64$0(param){return bits64(default$0)} + function nativebits$0(param){return nativebits(default$0)} + function full_init$0(seed){return full_init(default$0,seed)} + function init$5(seed){return full_init(default$0,[0,seed])} + function self_init(param){return full_init$0(caml_sys_random_seed(0))} + function get_state(param){return copy$5(default$0)} + function set_state(s){return assign(default$0,s)} + var + _ci_= + [0, + make$3, + make_self_init, + copy$5, + bits, + int$0, + full_int, + int32, + nativeint, + int64, + float$0, + bool, + bits32, + bits64, + nativebits], + Stdlib_Random= + [0, + init$5, + full_init$0, + self_init, + bits$0, + int$1, + full_int$0, + int32$0, + nativeint$0, + int64$0, + float$1, + bool$0, + bits32$0, + bits64$0, + nativebits$0, + _ci_, + get_state, + set_state]; + caml_register_global(815,Stdlib_Random,"Stdlib__Random"); + function ongoing_traversal(h) + {var _ox_=h.length - 1 < 4?1:0,_oy_=_ox_ || (h[4] < 0?1:0);return _oy_} + function flip_ongoing_traversal(h){h[4] = - h[4] | 0;return 0} + try + {var _c5_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_c5_} + catch(_ov_) + {_ov_ = caml_wrap_exception(_ov_); + if(_ov_ !== Not_found)throw _ov_; + try + {var _c4_=caml_sys_getenv(cst_CAMLRUNPARAM),_cj_=_c4_} + catch(_ow_) + {_ow_ = caml_wrap_exception(_ow_); + if(_ow_ !== Not_found)throw _ow_; + var _cj_=cst$66} + var params=_cj_} + var + randomized_default=contains$0(params,82), + randomized=[0,randomized_default]; + function randomize(param){randomized[1] = 1;return 0} + function is_randomized(param){return randomized[1]} + var prng=[246,function(_ou_){return caml_call1(_ci_[2],0)}]; + function power_2_above(x,n) + {var x$0=x; + for(;;) + {if(n <= x$0)return x$0; + if(max_array_length < (x$0 * 2 | 0))return x$0; + var x$1=x$0 * 2 | 0,x$0=x$1; + continue}} + function create$3(opt,initial_size) + {if(opt)var sth=opt[1],random=sth;else var random=randomized[1]; + var s=power_2_above(16,initial_size); + if(random) + var + _os_=caml_obj_tag(prng), + _ot_=250 === _os_?prng[1]:246 === _os_?force_lazy_block(prng):prng, + seed=caml_call1(_ci_[4],_ot_); + else + var seed=0; + return [0,0,caml_make_vect(s,0),seed,s]} + function clear$2(h) + {var _or_=0 < h[1]?1:0; + return _or_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_or_} + function reset$0(h) + {var len=h[2].length - 1; + if(4 <= h.length - 1 && len !== abs(h[4])) + {h[1] = 0;h[2] = caml_make_vect(abs(h[4]),0);return 0} + return clear$2(h)} + function copy_bucketlist(param) + {if(param) + {var + key=param[1], + data=param[2], + next=param[3], + prec$0=[0,key,data,next], + prec=prec$0, + param$0=next; + for(;;) + {if(param$0) + {var + key$0=param$0[1], + data$0=param$0[2], + next$0=param$0[3], + r=[0,key$0,data$0,next$0]; + prec[3] = r; + var prec=r,param$0=next$0; + continue} + return prec$0}} + return 0} + function copy$6(init) + {var _oo_=init[4],_op_=init[3],_oq_=map$7(copy_bucketlist,init[2]); + return [0,init[1],_oq_,_op_,_oo_]} + function length$5(h){return h[1]} + function insert_all_buckets(indexfun,inplace,odata,ndata) + {var + nsize=ndata.length - 1, + ndata_tail=caml_make_vect(nsize,0), + _oi_=odata.length - 1 - 1 | 0, + _oh_=0; + if(! (_oi_ < 0)) + {var i$0=_oh_; + a: + for(;;) + {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1; + for(;;) + {if(cell) + {var + key=cell[1], + data=cell[2], + next=cell[3], + cell$0=inplace?cell:[0,key,data,0], + nidx=caml_call1(indexfun,key), + match=caml_check_bound(ndata_tail,nidx)[1 + nidx]; + if(match) + match[3] = cell$0; + else + caml_check_bound(ndata,nidx)[1 + nidx] = cell$0; + caml_check_bound(ndata_tail,nidx)[1 + nidx] = cell$0; + var cell=next; + continue} + var _on_=i$0 + 1 | 0; + if(_oi_ !== i$0){var i$0=_on_;continue a} + break} + break}} + if(inplace) + {var _ok_=nsize - 1 | 0,_oj_=0; + if(! (_ok_ < 0)) + {var i=_oj_; + for(;;) + {var match$0=caml_check_bound(ndata_tail,i)[1 + i]; + if(match$0)match$0[3] = 0; + var _om_=i + 1 | 0; + if(_ok_ !== i){var i=_om_;continue} + break}} + var _ol_=0} + else + var _ol_=inplace; + return _ol_} + function resize$0(indexfun,h) + {var + odata=h[2], + osize=odata.length - 1, + nsize=osize * 2 | 0, + _og_=nsize < max_array_length?1:0; + if(_og_) + {var ndata=caml_make_vect(nsize,0),inplace=1 - ongoing_traversal(h); + h[2] = ndata; + return insert_all_buckets(caml_call1(indexfun,h),inplace,odata,ndata)} + return _og_} + function iter$10(f,h) + {function do_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var key=param$0[1],data=param$0[2],next=param$0[3]; + caml_call2(f,key,data); + var param$0=next; + continue} + return 0}} + var old_trav=ongoing_traversal(h); + if(1 - old_trav)flip_ongoing_traversal(h); + try + {var d=h[2],_oc_=d.length - 1 - 1 | 0,_ob_=0; + if(! (_oc_ < 0)) + {var i=_ob_; + for(;;) + {do_bucket(caml_check_bound(d,i)[1 + i]); + var _of_=i + 1 | 0; + if(_oc_ !== i){var i=_of_;continue} + break}} + var _od_=1 - old_trav,_oe_=_od_?flip_ongoing_traversal(h):_od_; + return _oe_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(old_trav)throw exn; + flip_ongoing_traversal(h); + throw exn}} + function filter_map_inplace_bucket(f,h,i,prec,slot) + {var prec$0=prec,slot$0=slot; + for(;;) + {if(slot$0) + {var + key=slot$0[1], + data=slot$0[2], + next=slot$0[3], + match=caml_call2(f,key,data); + if(match) + {var data$0=match[1]; + if(prec$0) + prec$0[3] = slot$0; + else + caml_check_bound(h[2],i)[1 + i] = slot$0; + slot$0[2] = data$0; + var prec$0=slot$0,slot$0=next; + continue} + h[1] = h[1] - 1 | 0; + var slot$0=next; + continue} + return prec$0 + ?(prec$0[3] = 0,0) + :(caml_check_bound(h[2],i)[1 + i] = 0,0)}} + function filter_map_inplace(f,h) + {var d=h[2],old_trav=ongoing_traversal(h); + if(1 - old_trav)flip_ongoing_traversal(h); + try + {var _n9_=d.length - 1 - 1 | 0,_n8_=0; + if(! (_n9_ < 0)) + {var i=_n8_; + for(;;) + {filter_map_inplace_bucket(f,h,i,0,caml_check_bound(h[2],i)[1 + i]); + var _oa_=i + 1 | 0; + if(_n9_ !== i){var i=_oa_;continue} + break}} + var _n__=1 - old_trav,_n$_=_n__?flip_ongoing_traversal(h):_n__; + return _n$_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(old_trav)throw exn; + flip_ongoing_traversal(h); + throw exn}} + function fold$4(f,h,init) + {function do_bucket(b,accu) + {var b$0=b,accu$0=accu; + for(;;) + {if(b$0) + {var + key=b$0[1], + data=b$0[2], + next=b$0[3], + accu$1=caml_call3(f,key,data,accu$0), + b$0=next, + accu$0=accu$1; + continue} + return accu$0}} + var old_trav=ongoing_traversal(h); + if(1 - old_trav)flip_ongoing_traversal(h); + try + {var d=h[2],accu=[0,init],_n4_=d.length - 1 - 1 | 0,_n3_=0; + if(! (_n4_ < 0)) + {var i=_n3_; + for(;;) + {var _n6_=accu[1]; + accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_n6_); + var _n7_=i + 1 | 0; + if(_n4_ !== i){var i=_n7_;continue} + break}} + if(1 - old_trav)flip_ongoing_traversal(h); + var _n5_=accu[1]; + return _n5_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(old_trav)throw exn; + flip_ongoing_traversal(h); + throw exn}} + function bucket_length(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + param$1=param$0[3], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1; + continue} + return accu$0}} + function stats(h) + {var + _nZ_=h[2], + _n0_=0, + mbl= + fold_left$3 + (function(m,b){return max$1(m,bucket_length(0,b))},_n0_,_nZ_), + histo=caml_make_vect(mbl + 1 | 0,0), + _n1_=h[2]; + iter$5 + (function(b) + {var + l=bucket_length(0,b), + _n2_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _n2_; + return 0}, + _n1_); + return [0,h[1],h[2].length - 1,mbl,histo]} + function to_seq$9(tbl) + {var tbl_data=tbl[2]; + function aux(i,buck,param) + {var i$0=i,buck$0=buck; + for(;;) + {if(buck$0) + {var key=buck$0[1],data=buck$0[2],next=buck$0[3]; + return [0,[0,key,data],function(_nY_){return aux(i$0,next,_nY_)}]} + if(i$0 === tbl_data.length - 1)return 0; + var + buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], + i$1=i$0 + 1 | 0, + i$0=i$1, + buck$0=buck$1; + continue}} + var _nV_=0,_nW_=0; + return function(_nX_){return aux(_nW_,_nV_,_nX_)}} + function to_seq_keys(m) + {var _nR_=to_seq$9(m); + function _nS_(_nU_){return _nU_[1]} + return function(_nT_){return map$1(_nS_,_nR_,_nT_)}} + function to_seq_values(m) + {var _nN_=to_seq$9(m); + function _nO_(_nQ_){return _nQ_[2]} + return function(_nP_){return map$1(_nO_,_nN_,_nP_)}} + function MakeSeeded(H) + {function key_index(h,key) + {var _nM_=h[2].length - 1 - 1 | 0; + return caml_call2(H[2],h[3],key) & _nM_} + function add(h,key,data) + {var + i=key_index(h,key), + bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]]; + caml_check_bound(h[2],i)[1 + i] = bucket; + h[1] = h[1] + 1 | 0; + var _nL_=h[2].length - 1 << 1 < h[1]?1:0; + return _nL_?resize$0(key_index,h):_nL_} + function remove(h,key) + {var + i=key_index(h,key), + c$0=caml_check_bound(h[2],i)[1 + i], + prec=0, + c=c$0; + for(;;) + {if(c) + {var k=c[1],next=c[3]; + if(caml_call2(H[1],k,key)) + {h[1] = h[1] - 1 | 0; + return prec + ?(prec[3] = next,0) + :(caml_check_bound(h[2],i)[1 + i] = next,0)} + var prec=c,c=next; + continue} + return 0}} + function find(h,key) + {var _nK_=key_index(h,key),match=caml_check_bound(h[2],_nK_)[1 + _nK_]; + if(match) + {var k1=match[1],d1=match[2],next1=match[3]; + if(caml_call2(H[1],key,k1))return d1; + if(next1) + {var k2=next1[1],d2=next1[2],next2=next1[3]; + if(caml_call2(H[1],key,k2))return d2; + if(next2) + {var k3=next2[1],d3=next2[2],next3=next2[3]; + if(caml_call2(H[1],key,k3))return d3; + var param=next3; + for(;;) + {if(param) + {var k=param[1],data=param[2],next=param[3]; + if(caml_call2(H[1],key,k))return data; + var param=next; + continue} + throw Not_found}} + throw Not_found} + throw Not_found} + throw Not_found} + function find_opt(h,key) + {var _nJ_=key_index(h,key),match=caml_check_bound(h[2],_nJ_)[1 + _nJ_]; + if(match) + {var k1=match[1],d1=match[2],next1=match[3]; + if(caml_call2(H[1],key,k1))return [0,d1]; + if(next1) + {var k2=next1[1],d2=next1[2],next2=next1[3]; + if(caml_call2(H[1],key,k2))return [0,d2]; + if(next2) + {var k3=next2[1],d3=next2[2],next3=next2[3]; + if(caml_call2(H[1],key,k3))return [0,d3]; + var param=next3; + for(;;) + {if(param) + {var k=param[1],data=param[2],next=param[3]; + if(caml_call2(H[1],key,k))return [0,data]; + var param=next; + continue} + return 0}} + return 0} + return 0} + return 0} + function find_all(h,key) + {function find_in_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var k=param$0[1],d=param$0[2],next=param$0[3]; + if(caml_call2(H[1],k,key))return [0,d,find_in_bucket(next)]; + var param$0=next; + continue} + return 0}} + var _nI_=key_index(h,key); + return find_in_bucket(caml_check_bound(h[2],_nI_)[1 + _nI_])} + function replace(h,key,data) + {var + i=key_index(h,key), + param$0=caml_check_bound(h[2],i)[1 + i], + param=param$0; + for(;;) + {if(param) + {var k=param[1],next=param[3]; + if(! caml_call2(H[1],k,key)){var param=next;continue} + param[1] = key; + param[2] = data; + var _nF_=0} + else + var _nF_=1; + if(_nF_) + {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0]; + h[1] = h[1] + 1 | 0; + var _nG_=h[2].length - 1 << 1 < h[1]?1:0; + if(_nG_)return resize$0(key_index,h); + var _nH_=_nG_} + else + var _nH_=_nF_; + return _nH_}} + function mem(h,key) + {var + _nE_=key_index(h,key), + param$0=caml_check_bound(h[2],_nE_)[1 + _nE_], + param=param$0; + for(;;) + {if(param) + {var k=param[1],next=param[3],_nD_=caml_call2(H[1],k,key); + if(_nD_)return _nD_; + var param=next; + continue} + return 0}} + function add_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return add(tbl,k,v)}, + i)} + function replace_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return replace(tbl,k,v)}, + i)} + function of_seq(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl} + return [0, + create$3, + clear$2, + reset$0, + copy$6, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter$10, + filter_map_inplace, + fold$4, + length$5, + stats, + to_seq$9, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq]} + function Make$0(H) + {var equal=H[1]; + function hash(seed,x){return caml_call1(H[2],x)} + var + include=MakeSeeded([0,equal,hash]), + clear=include[2], + reset=include[3], + copy=include[4], + add=include[5], + remove=include[6], + find=include[7], + find_opt=include[8], + find_all=include[9], + replace=include[10], + mem=include[11], + iter=include[12], + filter_map_inplace=include[13], + fold=include[14], + length=include[15], + stats=include[16], + to_seq=include[17], + to_seq_keys=include[18], + to_seq_values=include[19], + add_seq=include[20], + replace_seq=include[21], + _nC_=include[1]; + function create(sz){return caml_call2(_nC_,_ck_,sz)} + function of_seq(i) + {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq]} + function hash$1(x){return caml_hash(10,100,0,x)} + function hash_param(n1,n2,x){return caml_hash(n1,n2,0,x)} + function seeded_hash(seed,x){return caml_hash(10,100,seed,x)} + function key_index(h,key) + {return 4 <= h.length - 1 + ?caml_hash(10,100,h[3],key) & (h[2].length - 1 - 1 | 0) + :invalid_arg(cst_Hashtbl_unsupported_hash_t)} + function add$0(h,key,data) + {var + i=key_index(h,key), + bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]]; + caml_check_bound(h[2],i)[1 + i] = bucket; + h[1] = h[1] + 1 | 0; + var _nB_=h[2].length - 1 << 1 < h[1]?1:0; + return _nB_?resize$0(key_index,h):_nB_} + function remove(h,key) + {var i=key_index(h,key),c$0=caml_check_bound(h[2],i)[1 + i],prec=0,c=c$0; + for(;;) + {if(c) + {var k=c[1],next=c[3]; + if(0 === caml_compare(k,key)) + {h[1] = h[1] - 1 | 0; + return prec + ?(prec[3] = next,0) + :(caml_check_bound(h[2],i)[1 + i] = next,0)} + var prec=c,c=next; + continue} + return 0}} + function find$1(h,key) + {var _nA_=key_index(h,key),match=caml_check_bound(h[2],_nA_)[1 + _nA_]; + if(match) + {var k1=match[1],d1=match[2],next1=match[3]; + if(0 === caml_compare(key,k1))return d1; + if(next1) + {var k2=next1[1],d2=next1[2],next2=next1[3]; + if(0 === caml_compare(key,k2))return d2; + if(next2) + {var k3=next2[1],d3=next2[2],next3=next2[3]; + if(0 === caml_compare(key,k3))return d3; + var param=next3; + for(;;) + {if(param) + {var k=param[1],data=param[2],next=param[3]; + if(0 === caml_compare(key,k))return data; + var param=next; + continue} + throw Not_found}} + throw Not_found} + throw Not_found} + throw Not_found} + function find_opt$1(h,key) + {var _nz_=key_index(h,key),match=caml_check_bound(h[2],_nz_)[1 + _nz_]; + if(match) + {var k1=match[1],d1=match[2],next1=match[3]; + if(0 === caml_compare(key,k1))return [0,d1]; + if(next1) + {var k2=next1[1],d2=next1[2],next2=next1[3]; + if(0 === caml_compare(key,k2))return [0,d2]; + if(next2) + {var k3=next2[1],d3=next2[2],next3=next2[3]; + if(0 === caml_compare(key,k3))return [0,d3]; + var param=next3; + for(;;) + {if(param) + {var k=param[1],data=param[2],next=param[3]; + if(0 === caml_compare(key,k))return [0,data]; + var param=next; + continue} + return 0}} + return 0} + return 0} + return 0} + function find_all$0(h,key) + {function find_in_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var k=param$0[1],data=param$0[2],next=param$0[3]; + if(0 === caml_compare(k,key))return [0,data,find_in_bucket(next)]; + var param$0=next; + continue} + return 0}} + var _ny_=key_index(h,key); + return find_in_bucket(caml_check_bound(h[2],_ny_)[1 + _ny_])} + function replace(h,key,data) + {var + i=key_index(h,key), + param$0=caml_check_bound(h[2],i)[1 + i], + param=param$0; + for(;;) + {if(param) + {var k=param[1],next=param[3]; + if(0 !== caml_compare(k,key)){var param=next;continue} + param[1] = key; + param[2] = data; + var _nv_=0} + else + var _nv_=1; + if(_nv_) + {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0]; + h[1] = h[1] + 1 | 0; + var _nw_=h[2].length - 1 << 1 < h[1]?1:0; + if(_nw_)return resize$0(key_index,h); + var _nx_=_nw_} + else + var _nx_=_nv_; + return _nx_}} + function mem$2(h,key) + {var + _nu_=key_index(h,key), + param$0=caml_check_bound(h[2],_nu_)[1 + _nu_], + param=param$0; + for(;;) + {if(param) + {var k=param[1],next=param[3],_nt_=0 === caml_compare(k,key)?1:0; + if(_nt_)return _nt_; + var param=next; + continue} + return 0}} + function add_seq$2(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return add$0(tbl,k,v)}, + i)} + function replace_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return replace(tbl,k,v)}, + i)} + function of_seq$7(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl} + function rebuild(opt,h) + {if(opt)var sth=opt[1],random=sth;else var random=randomized[1]; + var s=power_2_above(16,h[2].length - 1); + if(random) + var + _nm_=caml_obj_tag(prng), + _nn_=250 === _nm_?prng[1]:246 === _nm_?force_lazy_block(prng):prng, + seed=caml_call1(_ci_[4],_nn_); + else + var seed=4 <= h.length - 1?h[3]:0; + var + _no_=4 <= h.length - 1?h[4]:s, + h$0=[0,h[1],caml_make_vect(s,0),seed,_no_], + _np_=h$0[2], + _nq_=h[2], + _nr_=0; + insert_all_buckets + (function(_ns_){return key_index(h$0,_ns_)},_nr_,_nq_,_np_); + return h$0} + var + Stdlib_Hashtbl= + [0, + create$3, + clear$2, + reset$0, + copy$6, + add$0, + find$1, + find_opt$1, + find_all$0, + mem$2, + remove, + replace, + iter$10, + filter_map_inplace, + fold$4, + length$5, + randomize, + is_randomized, + rebuild, + stats, + to_seq$9, + to_seq_keys, + to_seq_values, + add_seq$2, + replace_seq, + of_seq$7, + Make$0, + MakeSeeded, + hash$1, + seeded_hash, + hash_param, + caml_hash]; + caml_register_global(816,Stdlib_Hashtbl,"Stdlib__Hashtbl"); + function weak_create(l) + {var _nk_=0 <= l?1:0,_nl_=_nk_?l <= _q_[15]?1:0:_nk_; + if(1 - _nl_)invalid_arg(cst_Weak_create); + return runtime.caml_weak_create(l)} + function length$6(x){return x.length - 1 - 2 | 0} + function raise_if_invalid_offset$0(e,o,msg) + {var _nh_=0 <= o?1:0,_ni_=_nh_?o < length$6(e)?1:0:_nh_,_nj_=1 - _ni_; + return _nj_?invalid_arg(msg):_nj_} + function set$1(e,o,x) + {raise_if_invalid_offset$0(e,o,cst_Weak_set); + if(x){var x$0=x[1];return caml_ephe_set_key(e,o,x$0)} + return caml_ephe_unset_key(e,o)} + function get$2(e,o) + {raise_if_invalid_offset$0(e,o,cst_Weak_get); + return runtime.caml_weak_get(e,o)} + function get_copy(e,o) + {raise_if_invalid_offset$0(e,o,cst_Weak_get_copy); + return runtime.caml_weak_get_copy(e,o)} + function check$0(e,o) + {raise_if_invalid_offset$0(e,o,cst_Weak_check); + return runtime.caml_weak_check(e,o)} + function blit$4(e1,o1,e2,o2,l) + {if + (0 + <= + l + && + 0 + <= + o1 + && + ! + ((length$6(e1) - l | 0) < o1) + && + 0 + <= + o2 + && + ! + ((length$6(e2) - l | 0) < o2)) + {var + _nf_=0 !== l?1:0, + _ng_=_nf_?runtime.caml_weak_blit(e1,o1,e2,o2,l):_nf_; + return _ng_} + return invalid_arg(cst_Weak_blit)} + function fill$2(ar,ofs,len,x) + {if(0 <= ofs && 0 <= len && ! ((length$6(ar) - len | 0) < ofs)) + {var _nd_=(ofs + len | 0) - 1 | 0; + if(! (_nd_ < ofs)) + {var i=ofs; + for(;;) + {set$1(ar,i,x); + var _ne_=i + 1 | 0; + if(_nd_ !== i){var i=_ne_;continue} + break}} + return 0} + throw [0,Invalid_argument,cst_Weak_fill]} + function Make$1(H) + {var emptybucket=weak_create(0); + function get_index(t,h){return caml_mod(h & 2147483647,t[1].length - 1)} + var limit=7; + function create(sz) + {var + sz$0=7 <= sz?sz:7, + sz$1=max_array_length < sz$0?max_array_length:sz$0; + return [0, + caml_make_vect(sz$1,emptybucket), + caml_make_vect(sz$1,[0]), + limit, + 0, + 0]} + function clear(t) + {var _nb_=t[1].length - 1 - 1 | 0,_na_=0; + if(! (_nb_ < 0)) + {var i=_na_; + for(;;) + {caml_check_bound(t[1],i)[1 + i] = emptybucket; + caml_check_bound(t[2],i)[1 + i] = [0]; + var _nc_=i + 1 | 0; + if(_nb_ !== i){var i=_nc_;continue} + break}} + t[3] = limit; + t[4] = 0; + return 0} + function fold(f,t,init) + {var _m$_=t[1],i=0; + return fold_right$2 + (function(b,accu$1) + {var i$0=i,accu=accu$1; + for(;;) + {if(length$6(b) <= i$0)return accu; + var match=get$2(b,i$0); + if(match) + {var + v=match[1], + accu$0=caml_call2(f,v,accu), + i$1=i$0 + 1 | 0, + i$0=i$1, + accu=accu$0; + continue} + var i$2=i$0 + 1 | 0,i$0=i$2; + continue}}, + _m$_, + init)} + function iter(f,t) + {var _m__=t[1],i=0; + return iter$5 + (function(b) + {var i$0=i; + for(;;) + {if(length$6(b) <= i$0)return 0; + var match=get$2(b,i$0); + if(match) + {var v=match[1]; + caml_call1(f,v); + var i$1=i$0 + 1 | 0,i$0=i$1; + continue} + var i$2=i$0 + 1 | 0,i$0=i$2; + continue}}, + _m__)} + function count_bucket(i,b,accu) + {var i$0=i,accu$0=accu; + for(;;) + {if(length$6(b) <= i$0)return accu$0; + var + _m9_=check$0(b,i$0)?1:0, + accu$1=accu$0 + _m9_ | 0, + i$1=i$0 + 1 | 0, + i$0=i$1, + accu$0=accu$1; + continue}} + function count(t) + {var _m4_=0,_m5_=t[1],_m6_=0; + return fold_right$2 + (function(_m7_,_m8_){return count_bucket(_m6_,_m7_,_m8_)}, + _m5_, + _m4_)} + function add_aux(t,setter,d,h,index) + {var + bucket$0=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket$0), + i$3=0; + for(;;) + {if(sz <= i$3) + {var + newsz= + min$1(((3 * sz | 0) / 2 | 0) + 3 | 0,max_array_length - 2 | 0); + if(newsz <= sz)failwith(cst_Weak_Make_hash_bucket_cann); + var + newbucket$0=weak_create(newsz), + newhashes=caml_make_vect(newsz,0); + blit$4(bucket$0,0,newbucket$0,0,sz); + blit$1(hashes,0,newhashes,0,sz); + caml_call3(setter,newbucket$0,sz,d); + caml_check_bound(newhashes,sz)[1 + sz] = h; + caml_check_bound(t[1],index)[1 + index] = newbucket$0; + caml_check_bound(t[2],index)[1 + index] = newhashes; + var _m0_=sz <= t[3]?1:0,_m1_=_m0_?t[3] < newsz?1:0:_m0_; + if(_m1_) + {t[4] = t[4] + 1 | 0; + var i$4=0; + for(;;) + {var + _mQ_=t[5], + bucket=caml_check_bound(t[1],_mQ_)[1 + _mQ_], + _mR_=t[5], + hbucket=caml_check_bound(t[2],_mR_)[1 + _mR_], + n=length$6(bucket), + prev_len=(((n - 3 | 0) * 2 | 0) + 2 | 0) / 3 | 0, + live=count_bucket(0,bucket,0); + if(live <= prev_len) + {var j$2=length$6(bucket) - 1 | 0,i$0=0,j=j$2; + for(;;) + {if(prev_len <= j) + {if(check$0(bucket,i$0)) + {var i$1=i$0 + 1 | 0,i$0=i$1;continue} + if(check$0(bucket,j)) + {blit$4(bucket,j,bucket,i$0,1); + var _mS_=caml_check_bound(hbucket,j)[1 + j]; + caml_check_bound(hbucket,i$0)[1 + i$0] = _mS_; + var j$0=j - 1 | 0,i$2=i$0 + 1 | 0,i$0=i$2,j=j$0; + continue} + var j$1=j - 1 | 0,j=j$1; + continue} + if(0 === prev_len) + {var _mT_=t[5]; + caml_check_bound(t[1],_mT_)[1 + _mT_] = emptybucket; + var _mU_=t[5]; + caml_check_bound(t[2],_mU_)[1 + _mU_] = [0]} + else + {var newbucket=weak_create(prev_len); + blit$4(bucket,0,newbucket,0,prev_len); + var _mX_=t[5]; + caml_check_bound(t[1],_mX_)[1 + _mX_] = newbucket; + var _mY_=sub$1(hbucket,0,prev_len),_mZ_=t[5]; + caml_check_bound(t[2],_mZ_)[1 + _mZ_] = _mY_} + var _mV_=t[3] < n?1:0,_mW_=_mV_?prev_len <= t[3]?1:0:_mV_; + if(_mW_)t[4] = t[4] - 1 | 0; + break}} + t[5] = caml_mod(t[5] + 1 | 0,t[1].length - 1); + var _m3_=i$4 + 1 | 0; + if(2 !== i$4){var i$4=_m3_;continue} + break}} + var _m2_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; + if(_m2_) + {var + n$0=t[1].length - 1, + newlen=min$1(((3 * n$0 | 0) / 2 | 0) + 3 | 0,max_array_length); + if(n$0 < newlen) + {var newt=create(newlen),_mP_=t[1],i=0; + iteri$3 + (function(j,ob) + {var i$0=i; + for(;;) + {if(length$6(ob) <= i$0)return 0; + var match=check$0(ob,i$0); + if(match) + {var + oh=caml_check_bound(t[2],j)[1 + j], + setter$0= + function(i) + {function setter(nb,ni,param){return blit$4(ob,i,nb,ni,1)} + return setter}, + setter=setter$0(i$0), + h=caml_check_bound(oh,i$0)[1 + i$0]; + add_aux(newt,setter,0,h,get_index(newt,h)); + var i$1=i$0 + 1 | 0,i$0=i$1; + continue} + var i$2=i$0 + 1 | 0,i$0=i$2; + continue}}, + _mP_); + t[1] = newt[1]; + t[2] = newt[2]; + t[3] = newt[3]; + t[4] = newt[4]; + t[5] = caml_mod(t[5],newt[1].length - 1); + return 0} + t[3] = max_int; + t[4] = 0; + return 0} + return _m2_} + if(check$0(bucket$0,i$3)){var i$5=i$3 + 1 | 0,i$3=i$5;continue} + caml_call3(setter,bucket$0,i$3,d); + caml_check_bound(hashes,i$3)[1 + i$3] = h; + return 0}} + function add(t,d) + {var h=caml_call1(H[2],d); + return add_aux(t,set$1,[0,d],h,get_index(t,h))} + function find_or(t,d,ifnotfound) + {var + h=caml_call1(H[2],d), + index=get_index(t,h), + bucket=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket), + i=0; + for(;;) + {if(sz <= i)return caml_call2(ifnotfound,h,index); + if(h === caml_check_bound(hashes,i)[1 + i]) + {var match=get_copy(bucket,i); + if(match) + {var v=match[1]; + if(caml_call2(H[1],v,d)) + {var match$0=get$2(bucket,i); + if(match$0){var v$0=match$0[1];return v$0} + var i$0=i + 1 | 0,i=i$0; + continue}} + var i$1=i + 1 | 0,i=i$1; + continue} + var i$2=i + 1 | 0,i=i$2; + continue}} + function merge(t,d) + {return find_or + (t, + d, + function(h,index){add_aux(t,set$1,[0,d],h,index);return d})} + function find(t,d) + {return find_or(t,d,function(h,index){throw Not_found})} + function find_opt(t,d) + {var + h=caml_call1(H[2],d), + index=get_index(t,h), + bucket=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket), + i=0; + for(;;) + {if(sz <= i)return 0; + if(h === caml_check_bound(hashes,i)[1 + i]) + {var match=get_copy(bucket,i); + if(match) + {var v=match[1]; + if(caml_call2(H[1],v,d)) + {var v$0=get$2(bucket,i); + if(v$0)return v$0; + var i$0=i + 1 | 0,i=i$0; + continue}} + var i$1=i + 1 | 0,i=i$1; + continue} + var i$2=i + 1 | 0,i=i$2; + continue}} + function find_shadow(t,d,iffound,ifnotfound) + {var + h=caml_call1(H[2],d), + index=get_index(t,h), + bucket=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket), + i=0; + for(;;) + {if(sz <= i)return ifnotfound; + if(h === caml_check_bound(hashes,i)[1 + i]) + {var match=get_copy(bucket,i); + if(match) + {var v=match[1]; + if(caml_call2(H[1],v,d))return caml_call2(iffound,bucket,i)} + var i$0=i + 1 | 0,i=i$0; + continue} + var i$1=i + 1 | 0,i=i$1; + continue}} + function remove(t,d) + {var _mO_=0; + return find_shadow(t,d,function(w,i){return set$1(w,i,0)},_mO_)} + function mem(t,d) + {var _mN_=0;return find_shadow(t,d,function(w,i){return 1},_mN_)} + function find_all(t,d) + {var + h=caml_call1(H[2],d), + index=get_index(t,h), + bucket=caml_check_bound(t[1],index)[1 + index], + hashes=caml_check_bound(t[2],index)[1 + index], + sz=length$6(bucket), + i=0, + accu=0; + for(;;) + {if(sz <= i)return accu; + if(h === caml_check_bound(hashes,i)[1 + i]) + {var match=get_copy(bucket,i); + if(match) + {var v=match[1]; + if(caml_call2(H[1],v,d)) + {var match$0=get$2(bucket,i); + if(match$0) + {var + v$0=match$0[1], + accu$0=[0,v$0,accu], + i$0=i + 1 | 0, + i=i$0, + accu=accu$0; + continue} + var i$1=i + 1 | 0,i=i$1; + continue}} + var i$2=i + 1 | 0,i=i$2; + continue} + var i$3=i + 1 | 0,i=i$3; + continue}} + function stats(t) + {var len=t[1].length - 1,lens=map$7(length$6,t[1]); + sort(caml_int_compare,lens); + var + _mF_=0, + totlen= + fold_left$3(function(_mM_,_mL_){return _mM_ + _mL_ | 0},_mF_,lens), + _mG_=len - 1 | 0, + _mI_=len / 2 | 0, + _mH_=caml_check_bound(lens,_mG_)[1 + _mG_], + _mJ_=caml_check_bound(lens,_mI_)[1 + _mI_], + _mK_=caml_check_bound(lens,0)[1]; + return [0,len,count(t),totlen,_mK_,_mJ_,_mH_]} + return [0, + create, + clear, + merge, + add, + remove, + find, + find_opt, + find_all, + mem, + iter, + fold, + count, + stats]} + var + Stdlib_Weak= + [0, + weak_create, + length$6, + set$1, + get$2, + get_copy, + check$0, + fill$2, + blit$4, + Make$1]; + caml_register_global(817,Stdlib_Weak,"Stdlib__Weak"); + function id$0(x){return x} + var + String_tag=[248,cst_Stdlib_Format_String_tag,caml_fresh_oo_id(0)], + size=0, + unknown=-1; + function pp_enqueue(state,token) + {state[13] = state[13] + token[3] | 0;return add(token,state[28])} + var pp_infinity=1000000010; + function pp_output_string(state,s) + {return caml_call3(state[17],s,0,caml_ml_string_length(s))} + function pp_output_newline(state){return caml_call1(state[19],0)} + function format_pp_text(state,size,text) + {state[9] = state[9] - size | 0; + pp_output_string(state,text); + state[11] = 0; + return 0} + function format_string(state,s) + {var _mE_=caml_string_notequal(s,cst$67); + return _mE_?format_pp_text(state,caml_ml_string_length(s),s):_mE_} + function break_new_line(state,param,width) + {var after=param[3],offset=param[2],before=param[1]; + format_string(state,before); + pp_output_newline(state); + state[11] = 1; + var + indent=(state[6] - width | 0) + offset | 0, + real_indent=min$1(state[8],indent); + state[10] = real_indent; + state[9] = state[6] - state[10] | 0; + caml_call1(state[21],state[10]); + return format_string(state,after)} + function break_line(state,width){return break_new_line(state,_cl_,width)} + function break_same_line(state,param) + {var after=param[3],width=param[2],before=param[1]; + format_string(state,before); + state[9] = state[9] - width | 0; + caml_call1(state[20],width); + return format_string(state,after)} + function format_pp_token(state,size$0,param) + {if(typeof param === "number") + switch(param) + {case 0: + var match$3=top_opt(state[3]); + if(match$3) + {var + match$4=match$3[1], + tabs=match$4[1], + add_tab= + function(n,ls) + {if(ls) + {var l=ls[2],x=ls[1]; + return caml_lessthan(n,x)?[0,n,ls]:[0,x,add_tab(n,l)]} + return [0,n,0]}; + tabs[1] = add_tab(state[6] - state[9] | 0,tabs[1]); + return 0} + return 0; + case 1:pop_opt(state[2]);return 0; + case 2:pop_opt(state[3]);return 0; + case 3: + var match$5=top_opt(state[2]); + if(match$5) + {var match$6=match$5[1],width$0=match$6[2]; + return break_line(state,width$0)} + return pp_output_newline(state); + case 4: + var _mB_=state[10] !== (state[6] - state[9] | 0)?1:0; + if(_mB_) + {var match$1=take_opt(state[28]); + if(match$1) + {var match$2=match$1[1],size=match$2[1],length=match$2[3]; + state[12] = state[12] - length | 0; + state[9] = state[9] + size | 0; + return 0} + return 0} + return _mB_; + default: + var match$7=pop_opt(state[5]); + if(match$7) + {var tag_name=match$7[1],marker=caml_call1(state[25],tag_name); + return pp_output_string(state,marker)} + return 0} + else + switch(param[0]) + {case 0:var s=param[1];return format_pp_text(state,size$0,s); + case 1: + var + breaks=param[2], + fits=param[1], + off=breaks[2], + before=breaks[1], + match$8=top_opt(state[2]); + if(match$8) + {var match$9=match$8[1],width$1=match$9[2],box_type$0=match$9[1]; + switch(box_type$0) + {case 0:return break_same_line(state,fits); + case 1:return break_new_line(state,breaks,width$1); + case 2:return break_new_line(state,breaks,width$1); + case 3: + return state[9] < (size$0 + caml_ml_string_length(before) | 0) + ?break_new_line(state,breaks,width$1) + :break_same_line(state,fits); + case 4: + return state[11] + ?break_same_line(state,fits) + :state[9] < (size$0 + caml_ml_string_length(before) | 0) + ?break_new_line(state,breaks,width$1) + :((state[6] - width$1 | 0) + off | 0) < state[10] + ?break_new_line(state,breaks,width$1) + :break_same_line(state,fits); + default:return break_same_line(state,fits)}} + return 0; + case 2: + var + off$0=param[2], + n=param[1], + insertion_point=state[6] - state[9] | 0, + match$10=top_opt(state[3]); + if(match$10) + {var match$11=match$10[1],tabs$0=match$11[1],_mC_=tabs$0[1]; + if(_mC_) + {var first=_mC_[1],param$0=tabs$0[1]; + for(;;) + {if(param$0) + {var tail=param$0[2],head=param$0[1]; + if(! (insertion_point <= head)){var param$0=tail;continue} + var _mD_=head} + else + var _mD_=first; + var tab=_mD_; + break}} + else + var tab=insertion_point; + var offset=tab - insertion_point | 0; + return 0 <= offset + ?break_same_line(state,[0,cst$69,offset + n | 0,cst$68]) + :break_new_line + (state,[0,cst$71,tab + off$0 | 0,cst$70],state[6])} + return 0; + case 3: + var + ty=param[2], + off$1=param[1], + insertion_point$0=state[6] - state[9] | 0; + if(state[8] < insertion_point$0) + {var match=top_opt(state[2]); + if(match) + {var match$0=match[1],width=match$0[2],box_type=match$0[1]; + if(state[9] < width && ! (3 < box_type - 1 >>> 0)) + break_line(state,width)} + else + pp_output_newline(state)} + var + width$2=state[9] - off$1 | 0, + box_type$1=1 === ty?1:state[9] < size$0?ty:5; + return push([0,box_type$1,width$2],state[2]); + case 4:var tbox=param[1];return push(tbox,state[3]); + default: + var tag_name$0=param[1],marker$0=caml_call1(state[24],tag_name$0); + pp_output_string(state,marker$0); + return push(tag_name$0,state[5])}} + function advance_left(state) + {for(;;) + {var match=peek_opt(state[28]); + if(match) + {var + match$0=match[1], + size=match$0[1], + length=match$0[3], + token=match$0[2], + pending_count=state[13] - state[12] | 0, + _mz_=0 <= size?1:0, + _mA_=_mz_ || (state[9] <= pending_count?1:0); + if(_mA_) + {take$0(state[28]); + var size$0=0 <= size?size:pp_infinity; + format_pp_token(state,size$0,token); + state[12] = length + state[12] | 0; + continue} + return _mA_} + return 0}} + function enqueue_advance(state,tok) + {pp_enqueue(state,tok);return advance_left(state)} + function enqueue_string_as(state,size,s) + {return enqueue_advance(state,[0,size,[0,s],size])} + function initialize_scan_stack(stack) + {clear(stack); + var queue_elem=[0,unknown,_cm_,0]; + return push([0,-1,queue_elem],stack)} + function set_size(state,ty) + {var match=top_opt(state[1]); + if(match) + {var + match$0=match[1], + queue_elem=match$0[2], + left_total=match$0[1], + _mu_=queue_elem[1]; + if(left_total < state[12])return initialize_scan_stack(state[1]); + var _mv_=queue_elem[2]; + if(typeof _mv_ !== "number") + switch(_mv_[0]) + {case 3: + var + _mx_=1 - ty, + _my_= + _mx_ + ?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0) + :_mx_; + return _my_; + case 1: + case 2: + var + _mw_= + ty?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0):ty; + return _mw_ + } + return 0} + return 0} + function scan_push(state,b,token) + {pp_enqueue(state,token); + if(b)set_size(state,1); + var elem=[0,state[13],token]; + return push(elem,state[1])} + function pp_open_box_gen(state,indent,br_ty) + {state[14] = state[14] + 1 | 0; + if(state[14] < state[15]) + {var size=- state[13] | 0,elem=[0,size,[3,indent,br_ty],0]; + return scan_push(state,0,elem)} + var _ms_=state[14] === state[15]?1:0; + if(_ms_) + {var _mt_=state[16]; + return enqueue_string_as(state,caml_ml_string_length(_mt_),_mt_)} + return _ms_} + function pp_close_box(state,param) + {var _mq_=1 < state[14]?1:0; + if(_mq_) + {if(state[14] < state[15]) + {pp_enqueue(state,[0,size,1,0]);set_size(state,1);set_size(state,0)} + state[14] = state[14] - 1 | 0; + var _mr_=0} + else + var _mr_=_mq_; + return _mr_} + function pp_open_stag(state,tag_name) + {if(state[22]){push(tag_name,state[4]);caml_call1(state[26],tag_name)} + var _mp_=state[23]; + if(_mp_) + {var token=[5,tag_name];return pp_enqueue(state,[0,size,token,0])} + return _mp_} + function pp_close_stag(state,param) + {if(state[23])pp_enqueue(state,[0,size,5,0]); + var _mn_=state[22]; + if(_mn_) + {var match=pop_opt(state[4]); + if(match){var tag_name=match[1];return caml_call1(state[27],tag_name)} + var _mo_=0} + else + var _mo_=_mn_; + return _mo_} + function pp_open_tag(state,s){return pp_open_stag(state,[0,String_tag,s])} + function pp_close_tag(state,param){return pp_close_stag(state,0)} + function pp_set_print_tags(state,b){state[22] = b;return 0} + function pp_set_mark_tags(state,b){state[23] = b;return 0} + function pp_get_print_tags(state,param){return state[22]} + function pp_get_mark_tags(state,param){return state[23]} + function pp_set_tags(state,b) + {pp_set_print_tags(state,b);return pp_set_mark_tags(state,b)} + function pp_get_formatter_stag_function(state,param) + {return [0,state[24],state[25],state[26],state[27]]} + function pp_set_formatter_stag_function(state,param) + {var pct=param[4],pot=param[3],mct=param[2],mot=param[1]; + state[24] = mot; + state[25] = mct; + state[26] = pot; + state[27] = pct; + return 0} + function pp_rinit(state) + {state[12] = 1; + state[13] = 1; + clear$0(state[28]); + initialize_scan_stack(state[1]); + clear(state[2]); + clear(state[3]); + clear(state[4]); + clear(state[5]); + state[10] = 0; + state[14] = 0; + state[9] = state[6]; + return pp_open_box_gen(state,0,3)} + function pp_flush_queue(state,b) + {var _mm_=state[4]; + iter$7(function(param){return pp_close_tag(state,0)},_mm_); + for(;;) + {if(1 < state[14]){pp_close_box(state,0);continue} + state[13] = pp_infinity; + advance_left(state); + if(b)pp_output_newline(state); + return pp_rinit(state)}} + function pp_print_as_size(state,size,s) + {var _ml_=state[14] < state[15]?1:0; + return _ml_?enqueue_string_as(state,size,s):_ml_} + function pp_print_as(state,isize,s) + {return pp_print_as_size(state,isize,s)} + function pp_print_string(state,s) + {return pp_print_as(state,caml_ml_string_length(s),s)} + function pp_print_bytes(state,s) + {return pp_print_as(state,caml_ml_bytes_length(s),of_bytes(s))} + function pp_print_int(state,i) + {return pp_print_string(state,caml_string_of_jsbytes("" + i))} + function pp_print_float(state,f) + {return pp_print_string(state,to_string(f))} + function pp_print_bool(state,b) + {return pp_print_string(state,string_of_bool(b))} + function pp_print_char(state,c){return pp_print_as(state,1,make$1(1,c))} + function pp_open_hbox(state,param){return pp_open_box_gen(state,0,0)} + function pp_open_vbox(state,indent) + {return pp_open_box_gen(state,indent,1)} + function pp_open_hvbox(state,indent) + {return pp_open_box_gen(state,indent,2)} + function pp_open_hovbox(state,indent) + {return pp_open_box_gen(state,indent,3)} + function pp_open_box(state,indent){return pp_open_box_gen(state,indent,4)} + function pp_print_newline(state,param) + {pp_flush_queue(state,1);return caml_call1(state[18],0)} + function pp_print_flush(state,param) + {pp_flush_queue(state,0);return caml_call1(state[18],0)} + function pp_force_newline(state,param) + {var _mk_=state[14] < state[15]?1:0; + return _mk_?enqueue_advance(state,[0,size,3,0]):_mk_} + function pp_print_if_newline(state,param) + {var _mj_=state[14] < state[15]?1:0; + return _mj_?enqueue_advance(state,[0,size,4,0]):_mj_} + function pp_print_custom_break(state,fits,breaks) + {var + after=fits[3], + width=fits[2], + before=fits[1], + _mi_=state[14] < state[15]?1:0; + if(_mi_) + {var + size=- state[13] | 0, + token=[1,fits,breaks], + length= + (caml_ml_string_length(before) + width | 0) + + + caml_ml_string_length(after) + | + 0, + elem=[0,size,token,length]; + return scan_push(state,1,elem)} + return _mi_} + function pp_print_break(state,width,offset) + {return pp_print_custom_break + (state,[0,cst$75,width,cst$74],[0,cst$73,offset,cst$72])} + function pp_print_space(state,param){return pp_print_break(state,1,0)} + function pp_print_cut(state,param){return pp_print_break(state,0,0)} + function pp_open_tbox(state,param) + {state[14] = state[14] + 1 | 0; + var _mh_=state[14] < state[15]?1:0; + if(_mh_) + {var elem=[0,size,[4,[0,[0,0]]],0];return enqueue_advance(state,elem)} + return _mh_} + function pp_close_tbox(state,param) + {var _me_=1 < state[14]?1:0; + if(_me_) + {var _mf_=state[14] < state[15]?1:0; + if(_mf_) + {var elem=[0,size,2,0]; + enqueue_advance(state,elem); + state[14] = state[14] - 1 | 0; + var _mg_=0} + else + var _mg_=_mf_} + else + var _mg_=_me_; + return _mg_} + function pp_print_tbreak(state,width,offset) + {var _md_=state[14] < state[15]?1:0; + if(_md_) + {var size=- state[13] | 0,elem=[0,size,[2,width,offset],width]; + return scan_push(state,1,elem)} + return _md_} + function pp_print_tab(state,param){return pp_print_tbreak(state,0,0)} + function pp_set_tab(state,param) + {var _mc_=state[14] < state[15]?1:0; + if(_mc_){var elem=[0,size,0,0];return enqueue_advance(state,elem)} + return _mc_} + function pp_set_max_boxes(state,n) + {var _ma_=1 < n?1:0,_mb_=_ma_?(state[15] = n,0):_ma_;return _mb_} + function pp_get_max_boxes(state,param){return state[15]} + function pp_over_max_boxes(state,param) + {return state[14] === state[15]?1:0} + function pp_set_ellipsis_text(state,s){state[16] = s;return 0} + function pp_get_ellipsis_text(state,param){return state[16]} + function pp_limit(n){return n < 1000000010?n:1000000009} + function pp_set_max_indent(state,n$0) + {var _l$_=1 < n$0?1:0; + if(_l$_) + {var n$1=state[6] - n$0 | 0,_l__=1 <= n$1?1:0; + if(_l__) + {var n=pp_limit(n$1); + state[7] = n; + state[8] = state[6] - state[7] | 0; + return pp_rinit(state)} + return _l__} + return _l$_} + function pp_get_max_indent(state,param){return state[8]} + function pp_set_margin(state,n) + {var _l9_=1 <= n?1:0; + if(_l9_) + {var n$0=pp_limit(n); + state[6] = n$0; + var + new_max_indent= + state[8] <= state[6] + ?state[8] + :max$1(max$1(state[6] - state[7] | 0,state[6] / 2 | 0),1); + return pp_set_max_indent(state,new_max_indent)} + return _l9_} + function validate_geometry(param) + {var margin=param[2],max_indent=param[1]; + return 2 <= max_indent?margin <= max_indent?_cn_:_co_:_cp_} + function check_geometry(geometry) + {var match=validate_geometry(geometry);return 0 === match[0]?1:0} + function pp_get_margin(state,param){return state[6]} + function pp_set_full_geometry(state,param) + {var margin=param[2],max_indent=param[1]; + pp_set_margin(state,margin); + pp_set_max_indent(state,max_indent); + return 0} + function pp_set_geometry(state,max_indent,margin) + {var geometry=[0,max_indent,margin],match=validate_geometry(geometry); + if(0 === match[0])return pp_set_full_geometry(state,geometry); + var msg=match[1]; + throw [0,Invalid_argument,cat(cst_Format_pp_set_geometry,msg)]} + function pp_safe_set_geometry(state,max_indent,margin) + {var geometry=[0,max_indent,margin],match=validate_geometry(geometry); + return 0 === match[0]?pp_set_full_geometry(state,geometry):0} + function pp_get_geometry(state,param){return [0,state[8],state[6]]} + function pp_update_geometry(state,update) + {var geometry=pp_get_geometry(state,0); + return pp_set_full_geometry(state,caml_call1(update,geometry))} + function pp_set_formatter_out_functions(state,param) + {var j=param[5],i=param[4],h=param[3],g=param[2],f=param[1]; + state[17] = f; + state[18] = g; + state[19] = h; + state[20] = i; + state[21] = j; + return 0} + function pp_get_formatter_out_functions(state,param) + {return [0,state[17],state[18],state[19],state[20],state[21]]} + function pp_set_formatter_output_functi(state,f,g) + {state[17] = f;state[18] = g;return 0} + function pp_get_formatter_output_functi(state,param) + {return [0,state[17],state[18]]} + function display_newline(state,param) + {return caml_call3(state[17],cst$76,0,1)} + var blank_line=make$1(80,32); + function display_indent(state,n) + {var n$0=n; + for(;;) + {var _l8_=0 < n$0?1:0; + if(_l8_) + {if(80 < n$0) + {caml_call3(state[17],blank_line,0,80); + var n$1=n$0 - 80 | 0,n$0=n$1; + continue} + return caml_call3(state[17],blank_line,0,n$0)} + return _l8_}} + function pp_set_formatter_out_channel(state,oc) + {state[17] + = + function(_l5_,_l6_,_l7_){return output_substring(oc,_l5_,_l6_,_l7_)}; + state[18] = function(param){return caml_ml_flush(oc)}; + state[19] = function(_l4_){return display_newline(state,_l4_)}; + state[20] = function(_l3_){return display_indent(state,_l3_)}; + state[21] = function(_l2_){return display_indent(state,_l2_)}; + return 0} + function default_pp_mark_open_tag(param) + {if(param[1] === String_tag) + {var s=param[2];return cat(cst$78,cat(s,cst$77))} + return cst$79} + function default_pp_mark_close_tag(param) + {if(param[1] === String_tag) + {var s=param[2];return cat(cst$81,cat(s,cst$80))} + return cst$82} + function default_pp_print_open_tag(_l1_){return 0} + function default_pp_print_close_tag(_l0_){return 0} + function pp_make_formatter(f,g,h,i,j) + {var pp_queue=create$1(0),sys_tok=[0,unknown,_cq_,0]; + add(sys_tok,pp_queue); + var scan_stack=create$0(0); + initialize_scan_stack(scan_stack); + push([0,1,sys_tok],scan_stack); + var _lX_=create$0(0),_lY_=create$0(0),_lZ_=create$0(0); + return [0, + scan_stack, + create$0(0), + _lZ_, + _lY_, + _lX_, + 78, + 10, + 68, + 78, + 0, + 1, + 1, + 1, + 1, + max_int, + cst$83, + f, + g, + h, + i, + j, + 0, + 0, + default_pp_mark_open_tag, + default_pp_mark_close_tag, + default_pp_print_open_tag, + default_pp_print_close_tag, + pp_queue]} + function formatter_of_out_functions(out_funs) + {return pp_make_formatter + (out_funs[1],out_funs[2],out_funs[3],out_funs[4],out_funs[5])} + function make_formatter(output,flush) + {function _lP_(_lW_){return 0} + function _lQ_(_lV_){return 0} + var + ppf= + pp_make_formatter(output,flush,function(_lU_){return 0},_lQ_,_lP_); + ppf[19] = function(_lT_){return display_newline(ppf,_lT_)}; + ppf[20] = function(_lS_){return display_indent(ppf,_lS_)}; + ppf[21] = function(_lR_){return display_indent(ppf,_lR_)}; + return ppf} + function formatter_of_out_channel(oc) + {function _lL_(param){return caml_ml_flush(oc)} + return make_formatter + (function(_lM_,_lN_,_lO_) + {return output_substring(oc,_lM_,_lN_,_lO_)}, + _lL_)} + function formatter_of_buffer(b) + {function _lG_(_lK_){return 0} + return make_formatter + (function(_lH_,_lI_,_lJ_) + {return add_substring(b,_lH_,_lI_,_lJ_)}, + _lG_)} + var pp_buffer_size=512; + function pp_make_buffer(param){return create$2(pp_buffer_size)} + var + stdbuf=pp_make_buffer(0), + std_formatter=formatter_of_out_channel(stdout), + err_formatter=formatter_of_out_channel(stderr), + str_formatter=formatter_of_buffer(stdbuf); + function flush_buffer_formatter(buf,ppf) + {pp_flush_queue(ppf,0);var s=contents(buf);reset(buf);return s} + function flush_str_formatter(param) + {return flush_buffer_formatter(stdbuf,str_formatter)} + function make_symbolic_output_buffer(param){return [0,0]} + function clear_symbolic_output_buffer(sob){sob[1] = 0;return 0} + function get_symbolic_output_buffer(sob){return rev(sob[1])} + function flush_symbolic_output_buffer(sob) + {var items=get_symbolic_output_buffer(sob); + clear_symbolic_output_buffer(sob); + return items} + function add_symbolic_output_item(sob,item) + {sob[1] = [0,item,sob[1]];return 0} + function formatter_of_symbolic_output_b(sob) + {function f(s,i,n){return add_symbolic_output_item(sob,[0,sub$0(s,i,n)])} + function g(_lF_){return add_symbolic_output_item(sob,0)} + function h(_lE_){return add_symbolic_output_item(sob,1)} + function i(n){return add_symbolic_output_item(sob,[1,n])} + function j(n){return add_symbolic_output_item(sob,[2,n])} + return pp_make_formatter(f,g,h,i,j)} + function open_hbox(_lD_){return pp_open_hbox(std_formatter,_lD_)} + function open_vbox(_lC_){return pp_open_vbox(std_formatter,_lC_)} + function open_hvbox(_lB_){return pp_open_hvbox(std_formatter,_lB_)} + function open_hovbox(_lA_){return pp_open_hovbox(std_formatter,_lA_)} + function open_box(_lz_){return pp_open_box(std_formatter,_lz_)} + function close_box(_ly_){return pp_close_box(std_formatter,_ly_)} + function open_tag(_lx_){return pp_open_tag(std_formatter,_lx_)} + function close_tag(_lw_){return pp_close_tag(std_formatter,_lw_)} + function open_stag(_lv_){return pp_open_stag(std_formatter,_lv_)} + function close_stag(_lu_){return pp_close_stag(std_formatter,_lu_)} + function print_as(_ls_,_lt_){return pp_print_as(std_formatter,_ls_,_lt_)} + function print_string$0(_lr_){return pp_print_string(std_formatter,_lr_)} + function print_bytes$0(_lq_){return pp_print_bytes(std_formatter,_lq_)} + function print_int$0(_lp_){return pp_print_int(std_formatter,_lp_)} + function print_float$0(_lo_){return pp_print_float(std_formatter,_lo_)} + function print_char$0(_ln_){return pp_print_char(std_formatter,_ln_)} + function print_bool(_lm_){return pp_print_bool(std_formatter,_lm_)} + function print_break(_lk_,_ll_) + {return pp_print_break(std_formatter,_lk_,_ll_)} + function print_cut(_lj_){return pp_print_cut(std_formatter,_lj_)} + function print_space(_li_){return pp_print_space(std_formatter,_li_)} + function force_newline(_lh_){return pp_force_newline(std_formatter,_lh_)} + function print_flush(_lg_){return pp_print_flush(std_formatter,_lg_)} + function print_newline$0(_lf_) + {return pp_print_newline(std_formatter,_lf_)} + function print_if_newline(_le_) + {return pp_print_if_newline(std_formatter,_le_)} + function open_tbox(_ld_){return pp_open_tbox(std_formatter,_ld_)} + function close_tbox(_lc_){return pp_close_tbox(std_formatter,_lc_)} + function print_tbreak(_la_,_lb_) + {return pp_print_tbreak(std_formatter,_la_,_lb_)} + function set_tab(_k$_){return pp_set_tab(std_formatter,_k$_)} + function print_tab(_k__){return pp_print_tab(std_formatter,_k__)} + function set_margin(_k9_){return pp_set_margin(std_formatter,_k9_)} + function get_margin(_k8_){return std_formatter[6]} + function set_max_indent(_k7_) + {return pp_set_max_indent(std_formatter,_k7_)} + function get_max_indent(_k6_){return std_formatter[8]} + function set_geometry(_k4_,_k5_) + {return pp_set_geometry(std_formatter,_k4_,_k5_)} + function safe_set_geometry(_k2_,_k3_) + {return pp_safe_set_geometry(std_formatter,_k2_,_k3_)} + function get_geometry(_k1_){return pp_get_geometry(std_formatter,_k1_)} + function update_geometry(_k0_) + {return pp_update_geometry(std_formatter,_k0_)} + function set_max_boxes(_kZ_){return pp_set_max_boxes(std_formatter,_kZ_)} + function get_max_boxes(_kY_){return std_formatter[15]} + function over_max_boxes(_kX_) + {return pp_over_max_boxes(std_formatter,_kX_)} + function set_ellipsis_text(_kW_) + {return pp_set_ellipsis_text(std_formatter,_kW_)} + function get_ellipsis_text(_kV_){return std_formatter[16]} + function set_formatter_out_channel(_kU_) + {return pp_set_formatter_out_channel(std_formatter,_kU_)} + function set_formatter_out_functions(_kT_) + {return pp_set_formatter_out_functions(std_formatter,_kT_)} + function get_formatter_out_functions(_kS_) + {return pp_get_formatter_out_functions(std_formatter,_kS_)} + function set_formatter_output_functions(_kQ_,_kR_) + {return pp_set_formatter_output_functi(std_formatter,_kQ_,_kR_)} + function get_formatter_output_functions(_kP_) + {return pp_get_formatter_output_functi(std_formatter,_kP_)} + function set_formatter_stag_functions(_kO_) + {return pp_set_formatter_stag_function(std_formatter,_kO_)} + function get_formatter_stag_functions(_kN_) + {return pp_get_formatter_stag_function(std_formatter,_kN_)} + function set_print_tags(_kM_) + {return pp_set_print_tags(std_formatter,_kM_)} + function get_print_tags(_kL_){return std_formatter[22]} + function set_mark_tags(_kK_){return pp_set_mark_tags(std_formatter,_kK_)} + function get_mark_tags(_kJ_){return std_formatter[23]} + function set_tags(_kI_){return pp_set_tags(std_formatter,_kI_)} + function pp_print_list(opt,pp_v,ppf,param) + {var opt$0=opt,param$0=param; + for(;;) + {if(opt$0)var sth=opt$0[1],pp_sep=sth;else var pp_sep=pp_print_cut; + if(param$0) + {var _kH_=param$0[1]; + if(param$0[2]) + {var vs=param$0[2]; + caml_call2(pp_v,ppf,_kH_); + caml_call2(pp_sep,ppf,0); + var opt$1=[0,pp_sep],opt$0=opt$1,param$0=vs; + continue} + return caml_call2(pp_v,ppf,_kH_)} + return 0}} + function pp_print_seq(opt,pp_v,ppf,seq$1) + {if(opt)var sth=opt[1],pp_sep=sth;else var pp_sep=pp_print_cut; + var match$0=caml_call1(seq$1,0); + if(match$0) + {var seq$2=match$0[2],v$0=match$0[1]; + caml_call2(pp_v,ppf,v$0); + var seq=seq$2; + for(;;) + {var match=caml_call1(seq,0); + if(match) + {var seq$0=match[2],v=match[1]; + caml_call2(pp_sep,ppf,0); + caml_call2(pp_v,ppf,v); + var seq=seq$0; + continue} + return 0}} + return 0} + function pp_print_text(ppf,s) + {var len=caml_ml_string_length(s),left=[0,0],right=[0,0]; + function flush(param) + {pp_print_string(ppf,sub$0(s,left[1],right[1] - left[1] | 0)); + right[1]++; + left[1] = right[1]; + return 0} + for(;;) + {if(right[1] !== len) + {var match=caml_string_get(s,right[1]); + if(10 === match) + {flush(0);pp_force_newline(ppf,0)} + else + if(32 === match){flush(0);pp_print_space(ppf,0)}else right[1]++; + continue} + var _kG_=left[1] !== len?1:0; + return _kG_?flush(0):_kG_}} + function pp_print_option(opt,pp_v,ppf,param) + {if(opt) + var sth=opt[1],none=sth; + else + var none=function(param,_kF_){return 0}; + if(param){var v=param[1];return caml_call2(pp_v,ppf,v)} + return caml_call2(none,ppf,0)} + function pp_print_result(ok,error,ppf,param) + {if(0 === param[0]){var v=param[1];return caml_call2(ok,ppf,v)} + var e=param[1]; + return caml_call2(error,ppf,e)} + function pp_print_either(left,right,ppf,param) + {if(0 === param[0]){var l=param[1];return caml_call2(left,ppf,l)} + var r=param[1]; + return caml_call2(right,ppf,r)} + function compute_tag(output,tag_acc) + {var buf=create$2(16),ppf=formatter_of_buffer(buf); + caml_call2(output,ppf,tag_acc); + pp_print_flush(ppf,0); + var len=buf[2]; + return 2 <= len?sub$3(buf,1,len - 2 | 0):contents(buf)} + function output_formatting_lit(ppf,fmting_lit) + {if(typeof fmting_lit === "number") + switch(fmting_lit) + {case 0:return pp_close_box(ppf,0); + case 1:return pp_close_tag(ppf,0); + case 2:return pp_print_flush(ppf,0); + case 3:return pp_force_newline(ppf,0); + case 4:return pp_print_newline(ppf,0); + case 5:return pp_print_char(ppf,64); + default:return pp_print_char(ppf,37)} + else + switch(fmting_lit[0]) + {case 0: + var offset=fmting_lit[3],width=fmting_lit[2]; + return pp_print_break(ppf,width,offset); + case 1:return 0; + default: + var c=fmting_lit[1]; + pp_print_char(ppf,64); + return pp_print_char(ppf,c)}} + function output_acc$0(ppf,acc) + {var switch$0=0; + if(typeof acc === "number") + return 0; + else + switch(acc[0]) + {case 0: + var f=acc[2],p=acc[1]; + output_acc$0(ppf,p); + return output_formatting_lit(ppf,f); + case 1: + var _kv_=acc[2],_kw_=acc[1]; + if(0 === _kv_[0]) + {var acc$0=_kv_[1]; + output_acc$0(ppf,_kw_); + return pp_open_stag + (ppf,[0,String_tag,compute_tag(output_acc$0,acc$0)])} + var acc$1=_kv_[1]; + output_acc$0(ppf,_kw_); + var + match=open_box_of_string(compute_tag(output_acc$0,acc$1)), + bty=match[2], + indent=match[1]; + return pp_open_box_gen(ppf,indent,bty); + case 2: + var _kx_=acc[1],switch$1=0; + if(typeof _kx_ !== "number" && 0 === _kx_[0]) + {var _ky_=_kx_[2],switch$2=0; + if(typeof _ky_ !== "number" && 1 === _ky_[0]) + {var s$0=acc[2],size=_ky_[2],p$1=_kx_[1]; + switch$1 = 1; + switch$2 = 1}} + if(! switch$1){var s=acc[2],p$0=_kx_;switch$0 = 2} + break; + case 3: + var _kz_=acc[1],switch$3=0; + if(typeof _kz_ !== "number" && 0 === _kz_[0]) + {var _kA_=_kz_[2],switch$4=0; + if(typeof _kA_ !== "number" && 1 === _kA_[0]) + {var c$0=acc[2],size$0=_kA_[2],p$3=_kz_[1]; + switch$0 = 1; + switch$3 = 1; + switch$4 = 1}} + if(! switch$3){var c=acc[2],p$2=_kz_;switch$0 = 3} + break; + case 4: + var _kB_=acc[1],switch$5=0; + if(typeof _kB_ !== "number" && 0 === _kB_[0]) + {var _kC_=_kB_[2],switch$6=0; + if(typeof _kC_ !== "number" && 1 === _kC_[0]) + {var s$0=acc[2],size=_kC_[2],p$1=_kB_[1]; + switch$5 = 1; + switch$6 = 1}} + if(! switch$5){var s=acc[2],p$0=_kB_;switch$0 = 2} + break; + case 5: + var _kD_=acc[1],switch$7=0; + if(typeof _kD_ === "number" || ! (0 === _kD_[0])) + switch$7 = 1; + else + {var _kE_=_kD_[2],switch$8=0; + if(typeof _kE_ !== "number" && 1 === _kE_[0]) + {var c$0=acc[2],size$0=_kE_[2],p$3=_kD_[1]; + switch$0 = 1; + switch$8 = 1} + if(! switch$8)switch$7 = 1} + if(switch$7){var c=acc[2],p$2=_kD_;switch$0 = 3} + break; + case 6: + var f$0=acc[2],p$4=acc[1]; + output_acc$0(ppf,p$4); + return caml_call1(f$0,ppf); + case 7: + var p$5=acc[1];output_acc$0(ppf,p$5);return pp_print_flush(ppf,0); + default: + var msg=acc[2],p$6=acc[1]; + output_acc$0(ppf,p$6); + return invalid_arg(msg)} + switch(switch$0) + {case 0:output_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0); + case 1: + output_acc$0(ppf,p$3); + return pp_print_as_size(ppf,size$0,make$1(1,c$0)); + case 2:output_acc$0(ppf,p$0);return pp_print_string(ppf,s); + default:output_acc$0(ppf,p$2);return pp_print_char(ppf,c)}} + function strput_acc$0(ppf,acc) + {var switch$0=0; + if(typeof acc === "number") + return 0; + else + switch(acc[0]) + {case 0: + var f=acc[2],p=acc[1]; + strput_acc$0(ppf,p); + return output_formatting_lit(ppf,f); + case 1: + var _kj_=acc[2],_kk_=acc[1]; + if(0 === _kj_[0]) + {var acc$0=_kj_[1]; + strput_acc$0(ppf,_kk_); + return pp_open_stag + (ppf,[0,String_tag,compute_tag(strput_acc$0,acc$0)])} + var acc$1=_kj_[1]; + strput_acc$0(ppf,_kk_); + var + match=open_box_of_string(compute_tag(strput_acc$0,acc$1)), + bty=match[2], + indent=match[1]; + return pp_open_box_gen(ppf,indent,bty); + case 2: + var _kl_=acc[1],switch$1=0; + if(typeof _kl_ !== "number" && 0 === _kl_[0]) + {var _km_=_kl_[2],switch$2=0; + if(typeof _km_ !== "number" && 1 === _km_[0]) + {var s$0=acc[2],size=_km_[2],p$1=_kl_[1]; + switch$1 = 1; + switch$2 = 1}} + if(! switch$1){var s=acc[2],p$0=_kl_;switch$0 = 2} + break; + case 3: + var _kn_=acc[1],switch$3=0; + if(typeof _kn_ !== "number" && 0 === _kn_[0]) + {var _ko_=_kn_[2],switch$4=0; + if(typeof _ko_ !== "number" && 1 === _ko_[0]) + {var c$0=acc[2],size$0=_ko_[2],p$3=_kn_[1]; + switch$0 = 1; + switch$3 = 1; + switch$4 = 1}} + if(! switch$3){var c=acc[2],p$2=_kn_;switch$0 = 3} + break; + case 4: + var _kp_=acc[1],switch$5=0; + if(typeof _kp_ !== "number" && 0 === _kp_[0]) + {var _kq_=_kp_[2],switch$6=0; + if(typeof _kq_ !== "number" && 1 === _kq_[0]) + {var s$0=acc[2],size=_kq_[2],p$1=_kp_[1]; + switch$5 = 1; + switch$6 = 1}} + if(! switch$5){var s=acc[2],p$0=_kp_;switch$0 = 2} + break; + case 5: + var _kr_=acc[1],switch$7=0; + if(typeof _kr_ === "number" || ! (0 === _kr_[0])) + switch$7 = 1; + else + {var _ks_=_kr_[2],switch$8=0; + if(typeof _ks_ !== "number" && 1 === _ks_[0]) + {var c$0=acc[2],size$0=_ks_[2],p$3=_kr_[1]; + switch$0 = 1; + switch$8 = 1} + if(! switch$8)switch$7 = 1} + if(switch$7){var c=acc[2],p$2=_kr_;switch$0 = 3} + break; + case 6: + var _kt_=acc[1]; + if(typeof _kt_ !== "number" && 0 === _kt_[0]) + {var _ku_=_kt_[2]; + if(typeof _ku_ !== "number" && 1 === _ku_[0]) + {var f$1=acc[2],size$1=_ku_[2],p$4=_kt_[1]; + strput_acc$0(ppf,p$4); + return pp_print_as_size(ppf,size$1,caml_call1(f$1,0))}} + var f$0=acc[2]; + strput_acc$0(ppf,_kt_); + return pp_print_string(ppf,caml_call1(f$0,0)); + case 7: + var p$5=acc[1];strput_acc$0(ppf,p$5);return pp_print_flush(ppf,0); + default: + var msg=acc[2],p$6=acc[1]; + strput_acc$0(ppf,p$6); + return invalid_arg(msg)} + switch(switch$0) + {case 0:strput_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0); + case 1: + strput_acc$0(ppf,p$3); + return pp_print_as_size(ppf,size$0,make$1(1,c$0)); + case 2:strput_acc$0(ppf,p$0);return pp_print_string(ppf,s); + default:strput_acc$0(ppf,p$2);return pp_print_char(ppf,c)}} + function kfprintf$0(k,ppf,param) + {var fmt=param[1],_ki_=0; + return make_printf + (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)}, + _ki_, + fmt)} + function ikfprintf$0(k,ppf,param) + {var fmt=param[1];return make_iprintf(k,ppf,fmt)} + function ifprintf$0(ppf,param) + {var fmt=param[1],_kg_=0; + return make_iprintf(function(_kh_){return 0},_kg_,fmt)} + function fprintf$0(ppf) + {function _kd_(_kf_){return 0} + return function(_ke_){return kfprintf$0(_kd_,ppf,_ke_)}} + function printf$0(fmt){return caml_call1(fprintf$0(std_formatter),fmt)} + function eprintf$0(fmt){return caml_call1(fprintf$0(err_formatter),fmt)} + function kdprintf(k,param) + {var fmt=param[1],_kc_=0; + return make_printf + (function(acc) + {return caml_call1 + (k,function(ppf){return output_acc$0(ppf,acc)})}, + _kc_, + fmt)} + function dprintf(fmt){return kdprintf(function(i){return i},fmt)} + function kprintf(k,param) + {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b); + function k$0(acc) + {strput_acc$0(ppf,acc); + return caml_call1(k,flush_buffer_formatter(b,ppf))} + return make_printf(k$0,0,fmt)} + function sprintf$0(fmt){return kprintf(id$0,fmt)} + function kasprintf(k,param) + {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b); + function k$0(acc) + {output_acc$0(ppf,acc); + return caml_call1(k,flush_buffer_formatter(b,ppf))} + return make_printf(k$0,0,fmt)} + function asprintf(fmt){return kasprintf(id$0,fmt)} + function flush_standard_formatters(param) + {pp_print_flush(std_formatter,0);return pp_print_flush(err_formatter,0)} + at_exit(flush_standard_formatters); + function pp_set_all_formatter_output_fu(state,f,g,h,i) + {pp_set_formatter_output_functi(state,f,g); + state[19] = h; + state[20] = i; + return 0} + function pp_get_all_formatter_output_fu(state,param) + {return [0,state[17],state[18],state[19],state[20]]} + function set_all_formatter_output_funct(_j__,_j$_,_ka_,_kb_) + {return pp_set_all_formatter_output_fu(std_formatter,_j__,_j$_,_ka_,_kb_)} + function get_all_formatter_output_funct(_j9_) + {return pp_get_all_formatter_output_fu(std_formatter,_j9_)} + function bprintf$0(b,param) + {var fmt=param[1],ppf=formatter_of_buffer(b); + function k(acc){output_acc$0(ppf,acc);return pp_flush_queue(ppf,0)} + return make_printf(k,0,fmt)} + function pp_set_formatter_tag_functions(state,param) + {var pct=param[4],pot=param[3],mct=param[2],mot=param[1]; + function stringify(f,e,param) + {if(param[1] === String_tag){var s=param[2];return caml_call1(f,s)} + return e} + state[24] = function(_j8_){return stringify(mot,cst$84,_j8_)}; + state[25] = function(_j7_){return stringify(mct,cst$85,_j7_)}; + var _j3_=0; + state[26] = function(_j6_){return stringify(pot,_j3_,_j6_)}; + var _j4_=0; + state[27] = function(_j5_){return stringify(pct,_j4_,_j5_)}; + return 0} + function pp_get_formatter_tag_functions(fmt,param) + {var funs=pp_get_formatter_stag_function(fmt,0); + function mark_open_tag(s){return caml_call1(funs[1],[0,String_tag,s])} + function mark_close_tag(s){return caml_call1(funs[2],[0,String_tag,s])} + function print_open_tag(s){return caml_call1(funs[3],[0,String_tag,s])} + function print_close_tag(s){return caml_call1(funs[4],[0,String_tag,s])} + return [0,mark_open_tag,mark_close_tag,print_open_tag,print_close_tag]} + function set_formatter_tag_functions(_j2_) + {return pp_set_formatter_tag_functions(std_formatter,_j2_)} + function get_formatter_tag_functions(_j1_) + {return pp_get_formatter_tag_functions(std_formatter,_j1_)} + var + Stdlib_Format= + [0, + pp_open_box, + open_box, + pp_close_box, + close_box, + pp_open_hbox, + open_hbox, + pp_open_vbox, + open_vbox, + pp_open_hvbox, + open_hvbox, + pp_open_hovbox, + open_hovbox, + pp_print_string, + print_string$0, + pp_print_bytes, + print_bytes$0, + pp_print_as, + print_as, + pp_print_int, + print_int$0, + pp_print_float, + print_float$0, + pp_print_char, + print_char$0, + pp_print_bool, + print_bool, + pp_print_space, + print_space, + pp_print_cut, + print_cut, + pp_print_break, + print_break, + pp_print_custom_break, + pp_force_newline, + force_newline, + pp_print_if_newline, + print_if_newline, + pp_print_flush, + print_flush, + pp_print_newline, + print_newline$0, + pp_set_margin, + set_margin, + pp_get_margin, + get_margin, + pp_set_max_indent, + set_max_indent, + pp_get_max_indent, + get_max_indent, + check_geometry, + pp_set_geometry, + set_geometry, + pp_safe_set_geometry, + safe_set_geometry, + pp_update_geometry, + update_geometry, + pp_get_geometry, + get_geometry, + pp_set_max_boxes, + set_max_boxes, + pp_get_max_boxes, + get_max_boxes, + pp_over_max_boxes, + over_max_boxes, + pp_open_tbox, + open_tbox, + pp_close_tbox, + close_tbox, + pp_set_tab, + set_tab, + pp_print_tab, + print_tab, + pp_print_tbreak, + print_tbreak, + pp_set_ellipsis_text, + set_ellipsis_text, + pp_get_ellipsis_text, + get_ellipsis_text, + String_tag, + pp_open_stag, + open_stag, + pp_close_stag, + close_stag, + pp_set_tags, + set_tags, + pp_set_print_tags, + set_print_tags, + pp_set_mark_tags, + set_mark_tags, + pp_get_print_tags, + get_print_tags, + pp_get_mark_tags, + get_mark_tags, + pp_set_formatter_out_channel, + set_formatter_out_channel, + pp_set_formatter_output_functi, + set_formatter_output_functions, + pp_get_formatter_output_functi, + get_formatter_output_functions, + pp_set_formatter_out_functions, + set_formatter_out_functions, + pp_get_formatter_out_functions, + get_formatter_out_functions, + pp_set_formatter_stag_function, + set_formatter_stag_functions, + pp_get_formatter_stag_function, + get_formatter_stag_functions, + formatter_of_out_channel, + std_formatter, + err_formatter, + formatter_of_buffer, + stdbuf, + str_formatter, + flush_str_formatter, + make_formatter, + formatter_of_out_functions, + make_symbolic_output_buffer, + clear_symbolic_output_buffer, + get_symbolic_output_buffer, + flush_symbolic_output_buffer, + add_symbolic_output_item, + formatter_of_symbolic_output_b, + pp_print_list, + pp_print_seq, + pp_print_text, + pp_print_option, + pp_print_result, + pp_print_either, + fprintf$0, + printf$0, + eprintf$0, + sprintf$0, + asprintf, + dprintf, + ifprintf$0, + kfprintf$0, + kdprintf, + ikfprintf$0, + kprintf, + kasprintf, + bprintf$0, + kprintf, + set_all_formatter_output_funct, + get_all_formatter_output_funct, + pp_set_all_formatter_output_fu, + pp_get_all_formatter_output_fu, + pp_open_tag, + open_tag, + pp_close_tag, + close_tag, + pp_set_formatter_tag_functions, + set_formatter_tag_functions, + pp_get_formatter_tag_functions, + get_formatter_tag_functions]; + caml_register_global(818,Stdlib_Format,"Stdlib__Format"); + var null_char=0; + function next_char(ib) + {try + {var c=caml_call1(ib[7],0); + ib[2] = c; + ib[3] = 1; + ib[4] = ib[4] + 1 | 0; + if(10 === c)ib[5] = ib[5] + 1 | 0; + return c} + catch(_j0_) + {_j0_ = caml_wrap_exception(_j0_); + if(_j0_ === End_of_file) + {ib[2] = null_char;ib[3] = 0;ib[1] = 1;return null_char} + throw _j0_}} + function peek_char(ib){return ib[3]?ib[2]:next_char(ib)} + function checked_peek_char(ib) + {var c=peek_char(ib);if(ib[1])throw End_of_file;return c} + function end_of_input(ib){peek_char(ib);return ib[1]} + function beginning_of_input(ib){return 0 === ib[4]?1:0} + function name_of_input(ib) + {var _jZ_=ib[9]; + if(typeof _jZ_ === "number") + return 0 === _jZ_?cst_unnamed_function:cst_unnamed_character_string; + else + {if(0 === _jZ_[0])return cst_unnamed_Stdlib_input_chann; + var fname=_jZ_[1]; + return fname}} + function char_count(ib){return ib[3]?ib[4] - 1 | 0:ib[4]} + function reset_token(ib){return reset(ib[8])} + function invalidate_current_char(ib){ib[3] = 0;return 0} + function token_string(ib) + {var token_buffer=ib[8],tok=contents(token_buffer); + clear$1(token_buffer); + ib[6] = ib[6] + 1 | 0; + return tok} + function skip_char(width,ib){invalidate_current_char(ib);return width} + function ignore_char(width,ib){return skip_char(width - 1 | 0,ib)} + function store_char(width,ib,c) + {add_char(ib[8],c);return ignore_char(width,ib)} + var default_token_buffer_size=1024; + function create$4(iname,next) + {return [0, + 0, + null_char, + 0, + 0, + 0, + 0, + next, + create$2(default_token_buffer_size), + iname]} + function from_string$1(s) + {var i=[0,0],len=caml_ml_string_length(s); + function next(param) + {if(len <= i[1])throw End_of_file; + var c=caml_string_get(s,i[1]); + i[1]++; + return c} + return create$4(1,next)} + var _cr_=0; + function from_function$0(_jY_){return create$4(_cr_,_jY_)} + var len=1024; + function scan_close_at_end(ic) + {caml_ml_close_channel(ic);throw End_of_file} + function scan_raise_at_end(ic){throw End_of_file} + function from_ic(scan_close_ic,iname,ic) + {var buf=caml_create_bytes(1024),i=[0,0],lim=[0,0],eof=[0,0]; + function next(param) + {if(i[1] < lim[1]){var c=caml_bytes_get(buf,i[1]);i[1]++;return c} + if(eof[1])throw End_of_file; + lim[1] = input(ic,buf,0,len); + return 0 === lim[1] + ?(eof[1] = 1,caml_call1(scan_close_ic,ic)) + :(i[1] = 1,caml_bytes_get(buf,0))} + return create$4(iname,next)} + var stdib=from_ic(scan_raise_at_end,[1,cst$86,stdin],stdin); + function open_in_file(open_in,fname) + {if(caml_string_notequal(fname,cst$87)) + {var ic=caml_call1(open_in,fname); + return from_ic(scan_close_at_end,[1,fname,ic],ic)} + return stdib} + function from_file(_jX_){return open_in_file(open_text$0,_jX_)} + function from_file_bin(_jW_){return open_in_file(open_bin$0,_jW_)} + function from_channel$0(ic){return from_ic(scan_raise_at_end,[0,ic],ic)} + function close_in(ib) + {var _jV_=ib[9]; + if(typeof _jV_ === "number") + return 0; + else + {if(0 === _jV_[0]){var ic=_jV_[1];return caml_ml_close_channel(ic)} + var ic$0=_jV_[2]; + return caml_ml_close_channel(ic$0)}} + var memo=[0,0]; + function memo_from_ic(scan_close_ic,ic) + {try + {var _jT_=assq(ic,memo[1]);return _jT_} + catch(_jU_) + {_jU_ = caml_wrap_exception(_jU_); + if(_jU_ === Not_found) + {var ib=from_ic(scan_close_ic,[0,ic],ic); + memo[1] = [0,[0,ic,ib],memo[1]]; + return ib} + throw _jU_}} + function memo_from_channel(_jS_) + {return memo_from_ic(scan_raise_at_end,_jS_)} + var Scan_failure=[248,cst_Stdlib_Scanf_Scan_failure,caml_fresh_oo_id(0)]; + function bad_input(s){throw [0,Scan_failure,s]} + function bad_input_escape(c) + {return bad_input(caml_call1(sprintf(_cs_),c))} + function bad_token_length(message) + {return bad_input(caml_call1(sprintf(_ct_),message))} + function bad_float(param) + {return bad_input(cst_no_dot_or_exponent_part_fo)} + function bad_hex_float(param) + {return bad_input(cst_not_a_valid_float_in_hexad)} + function character_mismatch(c,ci) + {return bad_input(caml_call2(sprintf(_cv_),c,ci))} + function check_this_char(ib,c) + {var ci=checked_peek_char(ib); + return ci === c?invalidate_current_char(ib):character_mismatch(c,ci)} + function check_char(ib,c$0) + {if(10 === c$0) + {var ci=checked_peek_char(ib); + return 10 === ci + ?invalidate_current_char(ib) + :13 === ci + ?(invalidate_current_char(ib),check_this_char(ib,10)) + :character_mismatch(10,ci)} + if(32 === c$0) + for(;;) + {var c=peek_char(ib),_jQ_=1 - ib[1]; + if(_jQ_) + {var _jR_=c - 9 | 0,switch$0=0; + if(4 < _jR_ >>> 0) + {if(23 === _jR_)switch$0 = 1} + else + if(1 < _jR_ - 2 >>> 0)switch$0 = 1; + if(switch$0){invalidate_current_char(ib);continue} + return 0} + return _jQ_} + return check_this_char(ib,c$0)} + function token_char(ib){return caml_string_get(token_string(ib),0)} + function token_bool(ib) + {var s=token_string(ib); + return caml_string_notequal(s,cst_false$3) + ?caml_string_notequal(s,cst_true$3) + ?bad_input(caml_call1(sprintf(_cw_),s)) + :1 + :0} + function integer_conversion_of_char(param) + {var switcher=param - 88 | 0; + if(! (32 < switcher >>> 0)) + switch(switcher) + {case 10:return 0; + case 12:return 1; + case 17:return 2; + case 23:return 3; + case 29:return 4; + case 0: + case 32:return 5 + } + throw [0,Assert_failure,_cx_]} + function token_int_literal(conv,ib) + {switch(conv) + {case 0:var tok=cat(cst_0b,token_string(ib));break; + case 3:var tok=cat(cst_0o,token_string(ib));break; + case 4:var tok=cat(cst_0u,token_string(ib));break; + case 5:var tok=cat(cst_0x,token_string(ib));break; + default:var tok=token_string(ib)} + var l=caml_ml_string_length(tok); + if(0 !== l && 43 === caml_string_get(tok,0)) + return sub$0(tok,1,l - 1 | 0); + return tok} + function token_float(ib){return caml_float_of_string(token_string(ib))} + function scan_decimal_digit_star(width,ib) + {var width$0=width; + for(;;) + {if(0 === width$0)return width$0; + var c=peek_char(ib); + if(ib[1])return width$0; + if(58 <= c) + {if(95 === c) + {var width$1=ignore_char(width$0,ib),width$0=width$1;continue}} + else + if(48 <= c) + {var width$2=store_char(width$0,ib,c),width$0=width$2;continue} + return width$0}} + function scan_unsigned_decimal_int(width,ib) + {if(0 === width)return bad_token_length(cst_decimal_digits); + var c=checked_peek_char(ib); + if(9 < c - 48 >>> 0)return bad_input(caml_call1(sprintf(_cy_),c)); + var width$0=store_char(width,ib,c); + return scan_decimal_digit_star(width$0,ib)} + function scan_digit_plus(basis,digitp,width$2,ib) + {if(0 === width$2)return bad_token_length(cst_digits); + var c$0=checked_peek_char(ib); + if(caml_call1(digitp,c$0)) + {var width$3=store_char(width$2,ib,c$0),width=width$3; + for(;;) + {if(0 === width)return width; + var c=peek_char(ib); + if(ib[1])return width; + if(caml_call1(digitp,c)) + {var width$0=store_char(width,ib,c),width=width$0;continue} + if(95 === c) + {var width$1=ignore_char(width,ib),width=width$1;continue} + return width}} + return bad_input(caml_call2(sprintf(_cz_),c$0,basis))} + function is_binary_digit(param){return 1 < param - 48 >>> 0?0:1} + function scan_binary_int(_jO_,_jP_) + {return scan_digit_plus(cst_binary,is_binary_digit,_jO_,_jP_)} + function is_octal_digit(param){return 7 < param - 48 >>> 0?0:1} + function scan_octal_int(_jM_,_jN_) + {return scan_digit_plus(cst_octal,is_octal_digit,_jM_,_jN_)} + function is_hexa_digit(param) + {var _jL_=param - 48 | 0,switch$0=0; + if(22 < _jL_ >>> 0) + {if(! (5 < _jL_ - 49 >>> 0))switch$0 = 1} + else + if(6 < _jL_ - 10 >>> 0)switch$0 = 1; + return switch$0?1:0} + function scan_hexadecimal_int(_jJ_,_jK_) + {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_jJ_,_jK_)} + function scan_sign(width,ib) + {var c=checked_peek_char(ib),switcher=c - 43 | 0; + if(! (2 < switcher >>> 0)) + switch(switcher) + {case 0:return store_char(width,ib,c); + case 1:break; + default:return store_char(width,ib,c)} + return width} + function scan_optionally_signed_decimal(width,ib) + {var width$0=scan_sign(width,ib); + return scan_unsigned_decimal_int(width$0,ib)} + function scan_int_conversion(conv,width$1,ib) + {switch(conv) + {case 0:return scan_binary_int(width$1,ib); + case 1:return scan_optionally_signed_decimal(width$1,ib); + case 2: + var width$0=scan_sign(width$1,ib),c=checked_peek_char(ib); + if(48 === c) + {var width=store_char(width$0,ib,c); + if(0 === width)return width; + var c$0=peek_char(ib); + if(ib[1])return width; + var switch$0=0; + if(99 <= c$0) + {if(111 === c$0) + return scan_octal_int(store_char(width,ib,c$0),ib); + if(120 === c$0)switch$0 = 1} + else + if(88 === c$0) + switch$0 = 1; + else + if(98 <= c$0)return scan_binary_int(store_char(width,ib,c$0),ib); + return switch$0 + ?scan_hexadecimal_int(store_char(width,ib,c$0),ib) + :scan_decimal_digit_star(width,ib)} + return scan_unsigned_decimal_int(width$0,ib); + case 3:return scan_octal_int(width$1,ib); + case 4:return scan_unsigned_decimal_int(width$1,ib); + default:return scan_hexadecimal_int(width$1,ib)}} + function scan_fractional_part(width,ib) + {if(0 === width)return width; + var c=peek_char(ib); + return ib[1] + ?width + :9 < c - 48 >>> 0 + ?width + :scan_decimal_digit_star(store_char(width,ib,c),ib)} + function scan_exponent_part(width,ib) + {if(0 === width)return width; + var c=peek_char(ib); + if(ib[1])return width; + if(69 !== c && 101 !== c)return width; + return scan_optionally_signed_decimal(store_char(width,ib,c),ib)} + function scan_float(width$1,precision,ib) + {var + width=scan_sign(width$1,ib), + width$0=scan_decimal_digit_star(width,ib); + if(0 === width$0)return [0,width$0,precision]; + var c=peek_char(ib); + if(ib[1])return [0,width$0,precision]; + if(46 === c) + {var + width$2=store_char(width$0,ib,c), + precision$0=min$1(width$2,precision), + width$3= + width$2 + - + (precision$0 - scan_fractional_part(precision$0,ib) | 0) + | + 0; + return [0,scan_exponent_part(width$3,ib),precision$0]} + return [0,scan_exponent_part(width$0,ib),precision]} + function check_case_insensitive_string(width,ib,error,str) + {function lowercase(c) + {return 25 < c - 65 >>> 0?c:char_of_int((c - 65 | 0) + 97 | 0)} + var + len=caml_ml_string_length(str), + width$0=[0,width], + _jG_=len - 1 | 0, + _jF_=0; + if(! (_jG_ < 0)) + {var i=_jF_; + for(;;) + {var c=peek_char(ib),_jH_=lowercase(caml_string_get(str,i)); + if(lowercase(c) !== _jH_)caml_call1(error,0); + if(0 === width$0[1])caml_call1(error,0); + width$0[1] = store_char(width$0[1],ib,c); + var _jI_=i + 1 | 0; + if(_jG_ !== i){var i=_jI_;continue} + break}} + return width$0[1]} + function scan_hex_float(width,precision,ib) + {var _js_=0 === width?1:0,_jt_=_js_ || end_of_input(ib); + if(_jt_)bad_hex_float(0); + var + width$0=scan_sign(width,ib), + _ju_=0 === width$0?1:0, + _jv_=_ju_ || end_of_input(ib); + if(_jv_)bad_hex_float(0); + var c=peek_char(ib),switch$0=0; + if(78 <= c) + {var switcher=c - 79 | 0; + if(30 < switcher >>> 0) + {if(! (32 <= switcher)) + {var + width$1=store_char(width$0,ib,c), + _jw_=0 === width$1?1:0, + _jx_=_jw_ || end_of_input(ib); + if(_jx_)bad_hex_float(0); + return check_case_insensitive_string + (width$1,ib,bad_hex_float,cst_an)}} + else + if(26 === switcher)switch$0 = 1} + else + {if(48 === c) + {var + width$3=store_char(width$0,ib,c), + _jA_=0 === width$3?1:0, + _jB_=_jA_ || end_of_input(ib); + if(_jB_)bad_hex_float(0); + var + width$4= + check_case_insensitive_string(width$3,ib,bad_hex_float,cst_x$2); + if(0 !== width$4 && ! end_of_input(ib)) + {var match=peek_char(ib),_jC_=match - 46 | 0,switch$1=0; + if(34 < _jC_ >>> 0) + {if(66 === _jC_)switch$1 = 1} + else + if(32 < _jC_ - 1 >>> 0)switch$1 = 1; + var width$5=switch$1?width$4:scan_hexadecimal_int(width$4,ib); + if(0 !== width$5 && ! end_of_input(ib)) + {var c$0=peek_char(ib); + if(46 === c$0) + {var width$6=store_char(width$5,ib,c$0),switch$2=0; + if(0 !== width$6 && ! end_of_input(ib)) + {var match$0=peek_char(ib),switch$3=0; + if(80 !== match$0 && 112 !== match$0) + {var + precision$0=min$1(width$6,precision), + width$10= + width$6 + - + (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0) + | + 0; + switch$3 = 1} + if(! switch$3)var width$10=width$6; + var width$7=width$10; + switch$2 = 1} + if(! switch$2)var width$7=width$6; + var width$8=width$7} + else + var width$8=width$5; + if(0 !== width$8 && ! end_of_input(ib)) + {var c$1=peek_char(ib); + if(80 !== c$1 && 112 !== c$1)return width$8; + var + width$9=store_char(width$8,ib,c$1), + _jD_=0 === width$9?1:0, + _jE_=_jD_ || end_of_input(ib); + if(_jE_)bad_hex_float(0); + return scan_optionally_signed_decimal(width$9,ib)} + return width$8} + return width$5} + return width$4} + if(73 === c)switch$0 = 1} + if(switch$0) + {var + width$2=store_char(width$0,ib,c), + _jy_=0 === width$2?1:0, + _jz_=_jy_ || end_of_input(ib); + if(_jz_)bad_hex_float(0); + return check_case_insensitive_string + (width$2,ib,bad_hex_float,cst_nfinity)} + return bad_hex_float(0)} + function scan_caml_float_rest(width,precision,ib) + {var _jo_=0 === width?1:0,_jp_=_jo_ || end_of_input(ib); + if(_jp_)bad_float(0); + var + width$0=scan_decimal_digit_star(width,ib), + _jq_=0 === width$0?1:0, + _jr_=_jq_ || end_of_input(ib); + if(_jr_)bad_float(0); + var c=peek_char(ib),switcher=c - 69 | 0; + if(32 < switcher >>> 0) + {if(-23 === switcher) + {var + width$1=store_char(width$0,ib,c), + precision$0=min$1(width$1,precision), + width_precision=scan_fractional_part(precision$0,ib), + frac_width=precision$0 - width_precision | 0, + width$2=width$1 - frac_width | 0; + return scan_exponent_part(width$2,ib)}} + else + if(30 < switcher - 1 >>> 0)return scan_exponent_part(width$0,ib); + return bad_float(0)} + function scan_caml_float(width,precision,ib) + {var _ja_=0 === width?1:0,_jb_=_ja_ || end_of_input(ib); + if(_jb_)bad_float(0); + var + width$0=scan_sign(width,ib), + _jc_=0 === width$0?1:0, + _jd_=_jc_ || end_of_input(ib); + if(_jd_)bad_float(0); + var c=peek_char(ib); + if(49 <= c) + {if(! (58 <= c)) + {var + width$1=store_char(width$0,ib,c), + _je_=0 === width$1?1:0, + _jf_=_je_ || end_of_input(ib); + if(_jf_)bad_float(0); + return scan_caml_float_rest(width$1,precision,ib)}} + else + if(48 <= c) + {var + width$2=store_char(width$0,ib,c), + _jg_=0 === width$2?1:0, + _jh_=_jg_ || end_of_input(ib); + if(_jh_)bad_float(0); + var c$0=peek_char(ib); + if(88 !== c$0 && 120 !== c$0) + return scan_caml_float_rest(width$2,precision,ib); + var + width$3=store_char(width$2,ib,c$0), + _ji_=0 === width$3?1:0, + _jj_=_ji_ || end_of_input(ib); + if(_jj_)bad_float(0); + var + width$4=scan_hexadecimal_int(width$3,ib), + _jk_=0 === width$4?1:0, + _jl_=_jk_ || end_of_input(ib); + if(_jl_)bad_float(0); + var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0; + if(32 < switcher >>> 0) + if(-34 === switcher) + {var width$5=store_char(width$4,ib,c$1),switch$1=0; + if(0 !== width$5 && ! end_of_input(ib)) + {var match=peek_char(ib),switch$2=0; + if(80 !== match && 112 !== match) + {var + precision$0=min$1(width$5,precision), + width$10= + width$5 + - + (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0) + | + 0; + switch$2 = 1} + if(! switch$2)var width$10=width$5; + var width$6=width$10; + switch$1 = 1} + if(! switch$1)var width$6=width$5; + var width$7=width$6} + else + switch$0 = 1; + else + if(30 < switcher - 1 >>> 0)var width$7=width$4;else switch$0 = 1; + var width$8=switch$0?bad_float(0):width$7; + if(0 !== width$8 && ! end_of_input(ib)) + {var c$2=peek_char(ib); + if(80 !== c$2 && 112 !== c$2)return width$8; + var + width$9=store_char(width$8,ib,c$2), + _jm_=0 === width$9?1:0, + _jn_=_jm_ || end_of_input(ib); + if(_jn_)bad_hex_float(0); + return scan_optionally_signed_decimal(width$9,ib)} + return width$8} + return bad_float(0)} + function scan_string(stp,width,ib) + {var width$0=width; + for(;;) + {if(0 === width$0)return width$0; + var c=peek_char(ib); + if(ib[1])return width$0; + if(stp) + {var c$0=stp[1]; + if(c === c$0)return skip_char(width$0,ib); + var width$1=store_char(width$0,ib,c),width$0=width$1; + continue} + var _i$_=c - 9 | 0,switch$0=0; + if(4 < _i$_ >>> 0) + {if(23 === _i$_)switch$0 = 1} + else + if(1 < _i$_ - 2 >>> 0)switch$0 = 1; + if(switch$0)return width$0; + var width$2=store_char(width$0,ib,c),width$0=width$2; + continue}} + function scan_char(width,ib) + {return store_char(width,ib,checked_peek_char(ib))} + function hexadecimal_value_of_char(d) + {return 97 <= d?d - 87 | 0:65 <= d?d - 55 | 0:d - 48 | 0} + function check_next_char(message,width,ib) + {if(0 === width)return bad_token_length(message); + var c=peek_char(ib); + return ib[1]?bad_input(caml_call1(sprintf(_cu_),message)):c} + function check_next_char_for_char(_i9_,_i__) + {return check_next_char(cst_a_Char,_i9_,_i__)} + function check_next_char_for_string(_i7_,_i8_) + {return check_next_char(cst_a_String,_i7_,_i8_)} + function scan_backslash_char(width,ib) + {var c0=check_next_char_for_char(width,ib),switch$0=0; + if(40 <= c0) + {if(58 <= c0) + {var switcher=c0 - 92 | 0; + if(! (28 < switcher >>> 0)) + switch(switcher) + {case 28: + var + get_digit= + function(param) + {var c=next_char(ib),_i6_=c - 48 | 0,switch$0=0; + if(22 < _i6_ >>> 0) + {if(! (5 < _i6_ - 49 >>> 0))switch$0 = 1} + else + if(6 < _i6_ - 10 >>> 0)switch$0 = 1; + return switch$0?c:bad_input_escape(c)}, + c1=get_digit(0), + c2=get_digit(0), + _i2_=hexadecimal_value_of_char(c2), + c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _i2_ | 0, + switch$1=0; + if(0 <= c$0 && ! (255 < c$0)) + {var _i4_=char_of_int(c$0);switch$1 = 1} + if(! switch$1) + var _i4_=bad_input(caml_call2(sprintf(_cB_),c1,c2)); + return store_char(width - 2 | 0,ib,_i4_); + case 0: + case 6: + case 18: + case 22: + case 24:switch$0 = 1;break + }} + else + if(48 <= c0) + {var + get_digit$0= + function(param) + {var c=next_char(ib); + return 9 < c - 48 >>> 0?bad_input_escape(c):c}, + c1$0=get_digit$0(0), + c2$0=get_digit$0(0), + c= + ((100 * (c0 - 48 | 0) | 0) + (10 * (c1$0 - 48 | 0) | 0) | 0) + + + (c2$0 - 48 | 0) + | + 0, + switch$2=0; + if(0 <= c && ! (255 < c)){var _i5_=char_of_int(c);switch$2 = 1} + if(! switch$2) + var _i5_=bad_input(caml_call3(sprintf(_cA_),c0,c1$0,c2$0)); + return store_char(width - 2 | 0,ib,_i5_)}} + else + if(34 === c0 || 39 <= c0)switch$0 = 1; + if(switch$0) + {var switch$3=0; + if(110 <= c0) + if(117 <= c0) + switch$3 = 1; + else + switch(c0 - 110 | 0) + {case 0:var _i3_=10;break; + case 4:var _i3_=13;break; + case 6:var _i3_=9;break; + default:switch$3 = 1} + else + if(98 === c0)var _i3_=8;else switch$3 = 1; + if(switch$3)var _i3_=c0; + return store_char(width,ib,_i3_)} + return bad_input_escape(c0)} + function scan_caml_char(width,ib) + {function find_stop(width) + {var c=check_next_char_for_char(width,ib); + return 39 === c?ignore_char(width,ib):character_mismatch(39,c)} + var c=checked_peek_char(ib); + if(39 === c) + {var + width$0=ignore_char(width,ib), + c$0=check_next_char_for_char(width$0,ib); + return 92 === c$0 + ?find_stop(scan_backslash_char(ignore_char(width$0,ib),ib)) + :find_stop(store_char(width$0,ib,c$0))} + return character_mismatch(39,c)} + function scan_caml_string(width,ib) + {function find_stop$0(counter,width) + {var width$0=width; + for(;;) + {var c=check_next_char_for_string(width$0,ib); + if(34 === c)return ignore_char(width$0,ib); + if(92 === c) + {var + width$1=ignore_char(width$0,ib), + match=check_next_char_for_string(width$1,ib); + if(10 === match) + {var _i0_=ignore_char(width$1,ib); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return skip_spaces(counter$0,_i0_)} + return caml_trampoline_return(skip_spaces,[0,_i0_])} + if(13 === match) + {var + width$3=ignore_char(width$1,ib), + match$0=check_next_char_for_string(width$3,ib); + if(10 === match$0) + {var _i1_=ignore_char(width$3,ib); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return skip_spaces(counter$1,_i1_)} + return caml_trampoline_return(skip_spaces,[0,_i1_])} + var width$5=store_char(width$3,ib,13),width$0=width$5; + continue} + var width$4=scan_backslash_char(width$1,ib),width$0=width$4; + continue} + var width$2=store_char(width$0,ib,c),width$0=width$2; + continue}} + function skip_spaces(counter,width) + {var width$0=width; + for(;;) + {var match=check_next_char_for_string(width$0,ib); + if(32 === match) + {var width$1=ignore_char(width$0,ib),width$0=width$1;continue} + if(counter < 50) + {var counter$0=counter + 1 | 0; + return find_stop$0(counter$0,width$0)} + return caml_trampoline_return(find_stop$0,[0,width$0])}} + function find_stop(width){return caml_trampoline(find_stop$0(0,width))} + var c=checked_peek_char(ib); + return 34 === c + ?find_stop(ignore_char(width,ib)) + :character_mismatch(34,c)} + function scan_chars_in_char_set(char_set,scan_indic,width,ib) + {function scan_chars(i,stp) + {var i$0=i; + for(;;) + {var c=peek_char(ib),_iW_=0 < i$0?1:0; + if(_iW_) + {var _iX_=1 - ib[1]; + if(_iX_) + var _iY_=is_in_char_set(char_set,c),_iZ_=_iY_?c !== stp?1:0:_iY_; + else + var _iZ_=_iX_} + else + var _iZ_=_iW_; + if(_iZ_) + {store_char(max_int,ib,c);var i$1=i$0 - 1 | 0,i$0=i$1;continue} + return _iZ_}} + if(scan_indic) + {var c=scan_indic[1]; + scan_chars(width,c); + var _iV_=1 - ib[1]; + if(_iV_) + {var ci=peek_char(ib); + return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)} + return _iV_} + return scan_chars(width,-1)} + function scanf_bad_input(ib,x) + {if(x[1] === Scan_failure) + var s=x[2]; + else + {if(x[1] !== Failure)throw x;var s=x[2]} + var i=char_count(ib); + return bad_input(caml_call2(sprintf(_cD_),i,s))} + function get_counter(ib,counter) + {switch(counter) + {case 0:return ib[5];case 1:return char_count(ib);default:return ib[6]}} + function width_of_pad_opt(pad_opt) + {if(pad_opt){var width=pad_opt[1];return width}return max_int} + function stopper_of_formatting_lit(fmting) + {if(6 === fmting)return _cE_; + var + str=string_of_formatting_lit(fmting), + stp=caml_string_get(str,1), + sub_str=sub$0(str,2,caml_ml_string_length(str) - 2 | 0); + return [0,stp,sub_str]} + function take_format_readers$0(counter,k,fmt) + {var fmt$0=fmt; + for(;;) + if(typeof fmt$0 === "number") + return caml_call1(k,0); + else + switch(fmt$0[0]) + {case 0:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue; + case 1:var fmt$2=fmt$0[1],fmt$0=fmt$2;continue; + case 2:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue; + case 3:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue; + case 4:var fmt$5=fmt$0[4],fmt$0=fmt$5;continue; + case 5:var fmt$6=fmt$0[4],fmt$0=fmt$6;continue; + case 6:var fmt$7=fmt$0[4],fmt$0=fmt$7;continue; + case 7:var fmt$8=fmt$0[4],fmt$0=fmt$8;continue; + case 8:var fmt$9=fmt$0[4],fmt$0=fmt$9;continue; + case 9:var fmt$10=fmt$0[2],fmt$0=fmt$10;continue; + case 10:var fmt$11=fmt$0[1],fmt$0=fmt$11;continue; + case 11:var fmt$12=fmt$0[2],fmt$0=fmt$12;continue; + case 12:var fmt$13=fmt$0[2],fmt$0=fmt$13;continue; + case 13:var fmt$14=fmt$0[3],fmt$0=fmt$14;continue; + case 14: + var rest=fmt$0[3],fmtty=fmt$0[2],_iT_=erase_rel(symm(fmtty)); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return take_fmtty_format_readers$0(counter$0,k,_iT_,rest)} + return caml_trampoline_return + (take_fmtty_format_readers$0,[0,k,_iT_,rest]); + case 15:var fmt$15=fmt$0[1],fmt$0=fmt$15;continue; + case 16:var fmt$16=fmt$0[1],fmt$0=fmt$16;continue; + case 17:var fmt$17=fmt$0[2],fmt$0=fmt$17;continue; + case 18: + var _iU_=fmt$0[1]; + if(0 === _iU_[0]) + {var + rest$0=fmt$0[2], + match=_iU_[1], + fmt$18=match[1], + fmt$19=concat_fmt(fmt$18,rest$0), + fmt$0=fmt$19; + continue} + var + rest$1=fmt$0[2], + match$0=_iU_[1], + fmt$20=match$0[1], + fmt$21=concat_fmt(fmt$20,rest$1), + fmt$0=fmt$21; + continue; + case 19: + var fmt_rest=fmt$0[1]; + return function(reader) + {function new_k(readers_rest) + {return caml_call1(k,[0,reader,readers_rest])} + return take_format_readers(new_k,fmt_rest)}; + case 20:var fmt$22=fmt$0[3],fmt$0=fmt$22;continue; + case 21:var fmt$23=fmt$0[2],fmt$0=fmt$23;continue; + case 22:var fmt$24=fmt$0[1],fmt$0=fmt$24;continue; + case 23: + var rest$2=fmt$0[2],ign=fmt$0[1]; + if(typeof ign === "number") + switch(ign) + {case 0:var fmt$0=rest$2;continue; + case 1:var fmt$0=rest$2;continue; + case 2: + return function(reader) + {function new_k(readers_rest) + {return caml_call1(k,[0,reader,readers_rest])} + return take_format_readers(new_k,rest$2)}; + default:var fmt$0=rest$2;continue} + else + switch(ign[0]) + {case 0:var fmt$0=rest$2;continue; + case 1:var fmt$0=rest$2;continue; + case 2:var fmt$0=rest$2;continue; + case 3:var fmt$0=rest$2;continue; + case 4:var fmt$0=rest$2;continue; + case 5:var fmt$0=rest$2;continue; + case 6:var fmt$0=rest$2;continue; + case 7:var fmt$0=rest$2;continue; + case 8:var fmt$0=rest$2;continue; + case 9: + var fmtty$0=ign[2]; + if(counter < 50) + {var counter$1=counter + 1 | 0; + return take_fmtty_format_readers$0 + (counter$1,k,fmtty$0,rest$2)} + return caml_trampoline_return + (take_fmtty_format_readers$0,[0,k,fmtty$0,rest$2]); + case 10:var fmt$0=rest$2;continue; + default:var fmt$0=rest$2;continue} + default:var fmt$25=fmt$0[3],fmt$0=fmt$25;continue}} + function take_fmtty_format_readers$0(counter,k,fmtty,fmt) + {var fmtty$0=fmtty; + for(;;) + if(typeof fmtty$0 === "number") + {if(counter < 50) + {var counter$0=counter + 1 | 0; + return take_format_readers$0(counter$0,k,fmt)} + return caml_trampoline_return(take_format_readers$0,[0,k,fmt])} + else + switch(fmtty$0[0]) + {case 0:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue; + case 1:var fmtty$2=fmtty$0[1],fmtty$0=fmtty$2;continue; + case 2:var fmtty$3=fmtty$0[1],fmtty$0=fmtty$3;continue; + case 3:var fmtty$4=fmtty$0[1],fmtty$0=fmtty$4;continue; + case 4:var fmtty$5=fmtty$0[1],fmtty$0=fmtty$5;continue; + case 5:var fmtty$6=fmtty$0[1],fmtty$0=fmtty$6;continue; + case 6:var fmtty$7=fmtty$0[1],fmtty$0=fmtty$7;continue; + case 7:var fmtty$8=fmtty$0[1],fmtty$0=fmtty$8;continue; + case 8:var fmtty$9=fmtty$0[2],fmtty$0=fmtty$9;continue; + case 9: + var + rest=fmtty$0[3], + ty2=fmtty$0[2], + ty1=fmtty$0[1], + ty=trans(symm(ty1),ty2), + fmtty$10=concat_fmtty(ty,rest), + fmtty$0=fmtty$10; + continue; + case 10:var fmtty$11=fmtty$0[1],fmtty$0=fmtty$11;continue; + case 11:var fmtty$12=fmtty$0[1],fmtty$0=fmtty$12;continue; + case 12:var fmtty$13=fmtty$0[1],fmtty$0=fmtty$13;continue; + case 13: + var fmt_rest=fmtty$0[1]; + return function(reader) + {function new_k(readers_rest) + {return caml_call1(k,[0,reader,readers_rest])} + return take_fmtty_format_readers(new_k,fmt_rest,fmt)}; + default: + var fmt_rest$0=fmtty$0[1]; + return function(reader) + {function new_k(readers_rest) + {return caml_call1(k,[0,reader,readers_rest])} + return take_fmtty_format_readers(new_k,fmt_rest$0,fmt)}}} + function take_format_readers(k,fmt) + {return caml_trampoline(take_format_readers$0(0,k,fmt))} + function take_fmtty_format_readers(k,fmtty,fmt) + {return caml_trampoline(take_fmtty_format_readers$0(0,k,fmtty,fmt))} + function make_scanf(ib,fmt,readers) + {var fmt$0=fmt; + for(;;) + if(typeof fmt$0 === "number") + return 0; + else + switch(fmt$0[0]) + {case 0: + var rest=fmt$0[1]; + scan_char(0,ib); + var c=token_char(ib); + return [0,c,make_scanf(ib,rest,readers)]; + case 1: + var rest$0=fmt$0[1]; + scan_caml_char(0,ib); + var c$0=token_char(ib); + return [0,c$0,make_scanf(ib,rest$0,readers)]; + case 2: + var _iG_=fmt$0[1],_iH_=fmt$0[2]; + if(typeof _iH_ !== "number") + switch(_iH_[0]) + {case 17: + var + rest$2=_iH_[2], + fmting_lit=_iH_[1], + match=stopper_of_formatting_lit(fmting_lit), + str=match[2], + stp=match[1], + scan$0= + function(width,param,ib) + {return scan_string([0,stp],width,ib)}, + str_rest=[11,str,rest$2]; + return pad_prec_scanf + (ib,str_rest,readers,_iG_,0,scan$0,token_string); + case 18: + var _iI_=_iH_[1]; + if(0 === _iI_[0]) + {var + rest$3=_iH_[2], + match$0=_iI_[1], + fmt$1=match$0[1], + scan$1= + function(width,param,ib){return scan_string(_cF_,width,ib)}; + return pad_prec_scanf + (ib, + concat_fmt(fmt$1,rest$3), + readers, + _iG_, + 0, + scan$1, + token_string)} + var + rest$4=_iH_[2], + match$1=_iI_[1], + fmt$2=match$1[1], + scan$2= + function(width,param,ib){return scan_string(_cG_,width,ib)}; + return pad_prec_scanf + (ib, + concat_fmt(fmt$2,rest$4), + readers, + _iG_, + 0, + scan$2, + token_string) + } + var + rest$1=fmt$0[2], + scan=function(width,param,ib){return scan_string(0,width,ib)}; + return pad_prec_scanf(ib,rest$1,readers,_iG_,0,scan,token_string); + case 3: + var + rest$5=fmt$0[2], + pad=fmt$0[1], + scan$3=function(width,param,ib){return scan_caml_string(width,ib)}; + return pad_prec_scanf(ib,rest$5,readers,pad,0,scan$3,token_string); + case 4: + var + rest$6=fmt$0[4], + prec=fmt$0[3], + pad$0=fmt$0[2], + iconv=fmt$0[1], + conv=integer_conversion_of_char(char_of_iconv(iconv)), + scan$4= + function(width,param,ib) + {return scan_int_conversion(conv,width,ib)}; + return pad_prec_scanf + (ib, + rest$6, + readers, + pad$0, + prec, + scan$4, + function(ib) + {return caml_int_of_string(token_int_literal(conv,ib))}); + case 5: + var + rest$7=fmt$0[4], + prec$0=fmt$0[3], + pad$1=fmt$0[2], + iconv$0=fmt$0[1], + conv$0=integer_conversion_of_char(char_of_iconv(iconv$0)), + scan$5= + function(width,param,ib) + {return scan_int_conversion(conv$0,width,ib)}; + return pad_prec_scanf + (ib, + rest$7, + readers, + pad$1, + prec$0, + scan$5, + function(ib) + {return caml_int_of_string(token_int_literal(conv$0,ib))}); + case 6: + var + rest$8=fmt$0[4], + prec$1=fmt$0[3], + pad$2=fmt$0[2], + iconv$1=fmt$0[1], + conv$1=integer_conversion_of_char(char_of_iconv(iconv$1)), + scan$6= + function(width,param,ib) + {return scan_int_conversion(conv$1,width,ib)}; + return pad_prec_scanf + (ib, + rest$8, + readers, + pad$2, + prec$1, + scan$6, + function(ib) + {return caml_int_of_string(token_int_literal(conv$1,ib))}); + case 7: + var + rest$9=fmt$0[4], + prec$2=fmt$0[3], + pad$3=fmt$0[2], + iconv$2=fmt$0[1], + conv$2=integer_conversion_of_char(char_of_iconv(iconv$2)), + scan$7= + function(width,param,ib) + {return scan_int_conversion(conv$2,width,ib)}; + return pad_prec_scanf + (ib, + rest$9, + readers, + pad$3, + prec$2, + scan$7, + function(ib) + {return caml_int64_of_string(token_int_literal(conv$2,ib))}); + case 8: + switch(fmt$0[1][2]) + {case 5: + case 8: + var rest$11=fmt$0[4],prec$4=fmt$0[3],pad$5=fmt$0[2]; + return pad_prec_scanf + (ib, + rest$11, + readers, + pad$5, + prec$4, + scan_caml_float, + token_float); + case 6: + case 7: + var rest$12=fmt$0[4],prec$5=fmt$0[3],pad$6=fmt$0[2]; + return pad_prec_scanf + (ib,rest$12,readers,pad$6,prec$5,scan_hex_float,token_float); + default: + var rest$10=fmt$0[4],prec$3=fmt$0[3],pad$4=fmt$0[2]; + return pad_prec_scanf + (ib,rest$10,readers,pad$4,prec$3,scan_float,token_float)} + case 9: + var + rest$13=fmt$0[2], + pad$7=fmt$0[1], + scan$8= + function(param,_iS_,ib) + {var + c=checked_peek_char(ib), + m= + 102 === c + ?5 + :116 === c?4:bad_input(caml_call1(sprintf(_cC_),c)); + return scan_string(0,m,ib)}; + return pad_prec_scanf(ib,rest$13,readers,pad$7,0,scan$8,token_bool); + case 10: + var rest$14=fmt$0[1]; + if(end_of_input(ib)){var fmt$0=rest$14;continue} + return bad_input(cst_end_of_input_not_found); + case 11: + var rest$15=fmt$0[2],str$0=fmt$0[1]; + iter$4(function(_iR_){return check_char(ib,_iR_)},str$0); + var fmt$0=rest$15; + continue; + case 12: + var rest$16=fmt$0[2],chr=fmt$0[1]; + check_char(ib,chr); + var fmt$0=rest$16; + continue; + case 13: + var rest$17=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1]; + scan_caml_string(width_of_pad_opt(pad_opt),ib); + var s=token_string(ib); + try + {var _iJ_=format_of_string_fmtty(s,fmtty),fmt$3=_iJ_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Failure)throw exn; + var msg=exn[2],fmt$3=bad_input(msg)} + return [0,fmt$3,make_scanf(ib,rest$17,readers)]; + case 14: + var rest$18=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1]; + scan_caml_string(width_of_pad_opt(pad_opt$0),ib); + var s$0=token_string(ib); + try + {var + match$2=fmt_ebb_of_string(0,s$0), + fmt$6=match$2[1], + match$3=fmt_ebb_of_string(0,s$0), + fmt$7=match$3[1], + fmt$8=type_format(fmt$7,erase_rel(symm(fmtty$0))), + _iL_=type_format(fmt$6,erase_rel(fmtty$0)), + fmt$5=fmt$8, + fmt$4=_iL_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Failure)throw exn; + var + msg$0=exn[2], + _iK_=bad_input(msg$0), + fmt$5=_iK_[2], + fmt$4=_iK_[1]} + return [0, + [0,fmt$4,s$0], + make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)]; + case 15:return invalid_arg(cst_scanf_bad_conversion_a); + case 16:return invalid_arg(cst_scanf_bad_conversion_t); + case 17: + var + rest$19=fmt$0[2], + formatting_lit=fmt$0[1], + _iM_=string_of_formatting_lit(formatting_lit); + iter$4(function(_iQ_){return check_char(ib,_iQ_)},_iM_); + var fmt$0=rest$19; + continue; + case 18: + var _iN_=fmt$0[1]; + if(0 === _iN_[0]) + {var rest$20=fmt$0[2],match$4=_iN_[1],fmt$9=match$4[1]; + check_char(ib,64); + check_char(ib,123); + var fmt$10=concat_fmt(fmt$9,rest$20),fmt$0=fmt$10; + continue} + var rest$21=fmt$0[2],match$5=_iN_[1],fmt$11=match$5[1]; + check_char(ib,64); + check_char(ib,91); + var fmt$12=concat_fmt(fmt$11,rest$21),fmt$0=fmt$12; + continue; + case 19: + var fmt_rest=fmt$0[1]; + if(readers) + {var + readers_rest=readers[2], + reader=readers[1], + x=caml_call1(reader,ib); + return [0,x,make_scanf(ib,fmt_rest,readers_rest)]} + return invalid_arg(cst_scanf_missing_reader); + case 20: + var _iO_=fmt$0[1],_iP_=fmt$0[3]; + if(typeof _iP_ !== "number" && 17 === _iP_[0]) + {var + rest$23=_iP_[2], + fmting_lit$0=_iP_[1], + char_set$0=fmt$0[2], + match$6=stopper_of_formatting_lit(fmting_lit$0), + str$1=match$6[2], + stp$0=match$6[1], + width$0=width_of_pad_opt(_iO_); + scan_chars_in_char_set(char_set$0,[0,stp$0],width$0,ib); + var s$2=token_string(ib),str_rest$0=[11,str$1,rest$23]; + return [0,s$2,make_scanf(ib,str_rest$0,readers)]} + var + rest$22=fmt$0[3], + char_set=fmt$0[2], + width=width_of_pad_opt(_iO_); + scan_chars_in_char_set(char_set,0,width,ib); + var s$1=token_string(ib); + return [0,s$1,make_scanf(ib,rest$22,readers)]; + case 21: + var + rest$24=fmt$0[2], + counter=fmt$0[1], + count=get_counter(ib,counter); + return [0,count,make_scanf(ib,rest$24,readers)]; + case 22: + var rest$25=fmt$0[1],c$1=checked_peek_char(ib); + return [0,c$1,make_scanf(ib,rest$25,readers)]; + case 23: + var + rest$26=fmt$0[2], + ign=fmt$0[1], + match$7=param_format_of_ignored_format(ign,rest$26), + fmt$13=match$7[1], + match$8=make_scanf(ib,fmt$13,readers); + if(match$8){var arg_rest=match$8[2];return arg_rest} + throw [0,Assert_failure,_cH_]; + default:return invalid_arg(cst_scanf_bad_conversion_custo)}} + function pad_prec_scanf(ib,fmt,readers,pad,prec,scan,token) + {if(typeof pad === "number") + {if(typeof prec === "number") + {if(prec)return invalid_arg(cst_scanf_bad_conversion); + caml_call3(scan,max_int,max_int,ib); + var x=caml_call1(token,ib); + return [0,x,make_scanf(ib,fmt,readers)]} + var p=prec[1]; + caml_call3(scan,max_int,p,ib); + var x$0=caml_call1(token,ib); + return [0,x$0,make_scanf(ib,fmt,readers)]} + else + {if(0 === pad[0]) + {if(pad[1]) + {var _iF_=pad[2]; + if(typeof prec === "number") + {if(prec)return invalid_arg(cst_scanf_bad_conversion$0); + caml_call3(scan,_iF_,max_int,ib); + var x$1=caml_call1(token,ib); + return [0,x$1,make_scanf(ib,fmt,readers)]} + var p$0=prec[1]; + caml_call3(scan,_iF_,p$0,ib); + var x$2=caml_call1(token,ib); + return [0,x$2,make_scanf(ib,fmt,readers)]} + return invalid_arg(cst_scanf_bad_conversion$1)} + return invalid_arg(cst_scanf_bad_conversion$2)}} + function kscanf(ib,ef,param) + {var str=param[2],fmt=param[1]; + function apply(f,args) + {var f$0=f,args$0=args; + for(;;) + {if(args$0) + {var + r=args$0[2], + x=args$0[1], + f$1=caml_call1(f$0,x), + f$0=f$1, + args$0=r; + continue} + return f$0}} + function k(readers,f) + {reset_token(ib); + try + {var _iE_=[0,make_scanf(ib,fmt,readers)],_iD_=_iE_} + catch(exc) + {exc = caml_wrap_exception(exc); + var switch$0=0; + if + (exc[1] + !== + Scan_failure + && + exc[1] + !== + Failure + && + exc + !== + End_of_file) + {if(exc[1] !== Invalid_argument)throw exc; + var + msg=exc[2], + _iC_= + invalid_arg + (cat(msg,cat(cst_in_format,cat(escaped$1(str),cst$88)))); + switch$0 = 1} + if(! switch$0)var _iC_=[1,exc]; + var _iD_=_iC_} + if(0 === _iD_[0]){var args=_iD_[1];return apply(f,args)} + var exc=_iD_[1]; + return caml_call2(ef,ib,exc)} + return take_format_readers(k,fmt)} + function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)} + function ksscanf(s,ef,fmt){return kscanf(from_string$1(s),ef,fmt)} + function sscanf(s,fmt) + {return kscanf(from_string$1(s),scanf_bad_input,fmt)} + function scanf(fmt){return kscanf(stdib,scanf_bad_input,fmt)} + function bscanf_format(ib,format,f) + {scan_caml_string(max_int,ib); + var str=token_string(ib); + try + {var _iB_=format_of_string_format(str,format),fmt=_iB_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Failure)throw exn; + var msg=exn[2],fmt=bad_input(msg)} + return caml_call1(f,fmt)} + function sscanf_format(s,format,f) + {return bscanf_format(from_string$1(s),format,f)} + function format_from_string(s,fmt) + {function _iA_(x){return x} + return sscanf_format(cat(cst$90,cat(escaped$1(s),cst$89)),fmt,_iA_)} + function unescaped(s) + {function _iz_(x){return x} + return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cI_),_iz_)} + function kfscanf(ic,ef,fmt){return kscanf(memo_from_channel(ic),ef,fmt)} + function fscanf(ic,fmt) + {return kscanf(memo_from_channel(ic),scanf_bad_input,fmt)} + var + Stdlib_Scanf= + [0, + [0, + stdib, + from_file, + from_file_bin, + close_in, + from_file, + from_file_bin, + from_string$1, + from_function$0, + from_channel$0, + end_of_input, + beginning_of_input, + name_of_input, + stdib], + Scan_failure, + bscanf, + sscanf, + scanf, + kscanf, + ksscanf, + bscanf_format, + sscanf_format, + format_from_string, + unescaped, + fscanf, + kfscanf]; + caml_register_global(819,Stdlib_Scanf,"Stdlib__Scanf"); + function register(name,v){return caml_register_named_value(name,v)} + function register_exception(name,exn) + {var slot=caml_obj_tag(exn) === 248?exn:exn[1]; + return caml_register_named_value(name,slot)} + var Stdlib_Callback=[0,register,register_exception]; + caml_register_global(820,Stdlib_Callback,"Stdlib__Callback"); + function copy$7(o){var o$0=o.slice();return caml_set_oo_id(o$0)} + var params$0=[0,1,1,1,3,16],initial_object_size=2,dummy_item=0; + function public_method_label(s) + {var accu=[0,0],_iw_=caml_ml_string_length(s) - 1 | 0,_iv_=0; + if(! (_iw_ < 0)) + {var i=_iv_; + for(;;) + {var _ix_=caml_string_get(s,i); + accu[1] = (223 * accu[1] | 0) + _ix_ | 0; + var _iy_=i + 1 | 0; + if(_iw_ !== i){var i=_iy_;continue} + break}} + accu[1] = accu[1] & 2147483647; + var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1]; + return tag} + function compare$14(x,y){return caml_string_compare(x,y)} + var Vars=caml_call1(Stdlib_Map[1],[0,compare$14]); + function compare$15(x,y){return caml_string_compare(x,y)} + var + Meths=caml_call1(Stdlib_Map[1],[0,compare$15]), + compare$16=caml_int_compare, + Labs=caml_call1(Stdlib_Map[1],[0,compare$16]), + dummy_table=[0,0,[0,dummy_item],Meths[1],Labs[1],0,0,Vars[1],0], + table_count=[0,0], + dummy_met=caml_obj_block(0,0); + function fit_size(n){return 2 < n?fit_size((n + 1 | 0) / 2 | 0) * 2 | 0:n} + function new_table(pub_labels) + {table_count[1]++; + var + len=pub_labels.length - 1, + methods=caml_make_vect((len * 2 | 0) + 2 | 0,dummy_met); + caml_check_bound(methods,0)[1] = len; + var _ip_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0; + caml_check_bound(methods,1)[2] = _ip_; + var _ir_=len - 1 | 0,_iq_=0; + if(! (_ir_ < 0)) + {var i=_iq_; + for(;;) + {var + _it_=(i * 2 | 0) + 3 | 0, + _is_=caml_check_bound(pub_labels,i)[1 + i]; + caml_check_bound(methods,_it_)[1 + _it_] = _is_; + var _iu_=i + 1 | 0; + if(_ir_ !== i){var i=_iu_;continue} + break}} + return [0,initial_object_size,methods,Meths[1],Labs[1],0,0,Vars[1],0]} + function resize$1(array,new_size) + {var old_size=array[2].length - 1,_in_=old_size < new_size?1:0; + if(_in_) + {var new_buck=caml_make_vect(new_size,dummy_met); + blit$1(array[2],0,new_buck,0,old_size); + array[2] = new_buck; + var _io_=0} + else + var _io_=_in_; + return _io_} + var method_count=[0,0],inst_var_count=[0,0]; + function new_method(table) + {var index=table[2].length - 1; + resize$1(table,index + 1 | 0); + return index} + function get_method_label(table,name) + {try + {var _il_=caml_call2(Meths[28],name,table[3]);return _il_} + catch(_im_) + {_im_ = caml_wrap_exception(_im_); + if(_im_ === Not_found) + {var label=new_method(table); + table[3] = caml_call3(Meths[4],name,label,table[3]); + table[4] = caml_call3(Labs[4],label,1,table[4]); + return label} + throw _im_}} + function get_method_labels(table,names) + {return map$7(function(_ik_){return get_method_label(table,_ik_)},names)} + function set_method(table,label,element) + {method_count[1]++; + return caml_call2(Labs[28],label,table[4]) + ?(resize$1(table,label + 1 | 0), + caml_check_bound(table[2],label)[1 + label] + = + element, + 0) + :(table[6] = [0,[0,label,element],table[6]],0)} + function get_method(table,label) + {try + {var _ii_=assoc(label,table[6]);return _ii_} + catch(_ij_) + {_ij_ = caml_wrap_exception(_ij_); + if(_ij_ === Not_found) + return caml_check_bound(table[2],label)[1 + label]; + throw _ij_}} + function to_list$3(arr){return 0 === arr?0:to_list$1(arr)} + function narrow(table,vars,virt_meths,concr_meths) + {var + vars$0=to_list$3(vars), + virt_meths$0=to_list$3(virt_meths), + concr_meths$0=to_list$3(concr_meths), + virt_meth_labs= + map$4 + (function(_ih_){return get_method_label(table,_ih_)},virt_meths$0), + concr_meth_labs= + map$4 + (function(_ig_){return get_method_label(table,_ig_)},concr_meths$0); + table[5] + = + [0, + [0,table[3],table[4],table[6],table[7],virt_meth_labs,vars$0], + table[5]]; + var _h9_=Vars[1],_h__=table[7]; + function _h$_(lab,info,tvars) + {return mem(lab,vars$0)?caml_call3(Vars[4],lab,info,tvars):tvars} + table[7] = caml_call3(Vars[13],_h$_,_h__,_h9_); + var by_name=[0,Meths[1]],by_label=[0,Labs[1]]; + iter2$0 + (function(met,label) + {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]); + var _ic_=by_label[1]; + try + {var _ie_=caml_call2(Labs[28],label,table[4]),_id_=_ie_} + catch(_if_) + {_if_ = caml_wrap_exception(_if_); + if(_if_ !== Not_found)throw _if_; + var _id_=1} + by_label[1] = caml_call3(Labs[4],label,_id_,_ic_); + return 0}, + concr_meths$0, + concr_meth_labs); + iter2$0 + (function(met,label) + {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]); + by_label[1] = caml_call3(Labs[4],label,0,by_label[1]); + return 0}, + virt_meths$0, + virt_meth_labs); + table[3] = by_name[1]; + table[4] = by_label[1]; + var _ia_=0,_ib_=table[6]; + table[6] + = + fold_right + (function(met,hm) + {var lab=met[1];return mem(lab,virt_meth_labs)?hm:[0,met,hm]}, + _ib_, + _ia_); + return 0} + function widen(table) + {var + match=hd(table[5]), + vars=match[6], + virt_meths=match[5], + saved_vars=match[4], + saved_hidden_meths=match[3], + by_label=match[2], + by_name=match[1]; + table[5] = tl(table[5]); + table[7] + = + fold_left$0 + (function(s,v) + {var _h8_=caml_call2(Vars[28],v,table[7]); + return caml_call3(Vars[4],v,_h8_,s)}, + saved_vars, + vars); + table[3] = by_name; + table[4] = by_label; + var _h7_=table[6]; + table[6] + = + fold_right + (function(met,hm) + {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]}, + _h7_, + saved_hidden_meths); + return 0} + function new_slot(table) + {var index=table[1];table[1] = index + 1 | 0;return index} + function new_variable(table,name) + {try + {var _h5_=caml_call2(Vars[28],name,table[7]);return _h5_} + catch(_h6_) + {_h6_ = caml_wrap_exception(_h6_); + if(_h6_ === Not_found) + {var index=new_slot(table); + if(caml_string_notequal(name,cst$93)) + table[7] = caml_call3(Vars[4],name,index,table[7]); + return index} + throw _h6_}} + function to_array(arr){return caml_equal(arr,0)?[0]:arr} + function new_methods_variables(table,meths,vals) + {var + meths$0=to_array(meths), + nmeths=meths$0.length - 1, + nvals=vals.length - 1, + res=caml_make_vect(nmeths + nvals | 0,0), + _hX_=nmeths - 1 | 0, + _hW_=0; + if(! (_hX_ < 0)) + {var i$0=_hW_; + for(;;) + {var + _h3_= + get_method_label(table,caml_check_bound(meths$0,i$0)[1 + i$0]); + caml_check_bound(res,i$0)[1 + i$0] = _h3_; + var _h4_=i$0 + 1 | 0; + if(_hX_ !== i$0){var i$0=_h4_;continue} + break}} + var _hZ_=nvals - 1 | 0,_hY_=0; + if(! (_hZ_ < 0)) + {var i=_hY_; + for(;;) + {var + _h1_=i + nmeths | 0, + _h0_=new_variable(table,caml_check_bound(vals,i)[1 + i]); + caml_check_bound(res,_h1_)[1 + _h1_] = _h0_; + var _h2_=i + 1 | 0; + if(_hZ_ !== i){var i=_h2_;continue} + break}} + return res} + function get_variable(table,name) + {try + {var _hU_=caml_call2(Vars[28],name,table[7]);return _hU_} + catch(_hV_) + {_hV_ = caml_wrap_exception(_hV_); + if(_hV_ === Not_found)throw [0,Assert_failure,_cJ_]; + throw _hV_}} + function get_variables(table,names) + {return map$7(function(_hT_){return get_variable(table,_hT_)},names)} + function add_initializer(table,f){table[8] = [0,f,table[8]];return 0} + function create_table(public_methods) + {if(0 === public_methods)return new_table([0]); + var + tags=map$7(public_method_label,public_methods), + table=new_table(tags); + iteri$3 + (function(i,met) + {var lab=(i * 2 | 0) + 2 | 0; + table[3] = caml_call3(Meths[4],met,lab,table[3]); + table[4] = caml_call3(Labs[4],lab,1,table[4]); + return 0}, + public_methods); + return table} + function init_class(table) + {inst_var_count[1] = (inst_var_count[1] + table[1] | 0) - 1 | 0; + table[8] = rev(table[8]); + return resize$1 + (table, + 3 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0)} + function inherits(cla,vals,virt_meths,concr_meths,param,top) + {var env=param[4],super$0=param[2]; + narrow(cla,vals,virt_meths,concr_meths); + var init=top?caml_call2(super$0,cla,env):caml_call1(super$0,cla); + widen(cla); + var + _hO_=0, + _hP_=to_array(concr_meths), + _hQ_= + [0, + map$7 + (function(nm){return get_method(cla,get_method_label(cla,nm))},_hP_), + _hO_], + _hR_=to_array(vals); + return caml_array_concat + ([0, + [0,init], + [0, + map$7(function(_hS_){return get_variable(cla,_hS_)},_hR_), + _hQ_]])} + function make_class(pub_meths,class_init) + {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); + init_class(table); + return [0,caml_call1(env_init,0),class_init,env_init,0]} + function make_class_store(pub_meths,class_init,init_table) + {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); + init_class(table); + init_table[2] = class_init; + init_table[1] = env_init; + return 0} + function dummy_class(loc) + {function undef(param){throw [0,Undefined_recursive_module,loc]} + return [0,undef,undef,undef,0]} + function create_object(table) + {var obj=caml_obj_block(248,table[1]); + obj[1] = table[2]; + return caml_set_oo_id(obj)} + function create_object_opt(obj_0,table) + {if(obj_0)return obj_0; + var obj=caml_obj_block(248,table[1]); + obj[1] = table[2]; + return caml_set_oo_id(obj)} + function iter_f(obj,param) + {var param$0=param; + for(;;) + {if(param$0) + {var l=param$0[2],f=param$0[1]; + caml_call1(f,obj); + var param$0=l; + continue} + return 0}} + function run_initializers(obj,table) + {var inits=table[8],_hN_=0 !== inits?1:0; + return _hN_?iter_f(obj,inits):_hN_} + function run_initializers_opt(obj_0,obj,table) + {if(obj_0)return obj; + var inits=table[8]; + if(0 !== inits)iter_f(obj,inits); + return obj} + function create_object_and_run_initiali(obj_0,table) + {if(obj_0)return obj_0; + var obj=create_object(table); + run_initializers(obj,table); + return obj} + function get_data$0(param) + {if(param)return param[2];throw [0,Assert_failure,_cN_]} + function build_path(n,keys,tables) + {var res=[0,0,0,0],r=[0,res],_hJ_=0; + if(! (n < 0)) + {var i=_hJ_; + for(;;) + {var _hL_=r[1]; + r[1] = [0,caml_check_bound(keys,i)[1 + i],_hL_,0]; + var _hM_=i + 1 | 0; + if(n !== i){var i=_hM_;continue} + break}} + var _hK_=r[1]; + if(tables){tables[2] = _hK_;return res} + throw [0,Assert_failure,_cK_]} + function lookup_tables(root,keys) + {var tables$2=get_data$0(root); + if(tables$2) + {var i$1=keys.length - 1 - 1 | 0,i=i$1,tables=tables$2; + a: + for(;;) + {if(0 <= i) + {var key=caml_check_bound(keys,i)[1 + i],tables$0=tables; + for(;;) + {if(tables$0) + {if(tables$0[1] === key) + {var tables$1=get_data$0(tables$0); + if(tables$1) + {var i$0=i - 1 | 0,i=i$0,tables=tables$1;continue a} + throw [0,Assert_failure,_cP_]} + if(tables$0) + {var _hI_=tables$0[3]; + if(_hI_){var tables$0=_hI_;continue} + var v=[0,key,0,0]; + if(tables$0) + {tables$0[3] = v;return build_path(i - 1 | 0,keys,v)} + throw [0,Assert_failure,_cL_]} + throw [0,Assert_failure,_cO_]} + throw [0,Assert_failure,_cM_]}} + return tables}} + return build_path(keys.length - 1 - 1 | 0,keys,root)} + function new_cache(table) + {var n=new_method(table),switch$0=0; + if + (0 + !== + (n % 2 | 0) + && + ! + ((2 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0) < n)) + {var n$0=new_method(table);switch$0 = 1} + if(! switch$0)var n$0=n; + caml_check_bound(table[2],n$0)[1 + n$0] = 0; + return n$0} + function set_methods(table,methods) + {var len=methods.length - 1,i=[0,0]; + for(;;) + {if(i[1] < len) + {var + _hC_=i[1], + label=caml_check_bound(methods,_hC_)[1 + _hC_], + next= + function(param) + {i[1]++; + var _hH_=i[1]; + return caml_check_bound(methods,_hH_)[1 + _hH_]}, + clo=next(0); + if(typeof clo === "number") + switch(clo) + {case 0: + var + x=next(0), + clo$0=function(x){return function(obj){return x}}(x); + break; + case 1: + var + n=next(0), + clo$0=function(n){return function(obj){return obj[1 + n]}}(n); + break; + case 2: + var + e=next(0), + n$0=next(0), + clo$0= + function(e,n){return function(obj){return obj[1 + e][1 + n]}} + (e,n$0); + break; + case 3: + var + n$1=next(0), + clo$0= + function(n) + {return function(obj){return caml_call1(obj[1][1 + n],obj)}} + (n$1); + break; + case 4: + var + n$2=next(0), + clo$0= + function(n){return function(obj,x){obj[1 + n] = x;return 0}} + (n$2); + break; + case 5: + var + f=next(0), + x$0=next(0), + clo$0= + function(f,x){return function(obj){return caml_call1(f,x)}} + (f,x$0); + break; + case 6: + var + f$0=next(0), + n$3=next(0), + clo$0= + function(f,n) + {return function(obj){return caml_call1(f,obj[1 + n])}} + (f$0,n$3); + break; + case 7: + var + f$1=next(0), + e$0=next(0), + n$4=next(0), + clo$0= + function(f,e,n) + {return function(obj) + {return caml_call1(f,obj[1 + e][1 + n])}} + (f$1,e$0,n$4); + break; + case 8: + var + f$2=next(0), + n$5=next(0), + clo$0= + function(f,n) + {return function(obj) + {return caml_call1(f,caml_call1(obj[1][1 + n],obj))}} + (f$2,n$5); + break; + case 9: + var + f$3=next(0), + x$1=next(0), + y=next(0), + clo$0= + function(f,x,y) + {return function(obj){return caml_call2(f,x,y)}} + (f$3,x$1,y); + break; + case 10: + var + f$4=next(0), + x$2=next(0), + n$6=next(0), + clo$0= + function(f,x,n) + {return function(obj){return caml_call2(f,x,obj[1 + n])}} + (f$4,x$2,n$6); + break; + case 11: + var + f$5=next(0), + x$3=next(0), + e$1=next(0), + n$7=next(0), + clo$0= + function(f,x,e,n) + {return function(obj) + {return caml_call2(f,x,obj[1 + e][1 + n])}} + (f$5,x$3,e$1,n$7); + break; + case 12: + var + f$6=next(0), + x$4=next(0), + n$8=next(0), + clo$0= + function(f,x,n) + {return function(obj) + {return caml_call2(f,x,caml_call1(obj[1][1 + n],obj))}} + (f$6,x$4,n$8); + break; + case 13: + var + f$7=next(0), + n$9=next(0), + x$5=next(0), + clo$0= + function(f,n,x) + {return function(obj){return caml_call2(f,obj[1 + n],x)}} + (f$7,n$9,x$5); + break; + case 14: + var + f$8=next(0), + e$2=next(0), + n$10=next(0), + x$6=next(0), + clo$0= + function(f,e,n,x) + {return function(obj) + {return caml_call2(f,obj[1 + e][1 + n],x)}} + (f$8,e$2,n$10,x$6); + break; + case 15: + var + f$9=next(0), + n$11=next(0), + x$7=next(0), + clo$0= + function(f,n,x) + {return function(obj) + {return caml_call2(f,caml_call1(obj[1][1 + n],obj),x)}} + (f$9,n$11,x$7); + break; + case 16: + var + n$12=next(0), + x$8=next(0), + clo$0= + function(n,x) + {return function(obj) + {return caml_call2(obj[1][1 + n],obj,x)}} + (n$12,x$8); + break; + case 17: + var + n$13=next(0), + m=next(0), + clo$0= + function(n,m) + {return function(obj) + {return caml_call2(obj[1][1 + n],obj,obj[1 + m])}} + (n$13,m); + break; + case 18: + var + n$14=next(0), + e$3=next(0), + m$0=next(0), + clo$0= + function(n,e,m) + {return function(obj) + {return caml_call2(obj[1][1 + n],obj,obj[1 + e][1 + m])}} + (n$14,e$3,m$0); + break; + case 19: + var + n$15=next(0), + m$1=next(0), + clo$0= + function(n,m) + {return function(obj) + {var _hF_=caml_call1(obj[1][1 + m],obj); + return caml_call2(obj[1][1 + n],obj,_hF_)}} + (n$15,m$1); + break; + case 20: + var m$2=next(0),x$9=next(0); + new_cache(table); + var + clo$0= + function(m,x) + {return function(obj) + {return caml_call1(caml_get_public_method(x,m,0),x)}} + (m$2,x$9); + break; + case 21: + var m$3=next(0),n$16=next(0); + new_cache(table); + var + clo$0= + function(m,n) + {return function(obj) + {var _hE_=obj[1 + n]; + return caml_call1(caml_get_public_method(_hE_,m,0),_hE_)}} + (m$3,n$16); + break; + case 22: + var m$4=next(0),e$4=next(0),n$17=next(0); + new_cache(table); + var + clo$0= + function(m,e,n) + {return function(obj) + {var _hD_=obj[1 + e][1 + n]; + return caml_call1(caml_get_public_method(_hD_,m,0),_hD_)}} + (m$4,e$4,n$17); + break; + default: + var m$5=next(0),n$18=next(0); + new_cache(table); + var + clo$0= + function(m,n) + {return function(obj) + {var _hG_=caml_call1(obj[1][1 + n],obj); + return caml_call1(caml_get_public_method(_hG_,m,0),_hG_)}} + (m$5,n$18)} + else + var clo$0=clo; + set_method(table,label,clo$0); + i[1]++; + continue} + return 0}} + function stats$0(param) + {return [0,table_count[1],method_count[1],inst_var_count[1]]} + var + CamlinternalOO= + [0, + public_method_label, + new_method, + new_variable, + new_methods_variables, + get_variable, + get_variables, + get_method_label, + get_method_labels, + get_method, + set_method, + set_methods, + narrow, + widen, + add_initializer, + dummy_table, + create_table, + init_class, + inherits, + make_class, + make_class_store, + dummy_class, + copy$7, + create_object, + create_object_opt, + run_initializers, + run_initializers_opt, + create_object_and_run_initiali, + lookup_tables, + params$0, + stats$0]; + caml_register_global(821,CamlinternalOO,"CamlinternalOO"); + var Stdlib_Oo=[0,copy$7,public_method_label,public_method_label]; + caml_register_global(822,Stdlib_Oo,"Stdlib__Oo"); + function init_mod_block(loc,comps$0) + {var + length=comps$0.length - 1, + modu=caml_obj_block(0,length), + _hy_=length - 1 | 0, + _hx_=0; + if(! (_hy_ < 0)) + {var i=_hx_; + for(;;) + {var shape=caml_check_bound(comps$0,i)[1 + i]; + if(typeof shape === "number") + switch(shape) + {case 0: + var + fn$0= + function(i) + {function fn(x) + {var fn$0=modu[1 + i]; + if(fn === fn$0)throw [0,Undefined_recursive_module,loc]; + return caml_call1(fn$0,x)} + return fn}, + fn=fn$0(i), + init=fn; + break; + case 1: + var l=[]; + runtime.caml_update_dummy + (l, + [246, + function(l,i) + {return function(_hA_) + {var l$0=modu[1 + i]; + if(l === l$0)throw [0,Undefined_recursive_module,loc]; + var _hB_=caml_obj_tag(l$0); + return 250 === _hB_ + ?l$0[1] + :246 === _hB_?force_lazy_block(l$0):l$0}} + (l,i)]); + var init=l; + break; + default:var init=dummy_class(loc)} + else + if(0 === shape[0]) + var comps=shape[1],init=init_mod_block(loc,comps); + else + var v=shape[1],init=v; + modu[1 + i] = init; + var _hz_=i + 1 | 0; + if(_hy_ !== i){var i=_hz_;continue} + break}} + return modu} + function init_mod(loc,shape) + {if(typeof shape !== "number" && 0 === shape[0]) + {var comps=shape[1];return init_mod_block(loc,comps)} + return failwith(cst_CamlinternalMod_init_mod_n)} + function update_mod_block(comps$0,o,n) + {if(0 === caml_obj_tag(n) && comps$0.length - 1 <= n.length - 1) + {var _hv_=comps$0.length - 1 - 1 | 0,_hu_=0; + if(! (_hv_ < 0)) + {var i=_hu_; + for(;;) + {var n$0=n[1 + i],shape=caml_check_bound(comps$0,i)[1 + i]; + if(typeof shape === "number") + if(2 === shape) + {var switch$0=0; + if(0 === caml_obj_tag(n$0) && 4 === n$0.length - 1) + {var cl=o[1 + i],j=0; + for(;;) + {cl[1 + j] = n$0[1 + j]; + var _ht_=j + 1 | 0; + if(3 !== j){var j=_ht_;continue} + break}} + else + switch$0 = 1; + if(switch$0)throw [0,Assert_failure,_cQ_]} + else + o[1 + i] = n$0; + else + if(0 === shape[0]) + {var comps=shape[1];update_mod_block(comps,o[1 + i],n$0)} + var _hw_=i + 1 | 0; + if(_hv_ !== i){var i=_hw_;continue} + break}} + return 0} + throw [0,Assert_failure,_cR_]} + function update_mod(shape,o,n) + {if(typeof shape !== "number" && 0 === shape[0]) + {var comps=shape[1];return update_mod_block(comps,o,n)} + return failwith(cst_CamlinternalMod_update_mod)} + var CamlinternalMod=[0,init_mod,update_mod]; + caml_register_global(823,CamlinternalMod,"CamlinternalMod"); + var + initial_buffer=caml_create_bytes(32), + buffer=[0,initial_buffer], + bufpos=[0,0]; + function reset_buffer(param) + {buffer[1] = initial_buffer;bufpos[1] = 0;return 0} + function store(c) + {if(caml_ml_bytes_length(buffer[1]) <= bufpos[1]) + {var newbuffer=caml_create_bytes(2 * bufpos[1] | 0); + blit(buffer[1],0,newbuffer,0,bufpos[1]); + buffer[1] = newbuffer} + caml_bytes_set(buffer[1],bufpos[1],c); + bufpos[1]++; + return 0} + function get_string(param) + {var s=sub_string(buffer[1],0,bufpos[1]); + buffer[1] = initial_buffer; + return s} + function make_lexer(keywords) + {var kwd_table=caml_call2(Stdlib_Hashtbl[1],0,17); + iter$2 + (function(s){return caml_call3(Stdlib_Hashtbl[5],kwd_table,s,[0,s])}, + keywords); + function ident_or_keyword(id) + {try + {var _hr_=caml_call2(Stdlib_Hashtbl[6],kwd_table,id);return _hr_} + catch(_hs_) + {_hs_ = caml_wrap_exception(_hs_); + if(_hs_ === Not_found)return [1,id]; + throw _hs_}} + function keyword_or_error(c) + {var s=make$1(1,c); + try + {var _hp_=caml_call2(Stdlib_Hashtbl[6],kwd_table,s);return _hp_} + catch(_hq_) + {_hq_ = caml_wrap_exception(_hq_); + if(_hq_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; + throw _hq_}} + function comment(strm) + {a: + for(;;) + {var match=peek$0(strm); + if(match) + {var switcher=match[1] - 40 | 0; + if(! (2 < switcher >>> 0)) + switch(switcher) + {case 0: + junk(strm); + var match$0=peek$0(strm); + if(match$0) + {if(42 === match$0[1]){junk(strm);comment(strm);continue} + junk(strm); + continue} + throw Failure$0; + case 1:break; + default: + junk(strm); + for(;;) + {var match$1=peek$0(strm); + if(match$1) + {var _ho_=match$1[1]; + if(41 === _ho_){junk(strm);return 0} + if(42 === _ho_){junk(strm);continue} + junk(strm); + continue a} + throw Failure$0}} + junk(strm); + continue} + throw Failure$0}} + function escape(strm) + {var match=peek$0(strm); + if(match) + {var _hl_=match[1]; + if(58 <= _hl_) + {var switcher=_hl_ - 110 | 0; + if(! (6 < switcher >>> 0)) + switch(switcher) + {case 0:junk(strm);return 10; + case 4:junk(strm);return 13; + case 6:junk(strm);return 9 + }} + else + if(48 <= _hl_) + {junk(strm); + var match$0=peek$0(strm); + if(match$0) + {var _hm_=match$0[1]; + if(! (9 < _hm_ - 48 >>> 0)) + {junk(strm); + var match$1=peek$0(strm); + if(match$1) + {var _hn_=match$1[1]; + if(! (9 < _hn_ - 48 >>> 0)) + {junk(strm); + return chr + ((((_hl_ - 48 | 0) * 100 | 0) + + + ((_hm_ - 48 | 0) * 10 | 0) + | + 0) + + + (_hn_ - 48 | 0) + | + 0)}} + throw [0,Error,cst$99]}} + throw [0,Error,cst$98]} + junk(strm); + return _hl_} + throw Failure$0} + function end_exponent_part(strm) + {for(;;) + {var match=peek$0(strm); + if(match) + {var _hk_=match[1]; + if(! (9 < _hk_ - 48 >>> 0)){junk(strm);store(_hk_);continue}} + return [0,[3,caml_float_of_string(get_string(0))]]}} + function exponent_part(strm) + {var match=peek$0(strm); + if(match) + {var _hj_=match[1],switch$0=0; + if(43 !== _hj_ && 45 !== _hj_)switch$0 = 1; + if(! switch$0) + {junk(strm);store(_hj_);return end_exponent_part(strm)}} + return end_exponent_part(strm)} + function number(s) + {for(;;) + {var match=peek$0(s); + if(match) + {var _hg_=match[1]; + if(58 <= _hg_) + {var switch$0=0; + if(69 === _hg_ || 101 === _hg_)switch$0 = 1; + if(switch$0){junk(s);store(69);return exponent_part(s)}} + else + {if(46 === _hg_) + {junk(s); + store(46); + for(;;) + {var match$0=peek$0(s); + if(match$0) + {var _hh_=match$0[1],_hi_=_hh_ - 69 | 0; + if(32 < _hi_ >>> 0) + {if(! (9 < _hi_ + 21 >>> 0)){junk(s);store(_hh_);continue}} + else + if(30 < _hi_ - 1 >>> 0) + {junk(s);store(69);return exponent_part(s)}} + return [0,[3,caml_float_of_string(get_string(0))]]}} + if(48 <= _hg_){junk(s);store(_hg_);continue}}} + return [0,[2,caml_int_of_string(get_string(0))]]}} + function ident2(strm) + {for(;;) + {var match=peek$0(strm); + if(match) + {var _he_=match[1],switch$0=0; + if(94 <= _he_) + {var _hf_=_he_ - 95 | 0; + if(30 < _hf_ >>> 0) + {if(! (32 <= _hf_))switch$0 = 1} + else + if(29 === _hf_)switch$0 = 1} + else + if(65 <= _he_) + {if(92 === _he_)switch$0 = 1} + else + if(33 <= _he_) + switch(_he_ - 33 | 0) + {case 0: + case 2: + case 3: + case 4: + case 5: + case 9: + case 10: + case 12: + case 14: + case 25: + case 27: + case 28: + case 29: + case 30: + case 31:switch$0 = 1;break + } + if(switch$0){junk(strm);store(_he_);continue}} + return [0,ident_or_keyword(get_string(0))]}} + function neg_number(s) + {var match=peek$0(s); + if(match) + {var _hd_=match[1]; + if(! (9 < _hd_ - 48 >>> 0)) + {junk(s);reset_buffer(0);store(45);store(_hd_);return number(s)}} + reset_buffer(0); + store(45); + return ident2(s)} + function ident(strm) + {for(;;) + {var match=peek$0(strm); + if(match) + {var _hb_=match[1],switch$0=0; + if(91 <= _hb_) + {var _hc_=_hb_ - 95 | 0; + if(27 < _hc_ >>> 0) + {if(97 <= _hc_)switch$0 = 1} + else + if(1 !== _hc_)switch$0 = 1} + else + if(48 <= _hb_) + {if(6 < _hb_ - 58 >>> 0)switch$0 = 1} + else + if(39 === _hb_)switch$0 = 1; + if(switch$0){junk(strm);store(_hb_);continue}} + return [0,ident_or_keyword(get_string(0))]}} + function next_token$0(counter,strm) + {for(;;) + {var match=peek$0(strm); + if(match) + {var _g3_=match[1],switch$0=0; + if(124 <= _g3_) + {if(127 <= _g3_) + {if(192 <= _g3_)switch$0 = 1} + else + if(125 !== _g3_)switch$0 = 2} + else + {var _g4_=_g3_ - 65 | 0; + if(57 < _g4_ >>> 0) + {if(! (58 <= _g4_)) + switch(_g4_ + 65 | 0) + {case 34: + junk(strm); + reset_buffer(0); + for(;;) + {var match$1=peek$0(strm); + if(match$1) + {var _g6_=match$1[1]; + if(34 === _g6_){junk(strm);return [0,[4,get_string(0)]]} + if(92 === _g6_) + {junk(strm); + try + {var c$0=escape(strm)} + catch(_ha_) + {_ha_ = caml_wrap_exception(_ha_); + if(_ha_ === Failure$0)throw [0,Error,cst$96]; + throw _ha_; + var _g9_=_ha_} + store(c$0); + continue} + junk(strm); + store(_g6_); + continue} + throw Failure$0} + case 39: + junk(strm); + try + {var match$2=peek$0(strm); + if(! match$2)throw Failure$0; + var _g7_=match$2[1]; + if(92 === _g7_) + {junk(strm); + try + {var _g8_=escape(strm)} + catch(_g$_) + {_g$_ = caml_wrap_exception(_g$_); + if(_g$_ === Failure$0)throw [0,Error,cst$97]; + throw _g$_} + var c=_g8_} + else + {junk(strm);var c=_g7_}} + catch(_g__) + {_g__ = caml_wrap_exception(_g__); + if(_g__ === Failure$0)throw [0,Error,cst$94]; + throw _g__} + var match$0=peek$0(strm); + if(match$0 && 39 === match$0[1]) + {junk(strm);return [0,[5,c]]} + throw [0,Error,cst$95]; + case 40: + junk(strm); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return maybe_comment(counter$0,strm)} + return caml_trampoline_return(maybe_comment,[0,strm]); + case 45:junk(strm);return neg_number(strm); + case 9: + case 10: + case 12: + case 13: + case 26: + case 32:junk(strm);continue; + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + junk(strm);reset_buffer(0);store(_g3_);return number(strm); + case 33: + case 35: + case 36: + case 37: + case 38: + case 42: + case 43: + case 47: + case 58: + case 60: + case 61: + case 62: + case 63: + case 64:switch$0 = 2;break + }} + else + {var _g5_=_g4_ - 26 | 0; + if(5 < _g5_ >>> 0) + switch$0 = 1; + else + switch(_g5_) + {case 4:switch$0 = 1;break;case 1:case 3:switch$0 = 2;break}}} + switch(switch$0) + {case 0:junk(strm);return [0,keyword_or_error(_g3_)]; + case 1: + junk(strm);reset_buffer(0);store(_g3_);return ident(strm); + default: + junk(strm);reset_buffer(0);store(_g3_);return ident2(strm)}} + return 0}} + function maybe_comment(counter,strm) + {var match=peek$0(strm); + if(match && 42 === match[1]) + {junk(strm); + comment(strm); + if(counter < 50) + {var counter$0=counter + 1 | 0;return next_token$0(counter$0,strm)} + return caml_trampoline_return(next_token$0,[0,strm])} + return [0,keyword_or_error(40)]} + function next_token(strm){return caml_trampoline(next_token$0(0,strm))} + return function(input) + {return from(function(count){return next_token(input)})}} + var Stdlib_Genlex=[0,make_lexer]; + caml_register_global(824,Stdlib_Genlex,"Stdlib__Genlex"); + function MakeSeeded$0(H) + {var prng=[246,function(_g2_){return caml_call1(_ci_[2],0)}]; + function create(opt,initial_size) + {if(opt) + var sth=opt[1],random=sth; + else + var random=caml_call1(Stdlib_Hashtbl[17],0); + var x=16; + for(;;) + {if(! (initial_size <= x) && ! (max_array_length < (x * 2 | 0))) + {var x$0=x * 2 | 0,x=x$0;continue} + if(random) + var + _g0_=caml_obj_tag(prng), + _g1_=250 === _g0_?prng[1]:246 === _g0_?force_lazy_block(prng):prng, + seed=caml_call1(_ci_[4],_g1_); + else + var seed=0; + return [0,0,caml_make_vect(x,0),seed,x]}} + function clear(h) + {h[1] = 0; + var len=h[2].length - 1,_gY_=len - 1 | 0,_gX_=0; + if(! (_gY_ < 0)) + {var i=_gX_; + for(;;) + {caml_check_bound(h[2],i)[1 + i] = 0; + var _gZ_=i + 1 | 0; + if(_gY_ !== i){var i=_gZ_;continue} + break}} + return 0} + function reset(h) + {var len=h[2].length - 1; + return len === h[4] + ?clear(h) + :(h[1] = 0,h[2] = caml_make_vect(h[4],0),0)} + function copy(init) + {var _gU_=init[4],_gV_=init[3],_gW_=copy$1(init[2]); + return [0,init[1],_gW_,_gV_,_gU_]} + function key_index(h,hkey){return hkey & (h[2].length - 1 - 1 | 0)} + function clean(h) + {function do_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var hkey=param$0[1],rest=param$0[3],c=param$0[2]; + if(caml_call1(H[7],c)) + {var rest$0=param$0[3],c$0=param$0[2]; + return [0,hkey,c$0,do_bucket(rest$0)]} + h[1] = h[1] - 1 | 0; + var param$0=rest; + continue} + return 0}} + var d=h[2],_gR_=d.length - 1 - 1 | 0,_gQ_=0; + if(! (_gR_ < 0)) + {var i=_gQ_; + for(;;) + {var _gS_=do_bucket(caml_check_bound(d,i)[1 + i]); + caml_check_bound(d,i)[1 + i] = _gS_; + var _gT_=i + 1 | 0; + if(_gR_ !== i){var i=_gT_;continue} + break}} + return 0} + function resize(h) + {var odata=h[2],osize=odata.length - 1,nsize=osize * 2 | 0; + clean(h); + var + _gJ_=nsize < max_array_length?1:0, + _gK_=_gJ_?(osize >>> 1 | 0) <= h[1]?1:0:_gJ_; + if(_gK_) + {var ndata=caml_make_vect(nsize,0); + h[2] = ndata; + var + insert_bucket= + function(param) + {if(param) + {var rest=param[3],data=param[2],hkey=param[1]; + insert_bucket(rest); + var + nidx=key_index(h,hkey), + _gP_=[0,hkey,data,caml_check_bound(ndata,nidx)[1 + nidx]]; + caml_check_bound(ndata,nidx)[1 + nidx] = _gP_; + return 0} + return 0}, + _gM_=osize - 1 | 0, + _gL_=0; + if(! (_gM_ < 0)) + {var i=_gL_; + for(;;) + {insert_bucket(caml_check_bound(odata,i)[1 + i]); + var _gO_=i + 1 | 0; + if(_gM_ !== i){var i=_gO_;continue} + break}} + var _gN_=0} + else + var _gN_=_gK_; + return _gN_} + function add(h,key,info) + {var + hkey=caml_call2(H[2],h[3],key), + i=key_index(h,hkey), + container=caml_call2(H[1],key,info), + bucket=[0,hkey,container,caml_check_bound(h[2],i)[1 + i]]; + caml_check_bound(h[2],i)[1 + i] = bucket; + h[1] = h[1] + 1 | 0; + var _gI_=h[2].length - 1 << 1 < h[1]?1:0; + return _gI_?resize(h):_gI_} + function remove(h,key) + {var hkey=caml_call2(H[2],h[3],key); + function remove_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var hk=param$0[1],next=param$0[3],c=param$0[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + switch(match) + {case 0:h[1] = h[1] - 1 | 0;return next; + case 1:return [0,hk,c,remove_bucket(next)]; + default:h[1] = h[1] - 1 | 0;var param$0=next;continue}} + var next$0=param$0[3],c$0=param$0[2]; + return [0,hk,c$0,remove_bucket(next$0)]} + return 0}} + var + i=key_index(h,hkey), + _gH_=remove_bucket(caml_check_bound(h[2],i)[1 + i]); + caml_check_bound(h[2],i)[1 + i] = _gH_; + return 0} + function find(h,key) + {var + hkey=caml_call2(H[2],h[3],key), + _gG_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gG_)[1 + _gG_], + param=param$1; + for(;;) + {if(param) + {var hk=param[1],rest=param[3],c=param[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + switch(match) + {case 0: + var match$0=caml_call1(H[4],c); + if(match$0){var d=match$0[1];return d} + var param=rest; + continue; + case 1:var param=rest;continue; + default:var param=rest;continue}} + var param$0=param[3],param=param$0; + continue} + throw Not_found}} + function find_opt(h,key) + {var + hkey=caml_call2(H[2],h[3],key), + _gF_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gF_)[1 + _gF_], + param=param$1; + for(;;) + {if(param) + {var hk=param[1],rest=param[3],c=param[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + switch(match) + {case 0: + var d=caml_call1(H[4],c); + if(d)return d; + var param=rest; + continue; + case 1:var param=rest;continue; + default:var param=rest;continue}} + var param$0=param[3],param=param$0; + continue} + return 0}} + function find_all(h,key) + {var hkey=caml_call2(H[2],h[3],key); + function find_in_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var hk=param$0[1],rest=param$0[3],c=param$0[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + switch(match) + {case 0: + var match$0=caml_call1(H[4],c); + if(match$0) + {var d=match$0[1];return [0,d,find_in_bucket(rest)]} + var param$0=rest; + continue; + case 1:var param$0=rest;continue; + default:var param$0=rest;continue}} + var param$1=param$0[3],param$0=param$1; + continue} + return 0}} + var _gE_=key_index(h,hkey); + return find_in_bucket(caml_check_bound(h[2],_gE_)[1 + _gE_])} + function replace(h,key,info) + {var hkey=caml_call2(H[2],h[3],key); + function replace_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var hk=param$0[1],next=param$0[3],c=param$0[2]; + if(hkey === hk) + {var match=caml_call2(H[3],c,key); + if(match){var param$0=next;continue} + return caml_call3(H[6],c,key,info)} + var param$1=param$0[3],param$0=param$1; + continue} + throw Not_found}} + var i=key_index(h,hkey),l=caml_check_bound(h[2],i)[1 + i]; + try + {var _gC_=replace_bucket(l);return _gC_} + catch(_gD_) + {_gD_ = caml_wrap_exception(_gD_); + if(_gD_ === Not_found) + {var container=caml_call2(H[1],key,info); + caml_check_bound(h[2],i)[1 + i] = [0,hkey,container,l]; + h[1] = h[1] + 1 | 0; + var _gB_=h[2].length - 1 << 1 < h[1]?1:0; + return _gB_?resize(h):_gB_} + throw _gD_}} + function mem(h,key) + {var + hkey=caml_call2(H[2],h[3],key), + _gA_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gA_)[1 + _gA_], + param=param$1; + for(;;) + {if(param) + {var hk=param[1],rest=param[3],c=param[2]; + if(hk === hkey) + {var match=caml_call2(H[3],c,key); + if(match){var param=rest;continue} + return 1} + var param$0=param[3],param=param$0; + continue} + return 0}} + function iter$0(f,h) + {var d$0=h[2],_gy_=d$0.length - 1 - 1 | 0,_gx_=0; + if(! (_gy_ < 0)) + {var i=_gx_; + a: + for(;;) + {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0; + for(;;) + {if(param) + {var + rest=param[3], + c=param[2], + match=caml_call1(H[5],c), + match$0=caml_call1(H[4],c), + switch$0=0; + if(match && match$0) + {var d=match$0[1],k=match[1];caml_call2(f,k,d);switch$0 = 1} + var param=rest; + continue} + var _gz_=i + 1 | 0; + if(_gy_ !== i){var i=_gz_;continue a} + break} + break}} + return 0} + function fold(f,h,init) + {var d$0=h[2],accu$1=[0,init],_gu_=d$0.length - 1 - 1 | 0,_gt_=0; + if(! (_gu_ < 0)) + {var i=_gt_; + a: + for(;;) + {var + _gv_=accu$1[1], + b$0=caml_check_bound(d$0,i)[1 + i], + b=b$0, + accu=_gv_; + for(;;) + {if(b) + {var + rest=b[3], + c=b[2], + match=caml_call1(H[5],c), + match$0=caml_call1(H[4],c), + switch$0=0; + if(match && match$0) + {var d=match$0[1],k=match[1],accu$0=caml_call3(f,k,d,accu); + switch$0 = 1} + if(! switch$0)var accu$0=accu; + var b=rest,accu=accu$0; + continue} + accu$1[1] = accu; + var _gw_=i + 1 | 0; + if(_gu_ !== i){var i=_gw_;continue a} + break} + break}} + return accu$1[1]} + function filter_map_inplace(f,h) + {function do_bucket(param) + {var param$0=param; + for(;;) + {if(param$0) + {var + rest=param$0[3], + c=param$0[2], + hk=param$0[1], + match=caml_call1(H[5],c), + match$0=caml_call1(H[4],c); + if(match && match$0) + {var d=match$0[1],k=match[1],match$1=caml_call2(f,k,d); + if(match$1) + {var new_d=match$1[1]; + caml_call3(H[6],c,k,new_d); + return [0,hk,c,do_bucket(rest)]} + var param$0=rest; + continue} + var param$0=rest; + continue} + return 0}} + var d=h[2],_gq_=d.length - 1 - 1 | 0,_gp_=0; + if(! (_gq_ < 0)) + {var i=_gp_; + for(;;) + {var _gr_=do_bucket(caml_check_bound(d,i)[1 + i]); + caml_check_bound(d,i)[1 + i] = _gr_; + var _gs_=i + 1 | 0; + if(_gq_ !== i){var i=_gs_;continue} + break}} + return 0} + function length(h){return h[1]} + function bucket_length(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var + param$1=param$0[3], + accu$1=accu$0 + 1 | 0, + accu$0=accu$1, + param$0=param$1; + continue} + return accu$0}} + function stats(h) + {var + _gl_=h[2], + _gm_=0, + mbl= + fold_left$3 + (function(m,b){return max$1(m,bucket_length(0,b))},_gm_,_gl_), + histo=caml_make_vect(mbl + 1 | 0,0), + _gn_=h[2]; + iter$5 + (function(b) + {var + l=bucket_length(0,b), + _go_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _go_; + return 0}, + _gn_); + return [0,h[1],h[2].length - 1,mbl,histo]} + function bucket_length_alive(accu,param) + {var accu$0=accu,param$0=param; + for(;;) + {if(param$0) + {var rest=param$0[3],c=param$0[2]; + if(caml_call1(H[7],c)) + {var accu$1=accu$0 + 1 | 0,accu$0=accu$1,param$0=rest;continue} + var param$1=param$0[3],param$0=param$1; + continue} + return accu$0}} + function stats_alive(h) + {var + size=[0,0], + _gh_=h[2], + _gi_=0, + mbl= + fold_left$3 + (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gi_,_gh_), + histo=caml_make_vect(mbl + 1 | 0,0), + _gj_=h[2]; + iter$5 + (function(b) + {var l=bucket_length_alive(0,b); + size[1] = size[1] + l | 0; + var _gk_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _gk_; + return 0}, + _gj_); + return [0,size[1],h[2].length - 1,mbl,histo]} + function to_seq(tbl) + {var tbl_data=tbl[2]; + function aux(i,buck,param) + {var i$0=i,buck$0=buck; + for(;;) + {if(buck$0) + {var + next=buck$0[3], + c=buck$0[2], + match=caml_call1(H[5],c), + match$0=caml_call1(H[4],c); + if(match && match$0) + {var data=match$0[1],key=match[1]; + return [0, + [0,key,data], + function(_gg_){return aux(i$0,next,_gg_)}]} + var buck$0=next; + continue} + if(i$0 === tbl_data.length - 1)return 0; + var + buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], + i$1=i$0 + 1 | 0, + i$0=i$1, + buck$0=buck$1; + continue}} + var _gd_=0,_ge_=0; + return function(_gf_){return aux(_ge_,_gd_,_gf_)}} + function to_seq_keys(m) + {var _f$_=to_seq(m); + function _ga_(_gc_){return _gc_[1]} + return function(_gb_){return map$1(_ga_,_f$_,_gb_)}} + function to_seq_values(m) + {var _f7_=to_seq(m); + function _f8_(_f__){return _f__[2]} + return function(_f9_){return map$1(_f8_,_f7_,_f9_)}} + function add_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return add(tbl,k,v)}, + i)} + function replace_seq(tbl,i) + {return iter + (function(param) + {var v=param[2],k=param[1];return replace(tbl,k,v)}, + i)} + function of_seq(i){var tbl=create(0,16);replace_seq(tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter$0, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq, + clean, + stats_alive]} + function create$5(param){return caml_call1(_q_[1],1)} + function get_key$0(t){return caml_call2(_q_[3],t,0)} + function get_key_copy$0(t){return caml_call2(_q_[4],t,0)} + function set_key$0(t,k){return caml_call3(_q_[5],t,0,k)} + function unset_key$0(t){return caml_call2(_q_[6],t,0)} + function check_key$0(t){return caml_call2(_q_[7],t,0)} + function blit_key$0(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,1)} + function get_data$1(t){return caml_call1(_q_[9],t)} + function get_data_copy(t){return caml_call1(_q_[10],t)} + function set_data(t,d){return caml_call2(_q_[11],t,d)} + function unset_data(t){return caml_call1(_q_[12],t)} + function check_data(t){return caml_call1(_q_[13],t)} + function blit_data(t1,t2){return caml_call2(_q_[14],t1,t2)} + function make$4(key,data) + {var eph=create$5(0);set_data(eph,data);set_key$0(eph,key);return eph} + function query(eph,key) + {var match=get_key$0(eph); + if(match){var k=match[1];return k === key?get_data$1(eph):0} + return 0} + function MakeSeeded$1(H) + {function create(k,d) + {var c=create$5(0);set_data(c,d);set_key$0(c,k);return c} + var hash=H[2]; + function equal(c,k) + {var match=get_key$0(c); + if(match){var k$0=match[1];return caml_call2(H[1],k,k$0)?0:1} + return 2} + function set_key_data(c,k,d) + {unset_data(c);set_key$0(c,k);return set_data(c,d)} + return MakeSeeded$0 + ([0, + create, + hash, + equal, + get_data$1, + get_key$0, + set_key_data, + check_key$0])} + function Make$2(H) + {var equal=H[1]; + function hash(seed,x){return caml_call1(H[2],x)} + var + include=MakeSeeded$1([0,equal,hash]), + clear=include[2], + reset=include[3], + copy=include[4], + add=include[5], + remove=include[6], + find=include[7], + find_opt=include[8], + find_all=include[9], + replace=include[10], + mem=include[11], + iter=include[12], + filter_map_inplace=include[13], + fold=include[14], + length=include[15], + stats=include[16], + to_seq=include[17], + to_seq_keys=include[18], + to_seq_values=include[19], + add_seq=include[20], + replace_seq=include[21], + clean=include[23], + stats_alive=include[24], + _f6_=include[1]; + function create(sz){return caml_call2(_f6_,_cS_,sz)} + function of_seq(i) + {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq, + clean, + stats_alive]} + function make$5(param){return [0,0]} + function add$1(b,k,d){var _f5_=b[1];b[1] = [0,make$4(k,d),_f5_];return 0} + function test_key(k,e) + {var match=get_key$0(e); + if(match){var x=match[1];if(x === k)return 1} + return 0} + function remove$0(b,k) + {var l=b[1],acc=0; + for(;;) + {if(l) + {var h=l[1],t=l[2]; + if(test_key(k,h)){b[1] = rev_append(acc,t);return 0} + var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; + continue} + return 0}} + function find$2(b,k) + {var + _f3_=b[1], + match=find_opt(function(_f4_){return test_key(k,_f4_)},_f3_); + if(match){var e=match[1];return get_data$1(e)} + return 0} + function length$7(b){return length$1(b[1])} + function clear$3(b){b[1] = 0;return 0} + function create$6(param){return caml_call1(_q_[1],2)} + function get_key1(t){return caml_call2(_q_[3],t,0)} + function get_key1_copy(t){return caml_call2(_q_[4],t,0)} + function set_key1(t,k){return caml_call3(_q_[5],t,0,k)} + function unset_key1(t){return caml_call2(_q_[6],t,0)} + function check_key1(t){return caml_call2(_q_[7],t,0)} + function get_key2(t){return caml_call2(_q_[3],t,1)} + function get_key2_copy(t){return caml_call2(_q_[4],t,1)} + function set_key2(t,k){return caml_call3(_q_[5],t,1,k)} + function unset_key2(t){return caml_call2(_q_[6],t,1)} + function check_key2(t){return caml_call2(_q_[7],t,1)} + function blit_key1(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,1)} + function blit_key2(t1,t2){return caml_call5(_q_[8],t1,1,t2,1,1)} + function blit_key12(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,2)} + function get_data$2(t){return caml_call1(_q_[9],t)} + function get_data_copy$0(t){return caml_call1(_q_[10],t)} + function set_data$0(t,d){return caml_call2(_q_[11],t,d)} + function unset_data$0(t){return caml_call1(_q_[12],t)} + function check_data$0(t){return caml_call1(_q_[13],t)} + function blit_data$0(t1,t2){return caml_call2(_q_[14],t1,t2)} + function make$6(key1,key2,data) + {var eph=create$6(0); + set_data$0(eph,data); + set_key1(eph,key1); + set_key2(eph,key2); + return eph} + function query$0(eph,key1,key2) + {var match=get_key1(eph); + if(match) + {var k=match[1]; + if(k === key1) + {var match$0=get_key2(eph); + if(match$0) + {var k$0=match$0[1];return k$0 === key2?get_data$2(eph):0} + return 0} + return 0} + return 0} + function MakeSeeded$2(H1,H2) + {function create(param,d) + {var k2=param[2],k1=param[1],c=create$6(0); + set_data$0(c,d); + set_key1(c,k1); + set_key2(c,k2); + return c} + function hash(seed,param) + {var + k2=param[2], + k1=param[1], + _f2_=caml_call2(H2[2],seed,k2) * 65599 | 0; + return caml_call2(H1[2],seed,k1) + _f2_ | 0} + function equal(c,param) + {var k2=param[2],k1=param[1],match=get_key1(c),match$0=get_key2(c); + if(match && match$0) + {var k2$0=match$0[1],k1$0=match[1]; + if(caml_call2(H1[1],k1,k1$0) && caml_call2(H2[1],k2,k2$0))return 0; + return 1} + return 2} + function get_key(c) + {var match=get_key1(c),match$0=get_key2(c); + if(match && match$0) + {var k2=match$0[1],k1=match[1];return [0,[0,k1,k2]]} + return 0} + function set_key_data(c,param,d) + {var k2=param[2],k1=param[1]; + unset_data$0(c); + set_key1(c,k1); + set_key2(c,k2); + return set_data$0(c,d)} + function check_key(c) + {var _f1_=check_key1(c);return _f1_?check_key2(c):_f1_} + return MakeSeeded$0 + ([0,create,hash,equal,get_data$2,get_key,set_key_data,check_key])} + function Make$3(H1,H2) + {var equal=H2[1]; + function hash(seed,x){return caml_call1(H2[2],x)} + var equal$0=H1[1],_fZ_=[0,equal,hash]; + function hash$0(seed,x){return caml_call1(H1[2],x)} + var + include=MakeSeeded$2([0,equal$0,hash$0],_fZ_), + clear=include[2], + reset=include[3], + copy=include[4], + add=include[5], + remove=include[6], + find=include[7], + find_opt=include[8], + find_all=include[9], + replace=include[10], + mem=include[11], + iter=include[12], + filter_map_inplace=include[13], + fold=include[14], + length=include[15], + stats=include[16], + to_seq=include[17], + to_seq_keys=include[18], + to_seq_values=include[19], + add_seq=include[20], + replace_seq=include[21], + clean=include[23], + stats_alive=include[24], + _f0_=include[1]; + function create(sz){return caml_call2(_f0_,_cT_,sz)} + function of_seq(i) + {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq, + clean, + stats_alive]} + function make$7(param){return [0,0]} + function add$2(b,k1,k2,d) + {var _fY_=b[1];b[1] = [0,make$6(k1,k2,d),_fY_];return 0} + function test_keys(k1,k2,e) + {var match=get_key1(e),match$0=get_key2(e); + if(match && match$0) + {var x2=match$0[1],x1=match[1];if(x1 === k1 && x2 === k2)return 1} + return 0} + function remove$1(b,k1,k2) + {var l=b[1],acc=0; + for(;;) + {if(l) + {var h=l[1],t=l[2]; + if(test_keys(k1,k2,h)){b[1] = rev_append(acc,t);return 0} + var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; + continue} + return 0}} + function find$3(b,k1,k2) + {var + _fW_=b[1], + match=find_opt(function(_fX_){return test_keys(k1,k2,_fX_)},_fW_); + if(match){var e=match[1];return get_data$2(e)} + return 0} + function length$8(b){return length$1(b[1])} + function clear$4(b){b[1] = 0;return 0} + function create$7(n){return caml_call1(_q_[1],n)} + function length$9(k){return caml_call1(_q_[2],k)} + function get_key$1(t,n){return caml_call2(_q_[3],t,n)} + function get_key_copy$1(t,n){return caml_call2(_q_[4],t,n)} + function set_key$1(t,n,k){return caml_call3(_q_[5],t,n,k)} + function unset_key$1(t,n){return caml_call2(_q_[6],t,n)} + function check_key$1(t,n){return caml_call2(_q_[7],t,n)} + function blit_key$1(t1,o1,t2,o2,l) + {return caml_call5(_q_[8],t1,o1,t2,o2,l)} + function get_data$3(t){return caml_call1(_q_[9],t)} + function get_data_copy$1(t){return caml_call1(_q_[10],t)} + function set_data$1(t,d){return caml_call2(_q_[11],t,d)} + function unset_data$1(t){return caml_call1(_q_[12],t)} + function check_data$1(t){return caml_call1(_q_[13],t)} + function blit_data$1(t1,t2){return caml_call2(_q_[14],t1,t2)} + function make$8(keys,data) + {var l=keys.length - 1,eph=create$7(l); + set_data$1(eph,data); + var _fU_=l - 1 | 0,_fT_=0; + if(! (_fU_ < 0)) + {var i=_fT_; + for(;;) + {set_key$1(eph,i,caml_check_bound(keys,i)[1 + i]); + var _fV_=i + 1 | 0; + if(_fU_ !== i){var i=_fV_;continue} + break}} + return eph} + function query$1(eph,keys) + {var l=length$9(eph); + try + {if(l !== keys.length - 1)throw Exit; + var _fP_=l - 1 | 0,_fO_=0; + if(! (_fP_ < 0)) + {var i=_fO_; + for(;;) + {var match=get_key$1(eph,i); + if(! match)throw Exit; + var k=match[1]; + if(k !== caml_check_bound(keys,i)[1 + i])throw Exit; + var _fR_=i + 1 | 0; + if(_fP_ !== i){var i=_fR_;continue} + break}} + var _fQ_=get_data$3(eph); + return _fQ_} + catch(_fS_) + {_fS_ = caml_wrap_exception(_fS_);if(_fS_ === Exit)return 0;throw _fS_}} + function MakeSeeded$3(H) + {function create(k,d) + {var c=create$7(k.length - 1); + set_data$1(c,d); + var _fM_=k.length - 1 - 1 | 0,_fL_=0; + if(! (_fM_ < 0)) + {var i=_fL_; + for(;;) + {set_key$1(c,i,caml_check_bound(k,i)[1 + i]); + var _fN_=i + 1 | 0; + if(_fM_ !== i){var i=_fN_;continue} + break}} + return c} + function hash(seed,k) + {var h=[0,0],_fH_=k.length - 1 - 1 | 0,_fG_=0; + if(! (_fH_ < 0)) + {var i=_fG_; + for(;;) + {var _fI_=h[1],_fJ_=caml_check_bound(k,i)[1 + i]; + h[1] = (caml_call2(H[2],seed,_fJ_) * 65599 | 0) + _fI_ | 0; + var _fK_=i + 1 | 0; + if(_fH_ !== i){var i=_fK_;continue} + break}} + return h[1]} + function equal(c,k) + {var len=k.length - 1,len$0=length$9(c); + if(len !== len$0)return 1; + var i$1=len - 1 | 0,i=i$1; + for(;;) + {if(0 <= i) + {var match=get_key$1(c,i); + if(match) + {var ki=match[1],_fF_=caml_check_bound(k,i)[1 + i]; + if(caml_call2(H[1],_fF_,ki)){var i$0=i - 1 | 0,i=i$0;continue} + return 1} + return 2} + return 0}} + function get_key(c) + {var len=length$9(c); + if(0 === len)return [0,[0]]; + var match=get_key$1(c,0); + if(match) + {var k0=match[1],a=caml_make_vect(len,k0),i$1=len - 1 | 0,i=i$1; + for(;;) + {if(1 <= i) + {var match$0=get_key$1(c,i); + if(match$0) + {var ki=match$0[1]; + caml_check_bound(a,i)[1 + i] = ki; + var i$0=i - 1 | 0,i=i$0; + continue} + return 0} + return [0,a]}} + return 0} + function set_key_data(c,k,d) + {unset_data$1(c); + var _fD_=k.length - 1 - 1 | 0,_fC_=0; + if(! (_fD_ < 0)) + {var i=_fC_; + for(;;) + {set_key$1(c,i,caml_check_bound(k,i)[1 + i]); + var _fE_=i + 1 | 0; + if(_fD_ !== i){var i=_fE_;continue} + break}} + return set_data$1(c,d)} + function check_key(c) + {var i$1=length$9(c) - 1 | 0,i=i$1; + for(;;) + {var _fz_=i < 0?1:0; + if(_fz_) + var _fA_=_fz_; + else + {var _fB_=check_key$1(c,i); + if(_fB_){var i$0=i - 1 | 0,i=i$0;continue} + var _fA_=_fB_} + return _fA_}} + return MakeSeeded$0 + ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])} + function Make$4(H) + {var equal=H[1]; + function hash(seed,x){return caml_call1(H[2],x)} + var + include=MakeSeeded$3([0,equal,hash]), + clear=include[2], + reset=include[3], + copy=include[4], + add=include[5], + remove=include[6], + find=include[7], + find_opt=include[8], + find_all=include[9], + replace=include[10], + mem=include[11], + iter=include[12], + filter_map_inplace=include[13], + fold=include[14], + length=include[15], + stats=include[16], + to_seq=include[17], + to_seq_keys=include[18], + to_seq_values=include[19], + add_seq=include[20], + replace_seq=include[21], + clean=include[23], + stats_alive=include[24], + _fy_=include[1]; + function create(sz){return caml_call2(_fy_,_cU_,sz)} + function of_seq(i) + {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} + return [0, + create, + clear, + reset, + copy, + add, + remove, + find, + find_opt, + find_all, + replace, + mem, + iter, + filter_map_inplace, + fold, + length, + stats, + to_seq, + to_seq_keys, + to_seq_values, + add_seq, + replace_seq, + of_seq, + clean, + stats_alive]} + function make$9(param){return [0,0]} + function add$3(b,k,d){var _fx_=b[1];b[1] = [0,make$8(k,d),_fx_];return 0} + function test_keys$0(k,e) + {try + {if(length$9(e) !== k.length - 1)throw Exit; + var _ft_=k.length - 1 - 1 | 0,_fs_=0; + if(! (_ft_ < 0)) + {var i=_fs_; + for(;;) + {var match=get_key$1(e,i),switch$0=0; + if(match) + {var x=match[1]; + if(x === caml_check_bound(k,i)[1 + i]) + {var _fv_=i + 1 | 0; + if(_ft_ !== i){var i=_fv_;continue} + switch$0 = 1}} + if(! switch$0)throw Exit; + break}} + var _fu_=1; + return _fu_} + catch(_fw_) + {_fw_ = caml_wrap_exception(_fw_);if(_fw_ === Exit)return 0;throw _fw_}} + function remove$2(b,k) + {var l=b[1],acc=0; + for(;;) + {if(l) + {var h=l[1],t=l[2]; + if(test_keys$0(k,h)){b[1] = rev_append(acc,t);return 0} + var l$0=l[2],acc$0=[0,h,acc],l=l$0,acc=acc$0; + continue} + return 0}} + function find$4(b,k) + {var + _fq_=b[1], + match=find_opt(function(_fr_){return test_keys$0(k,_fr_)},_fq_); + if(match){var e=match[1];return get_data$3(e)} + return 0} + function length$10(b){return length$1(b[1])} + function clear$5(b){b[1] = 0;return 0} + var + Stdlib_Ephemeron= + [0, + [0, + create$5, + get_key$0, + get_key_copy$0, + set_key$0, + unset_key$0, + check_key$0, + blit_key$0, + get_data$1, + get_data_copy, + set_data, + unset_data, + check_data, + blit_data, + make$4, + query, + Make$2, + MakeSeeded$1, + [0,make$5,add$1,remove$0,find$2,length$7,clear$3]], + [0, + create$6, + get_key1, + get_key1_copy, + set_key1, + unset_key1, + check_key1, + get_key2, + get_key2_copy, + set_key2, + unset_key2, + check_key2, + blit_key1, + blit_key2, + blit_key12, + get_data$2, + get_data_copy$0, + set_data$0, + unset_data$0, + check_data$0, + blit_data$0, + make$6, + query$0, + Make$3, + MakeSeeded$2, + [0,make$7,add$2,remove$1,find$3,length$8,clear$4]], + [0, + create$7, + get_key$1, + get_key_copy$1, + set_key$1, + unset_key$1, + check_key$1, + blit_key$1, + get_data$3, + get_data_copy$1, + set_data$1, + unset_data$1, + check_data$1, + blit_data$1, + make$8, + query$1, + Make$4, + MakeSeeded$3, + [0,make$9,add$3,remove$2,find$4,length$10,clear$5]], + [0, + function(_fp_) + {return MakeSeeded$0 + ([0,_fp_[3],_fp_[1],_fp_[2],_fp_[5],_fp_[4],_fp_[6],_fp_[7]])}]]; + caml_register_global(825,Stdlib_Ephemeron,"Stdlib__Ephemeron"); + function generic_basename(is_dir_sep,current_dir_name,name) + {if(caml_string_equal(name,cst$100))return current_dir_name; + var n$3=caml_ml_string_length(name) - 1 | 0,n=n$3; + for(;;) + {if(0 <= n) + {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue} + var p=n + 1 | 0,n$1=n; + for(;;) + {if(0 <= n$1) + {if(caml_call2(is_dir_sep,name,n$1)) + return sub$0(name,n$1 + 1 | 0,(p - n$1 | 0) - 1 | 0); + var n$2=n$1 - 1 | 0,n$1=n$2; + continue} + return sub$0(name,0,p)}} + return sub$0(name,0,1)}} + function generic_dirname(is_dir_sep,current_dir_name,name) + {if(caml_string_equal(name,cst$101))return current_dir_name; + var n$5=caml_ml_string_length(name) - 1 | 0,n=n$5; + for(;;) + {if(0 <= n) + {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue} + var n$1=n; + for(;;) + {if(0 <= n$1) + {if(caml_call2(is_dir_sep,name,n$1)) + {var n$3=n$1; + for(;;) + {if(0 <= n$3) + {if(caml_call2(is_dir_sep,name,n$3)) + {var n$4=n$3 - 1 | 0,n$3=n$4;continue} + return sub$0(name,0,n$3 + 1 | 0)} + return sub$0(name,0,1)}} + var n$2=n$1 - 1 | 0,n$1=n$2; + continue} + return current_dir_name}} + return sub$0(name,0,1)}} + function is_dir_sep(s,i){return 47 === caml_string_get(s,i)?1:0} + function is_relative(n) + {var + _fn_=caml_ml_string_length(n) < 1?1:0, + _fo_=_fn_ || (47 !== caml_string_get(n,0)?1:0); + return _fo_} + function is_implicit(n) + {var _fi_=is_relative(n); + if(_fi_) + {var + _fj_=caml_ml_string_length(n) < 2?1:0, + _fk_=_fj_ || caml_string_notequal(sub$0(n,0,2),cst$103); + if(_fk_) + var + _fl_=caml_ml_string_length(n) < 3?1:0, + _fm_=_fl_ || caml_string_notequal(sub$0(n,0,3),cst$102); + else + var _fm_=_fk_} + else + var _fm_=_fi_; + return _fm_} + function check_suffix(name,suff){return ends_with$0(suff,name)} + function chop_suffix_opt(suffix,filename) + {var + len_s=caml_ml_string_length(suffix), + len_f=caml_ml_string_length(filename); + if(len_s <= len_f) + {var r=sub$0(filename,len_f - len_s | 0,len_s); + return caml_string_equal(r,suffix) + ?[0,sub$0(filename,0,len_f - len_s | 0)] + :0} + return 0} + try + {var _c3_=caml_sys_getenv(cst_TMPDIR),_cV_=_c3_} + catch(_fh_) + {_fh_ = caml_wrap_exception(_fh_); + if(_fh_ !== Not_found)throw _fh_; + var _cV_=cst_tmp} + function quote(s) + {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0); + add_char(b,39); + var _ff_=l - 1 | 0,_fe_=0; + if(! (_ff_ < 0)) + {var i=_fe_; + for(;;) + {if(39 === caml_string_get(s,i)) + add_string(b,quotequote); + else + add_char(b,caml_string_get(s,i)); + var _fg_=i + 1 | 0; + if(_ff_ !== i){var i=_fg_;continue} + break}} + add_char(b,39); + return contents(b)} + function quote_command(cmd,stdin,stdout,stderr,args) + {if(stderr) + var + f=stderr[1], + _e__=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), + _e$_=_e__; + else + var _e$_=cst$109; + if(stdout) + var f$0=stdout[1],_fa_=cat(cst$104,quote(f$0)); + else + var _fa_=cst$108; + var _fb_=cat(_fa_,_e$_); + if(stdin) + var f$1=stdin[1],_fc_=cat(cst$105,quote(f$1)); + else + var _fc_=cst$107; + var _fd_=cat(_fc_,_fb_); + return cat(concat$1(cst$106,map$4(quote,[0,cmd,args])),_fd_)} + function basename(_e9_) + {return generic_basename(is_dir_sep,current_dir_name,_e9_)} + function dirname(_e8_) + {return generic_dirname(is_dir_sep,current_dir_name,_e8_)} + var + Unix= + [0, + null$0, + current_dir_name, + parent_dir_name, + dir_sep, + is_dir_sep, + is_relative, + is_implicit, + check_suffix, + chop_suffix_opt, + _cV_, + quote, + quote_command, + basename, + dirname]; + function is_dir_sep$0(s,i) + {var c=caml_string_get(s,i),_e5_=47 === c?1:0; + if(_e5_) + var _e6_=_e5_; + else + var _e7_=92 === c?1:0,_e6_=_e7_ || (58 === c?1:0); + return _e6_} + function is_relative$0(n) + {var + _eZ_=caml_ml_string_length(n) < 1?1:0, + _e0_=_eZ_ || (47 !== caml_string_get(n,0)?1:0); + if(_e0_) + {var + _e1_=caml_ml_string_length(n) < 1?1:0, + _e2_=_e1_ || (92 !== caml_string_get(n,0)?1:0); + if(_e2_) + var + _e3_=caml_ml_string_length(n) < 2?1:0, + _e4_=_e3_ || (58 !== caml_string_get(n,1)?1:0); + else + var _e4_=_e2_} + else + var _e4_=_e0_; + return _e4_} + function is_implicit$0(n) + {var _eQ_=is_relative$0(n); + if(_eQ_) + {var + _eR_=caml_ml_string_length(n) < 2?1:0, + _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$113); + if(_eS_) + {var + _eT_=caml_ml_string_length(n) < 2?1:0, + _eU_=_eT_ || caml_string_notequal(sub$0(n,0,2),cst$112); + if(_eU_) + {var + _eV_=caml_ml_string_length(n) < 3?1:0, + _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$111); + if(_eW_) + var + _eX_=caml_ml_string_length(n) < 3?1:0, + _eY_=_eX_ || caml_string_notequal(sub$0(n,0,3),cst$110); + else + var _eY_=_eW_} + else + var _eY_=_eU_} + else + var _eY_=_eS_} + else + var _eY_=_eQ_; + return _eY_} + function check_suffix$0(name,suff) + {var _eN_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; + if(_eN_) + var + s= + sub$0 + (name, + caml_ml_string_length(name) - caml_ml_string_length(suff) | 0, + caml_ml_string_length(suff)), + _eO_=lowercase_ascii$1(suff), + _eP_=caml_string_equal(lowercase_ascii$1(s),_eO_); + else + var _eP_=_eN_; + return _eP_} + function chop_suffix_opt$0(suffix,filename) + {var + len_s=caml_ml_string_length(suffix), + len_f=caml_ml_string_length(filename); + if(len_s <= len_f) + {var + r=sub$0(filename,len_f - len_s | 0,len_s), + _eM_=lowercase_ascii$1(suffix); + return caml_string_equal(lowercase_ascii$1(r),_eM_) + ?[0,sub$0(filename,0,len_f - len_s | 0)] + :0} + return 0} + try + {var _c2_=caml_sys_getenv(cst_TEMP),temp_dir_name=_c2_} + catch(_eL_) + {_eL_ = caml_wrap_exception(_eL_); + if(_eL_ !== Not_found)throw _eL_; + var temp_dir_name=cst$114} + function quote$0(s) + {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0); + add_char(b,34); + function add_bs(n) + {var _eJ_=1; + if(! (n < 1)) + {var j=_eJ_; + for(;;) + {add_char(b,92); + var _eK_=j + 1 | 0; + if(n !== j){var j=_eK_;continue} + break}} + return 0} + function loop$0(counter,i) + {var i$0=i; + for(;;) + {if(i$0 === l)return add_char(b,34); + var c=caml_string_get(s,i$0); + if(34 === c) + {var _eH_=0; + if(counter < 50) + {var counter$1=counter + 1 | 0; + return loop_bs(counter$1,_eH_,i$0)} + return caml_trampoline_return(loop_bs,[0,_eH_,i$0])} + if(92 === c) + {var _eI_=0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return loop_bs(counter$0,_eI_,i$0)} + return caml_trampoline_return(loop_bs,[0,_eI_,i$0])} + add_char(b,c); + var i$1=i$0 + 1 | 0,i$0=i$1; + continue}} + function loop_bs(counter,n,i) + {var n$0=n,i$0=i; + for(;;) + {if(i$0 === l){add_char(b,34);return add_bs(n$0)} + var match=caml_string_get(s,i$0); + if(34 === match) + {add_bs((2 * n$0 | 0) + 1 | 0); + add_char(b,34); + var _eG_=i$0 + 1 | 0; + if(counter < 50) + {var counter$1=counter + 1 | 0;return loop$0(counter$1,_eG_)} + return caml_trampoline_return(loop$0,[0,_eG_])} + if(92 === match) + {var i$1=i$0 + 1 | 0,n$1=n$0 + 1 | 0,n$0=n$1,i$0=i$1;continue} + add_bs(n$0); + if(counter < 50) + {var counter$0=counter + 1 | 0;return loop$0(counter$0,i$0)} + return caml_trampoline_return(loop$0,[0,i$0])}} + function loop(i){return caml_trampoline(loop$0(0,i))} + loop(0); + return contents(b)} + function quote_cmd_filename(f) + {if(! contains$0(f,34) && ! contains$0(f,37)) + return contains$0(f,32)?cat(cst$116,cat(f,cst$115)):f; + return failwith(cat(cst_Filename_quote_command_bad,f))} + function quote_command$0(cmd,stdin,stdout,stderr,args) + {if(stderr) + var + f=stderr[1], + _ex_= + caml_equal(stderr,stdout) + ?cst_2_1$0 + :cat(cst_2$0,quote_cmd_filename(f)), + _ey_=_ex_; + else + var _ey_=cst$125; + var _ez_=[0,_ey_,_cW_]; + if(stdout) + var f$0=stdout[1],_eA_=cat(cst$117,quote_cmd_filename(f$0)); + else + var _eA_=cst$124; + var _eB_=[0,_eA_,_ez_]; + if(stdin) + var f$1=stdin[1],_eC_=cat(cst$118,quote_cmd_filename(f$1)); + else + var _eC_=cst$123; + var + s=concat$1(cst$119,map$4(quote$0,args)), + b=create$2(caml_ml_string_length(s) + 20 | 0), + _eD_=[0,_eC_,_eB_]; + iter$4 + (function(c) + {var switch$0=0; + if(62 <= c) + {var _eF_=c - 63 | 0; + if(60 < _eF_ >>> 0) + {if(! (62 <= _eF_))switch$0 = 1} + else + if(31 === _eF_)switch$0 = 1} + else + if(42 <= c) + {if(60 === c)switch$0 = 1} + else + if(33 <= c) + switch(c - 33 | 0) + {case 2:case 3:case 6:break;default:switch$0 = 1} + return switch$0?(add_char(b,94),add_char(b,c)):add_char(b,c)}, + s); + var _eE_=[0,cst$120,[0,contents(b),_eD_]]; + return concat$1(cst$122,[0,cst$121,[0,quote_cmd_filename(cmd),_eE_]])} + function drive_and_path(s) + {var _et_=2 <= caml_ml_string_length(s)?1:0; + if(_et_) + {var param=caml_string_get(s,0),switch$0=0; + if(91 <= param) + {if(! (25 < param - 97 >>> 0))switch$0 = 1} + else + if(65 <= param)switch$0 = 1; + var _eu_=switch$0?1:0,_ev_=_eu_?58 === caml_string_get(s,1)?1:0:_eu_} + else + var _ev_=_et_; + if(_ev_) + {var _ew_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0); + return [0,sub$0(s,0,2),_ew_]} + return [0,cst$126,s]} + function dirname$0(s) + {var + match=drive_and_path(s), + path=match[2], + drive=match[1], + dir=generic_dirname(is_dir_sep$0,current_dir_name$0,path); + return cat(drive,dir)} + function basename$0(s) + {var match=drive_and_path(s),path=match[2]; + return generic_basename(is_dir_sep$0,current_dir_name$0,path)} + var + Win32= + [0, + null$1, + current_dir_name$0, + parent_dir_name$0, + dir_sep$0, + is_dir_sep$0, + is_relative$0, + is_implicit$0, + check_suffix$0, + chop_suffix_opt$0, + temp_dir_name, + quote$0, + quote_command$0, + basename$0, + dirname$0]; + function basename$1(_es_) + {return generic_basename(is_dir_sep$0,current_dir_name$1,_es_)} + function dirname$1(_er_) + {return generic_dirname(is_dir_sep$0,current_dir_name$1,_er_)} + var + Cygwin= + [0, + null$2, + current_dir_name$1, + parent_dir_name$1, + dir_sep$1, + is_dir_sep$0, + is_relative$0, + is_implicit$0, + check_suffix$0, + chop_suffix_opt$0, + _cV_, + quote, + quote_command, + basename$1, + dirname$1], + Sysdeps= + caml_string_notequal(os_type,cst_Cygwin) + ?caml_string_notequal(os_type,cst_Win32)?Unix:Win32 + :Cygwin, + null$3=Sysdeps[1], + current_dir_name$2=Sysdeps[2], + parent_dir_name$2=Sysdeps[3], + dir_sep$2=Sysdeps[4], + is_dir_sep$1=Sysdeps[5], + is_relative$1=Sysdeps[6], + is_implicit$1=Sysdeps[7], + check_suffix$1=Sysdeps[8], + chop_suffix_opt$1=Sysdeps[9], + temp_dir_name$0=Sysdeps[10], + quote$1=Sysdeps[11], + quote_command$1=Sysdeps[12], + basename$2=Sysdeps[13], + dirname$2=Sysdeps[14]; + function concat$4(dirname,filename) + {var l=caml_ml_string_length(dirname); + if(0 !== l && ! is_dir_sep$1(dirname,l - 1 | 0)) + return cat(dirname,cat(dir_sep$2,filename)); + return cat(dirname,filename)} + function chop_suffix(name,suff) + {return check_suffix$1(name,suff) + ?sub$0 + (name, + 0, + caml_ml_string_length(name) - caml_ml_string_length(suff) | 0) + :invalid_arg(cst_Filename_chop_suffix)} + function extension_len(name) + {var i$4=caml_ml_string_length(name) - 1 | 0,i$1=i$4; + for(;;) + {if(0 <= i$1 && ! is_dir_sep$1(name,i$1)) + {if(46 === caml_string_get(name,i$1)) + {var i$2=i$1 - 1 | 0,i=i$2; + for(;;) + {if(0 <= i && ! is_dir_sep$1(name,i)) + {if(46 === caml_string_get(name,i)) + {var i$0=i - 1 | 0,i=i$0;continue} + return caml_ml_string_length(name) - i$1 | 0} + return 0}} + var i$3=i$1 - 1 | 0,i$1=i$3; + continue} + return 0}} + function extension(name) + {var l=extension_len(name); + return 0 === l?cst$127:sub$0(name,caml_ml_string_length(name) - l | 0,l)} + function chop_extension(name) + {var l=extension_len(name); + return 0 === l + ?invalid_arg(cst_Filename_chop_extension) + :sub$0(name,0,caml_ml_string_length(name) - l | 0)} + function remove_extension(name) + {var l=extension_len(name); + return 0 === l?name:sub$0(name,0,caml_ml_string_length(name) - l | 0)} + var prng$0=[246,function(_eq_){return caml_call1(_ci_[2],0)}]; + function temp_file_name(temp_dir,prefix,suffix) + {var + _eo_=caml_obj_tag(prng$0), + _ep_= + 250 === _eo_?prng$0[1]:246 === _eo_?force_lazy_block(prng$0):prng$0, + rnd=caml_call1(_ci_[4],_ep_) & 16777215; + return concat$4(temp_dir,caml_call3(sprintf(_cX_),prefix,rnd,suffix))} + var current_temp_dir_name=[0,temp_dir_name$0]; + function set_temp_dir_name(s){current_temp_dir_name[1] = s;return 0} + function get_temp_dir_name(param){return current_temp_dir_name[1]} + function temp_file(opt,prefix,suffix) + {if(opt) + var sth=opt[1],temp_dir=sth; + else + var temp_dir=current_temp_dir_name[1]; + function try_name(counter) + {var counter$0=counter; + for(;;) + {var name=temp_file_name(temp_dir,prefix,suffix); + try + {runtime.caml_sys_close(caml_sys_open(name,_cY_,384));return name} + catch(e) + {e = caml_wrap_exception(e); + if(e[1] === Sys_error) + {if(1000 <= counter$0)throw e; + var counter$1=counter$0 + 1 | 0,counter$0=counter$1; + continue} + throw e}}} + return try_name(0)} + function open_temp_file(opt,_em_,_el_,prefix,suffix) + {if(opt)var sth=opt[1],mode=sth;else var mode=_cZ_; + if(_em_)var sth$0=_em_[1],perms=sth$0;else var perms=384; + if(_el_) + var sth$1=_el_[1],temp_dir=sth$1; + else + var temp_dir=current_temp_dir_name[1]; + function try_name(counter) + {var counter$0=counter; + for(;;) + {var name=temp_file_name(temp_dir,prefix,suffix); + try + {var _en_=[0,name,open_gen([0,1,[0,3,[0,5,mode]]],perms,name)]; + return _en_} + catch(e) + {e = caml_wrap_exception(e); + if(e[1] === Sys_error) + {if(1000 <= counter$0)throw e; + var counter$1=counter$0 + 1 | 0,counter$0=counter$1; + continue} + throw e}}} + return try_name(0)} + var + Stdlib_Filename= + [0, + current_dir_name$2, + parent_dir_name$2, + dir_sep$2, + concat$4, + is_relative$1, + is_implicit$1, + check_suffix$1, + chop_suffix, + chop_suffix_opt$1, + extension, + remove_extension, + chop_extension, + basename$2, + dirname$2, + null$3, + temp_file, + open_temp_file, + get_temp_dir_name, + set_temp_dir_name, + temp_dir_name$0, + quote$1, + quote_command$1]; + caml_register_global(826,Stdlib_Filename,"Stdlib__Filename"); + function add$4(x,y){return [254,x[1] + y[1],x[2] + y[2]]} + function sub$4(x,y){return [254,x[1] - y[1],x[2] - y[2]]} + function neg(x){return [254,- x[1],- x[2]]} + function conj(x){return [254,x[1],- x[2]]} + function mul(x,y) + {return [254,x[1] * y[1] - x[2] * y[2],x[1] * y[2] + x[2] * y[1]]} + function div(x,y) + {if(Math.abs(y[2]) <= Math.abs(y[1])) + {var r=y[2] / y[1],d=y[1] + r * y[2]; + return [254,(x[1] + r * x[2]) / d,(x[2] - r * x[1]) / d]} + var r$0=y[1] / y[2],d$0=y[2] + r$0 * y[1]; + return [254,(r$0 * x[1] + x[2]) / d$0,(r$0 * x[2] - x[1]) / d$0]} + function inv(x){return div(one$4,x)} + function norm2(x){return x[1] * x[1] + x[2] * x[2]} + function norm(x) + {var r=Math.abs(x[1]),i=Math.abs(x[2]); + if(r == 0.)return i; + if(i == 0.)return r; + if(i <= r){var q=i / r;return r * Math.sqrt(1. + q * q)} + var q$0=r / i; + return i * Math.sqrt(1. + q$0 * q$0)} + function arg(x){return Math.atan2(x[2],x[1])} + function polar(n,a){return [254,Math.cos(a) * n,Math.sin(a) * n]} + function sqrt(x) + {if(x[1] == 0. && x[2] == 0.)return _c0_; + var r=Math.abs(x[1]),i=Math.abs(x[2]); + if(i <= r) + var + q=i / r, + w=Math.sqrt(r) * Math.sqrt(0.5 * (1. + Math.sqrt(1. + q * q))); + else + var + q$0=r / i, + w=Math.sqrt(i) * Math.sqrt(0.5 * (q$0 + Math.sqrt(1. + q$0 * q$0))); + if(0. <= x[1])return [254,w,0.5 * x[2] / w]; + var w$0=0. <= x[2]?w:- w; + return [254,0.5 * i / w,w$0]} + function exp(x) + {var e=Math.exp(x[1]);return [254,e * Math.cos(x[2]),e * Math.sin(x[2])]} + function log(x) + {var _ek_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_ek_]} + function pow(x,y){return exp(mul(y,log(x)))} + var + Stdlib_Complex= + [0, + zero$4, + one$4, + i, + neg, + conj, + add$4, + sub$4, + mul, + inv, + div, + sqrt, + norm2, + norm, + arg, + polar, + exp, + log, + pow]; + caml_register_global(827,Stdlib_Complex,"Stdlib__Complex"); + var + Stdlib_ArrayLabels= + [0, + make_float, + init$3, + create_matrix, + create_matrix, + append$1, + concat$2, + sub$1, + copy$1, + fill$0, + blit$1, + to_list$1, + of_list, + iter$5, + iteri$3, + map$7, + mapi$3, + fold_left$3, + fold_left_map$0, + fold_right$2, + iter2$1, + map2$1, + for_all$3, + exists$3, + for_all2$1, + exists2$1, + mem$0, + memq$0, + find_opt$0, + find_map$1, + split$0, + combine$0, + sort, + fast_sort$0, + fast_sort$0, + to_seq$4, + to_seqi$1, + of_seq$2, + Floatarray]; + caml_register_global(828,Stdlib_ArrayLabels,"Stdlib__ArrayLabels"); + var + Stdlib_ListLabels= + [0, + length$1, + compare_lengths, + compare_length_with, + cons$0, + hd, + tl, + nth, + nth_opt, + rev, + init$0, + append, + rev_append, + flatten, + flatten, + equal$6, + compare$6, + iter$2, + iteri$0, + map$4, + mapi$0, + rev_map, + filter_map$0, + concat_map, + fold_left_map, + fold_left$0, + fold_right, + iter2$0, + map2$0, + rev_map2, + fold_left2$0, + fold_right2, + for_all$0, + exists$0, + for_all2$0, + exists2$0, + mem, + memq, + find$0, + find_opt, + find_map$0, + find_all, + find_all, + filteri, + partition$0, + partition_map$0, + assoc, + assoc_opt, + assq, + assq_opt, + mem_assoc, + mem_assq, + remove_assoc, + remove_assq, + split, + combine, + fast_sort, + fast_sort, + fast_sort, + sort_uniq, + merge, + to_seq$1, + of_seq]; + caml_register_global(829,Stdlib_ListLabels,"Stdlib__ListLabels"); + var + Stdlib_BytesLabels= + [0, + make$0, + init$1, + empty$0, + copy, + to_bytes, + of_bytes, + sub, + sub_string, + extend, + fill, + blit, + blit$0, + concat$0, + cat$0, + iter$3, + iteri$1, + map$5, + mapi$1, + fold_left$1, + fold_right$0, + for_all$1, + exists$1, + trim, + escaped$0, + index, + index_opt, + rindex, + rindex_opt, + index_from, + index_from_opt, + rindex_from, + rindex_from_opt, + contains, + contains_from, + rcontains_from, + uppercase$0, + lowercase$0, + capitalize, + uncapitalize, + uppercase_ascii$0, + lowercase_ascii$0, + capitalize_ascii, + uncapitalize_ascii, + compare$8, + equal$8, + starts_with, + ends_with, + unsafe_to_string, + unsafe_of_string, + split_on_char, + to_seq$2, + to_seqi, + of_seq$0, + get_utf_8_uchar, + set_utf_8_uchar, + is_valid_utf_8, + get_utf_16be_uchar, + set_utf_16be_uchar, + is_valid_utf_16be, + get_utf_16le_uchar, + set_utf_16le_uchar, + is_valid_utf_16le, + get_uint8, + get_int8, + get_uint16_ne, + get_uint16_be, + get_uint16_le, + get_int16_ne, + get_int16_be, + get_int16_le, + get_int32_ne, + get_int32_be, + get_int32_le, + get_int64_ne, + get_int64_be, + get_int64_le, + set_uint8, + set_int8, + set_uint16_ne, + set_int16_be, + set_int16_le, + set_int16_ne, + set_int16_be, + set_int16_le, + set_int32_ne, + set_int32_be, + set_int32_le, + set_int64_ne, + set_int64_be, + set_int64_le]; + caml_register_global(830,Stdlib_BytesLabels,"Stdlib__BytesLabels"); + var + Stdlib_StringLabels= + [0, + make$1, + init$2, + empty$1, + of_bytes, + to_bytes, + concat$1, + cat, + equal$9, + compare$9, + starts_with$0, + ends_with$0, + contains_from$0, + rcontains_from$0, + contains$0, + sub$0, + split_on_char$0, + map$6, + mapi$2, + fold_left$2, + fold_right$1, + for_all$2, + exists$2, + trim$0, + escaped$1, + uppercase_ascii$1, + lowercase_ascii$1, + capitalize_ascii$0, + uncapitalize_ascii$0, + iter$4, + iteri$2, + index_from$0, + index_from_opt$0, + rindex_from$0, + rindex_from_opt$0, + index$0, + index_opt$0, + rindex$0, + rindex_opt$0, + to_seq$3, + to_seqi$0, + of_seq$1, + get_utf_8_uchar$0, + is_valid_utf_8$0, + get_utf_16be_uchar$0, + is_valid_utf_16be$0, + get_utf_16le_uchar$0, + is_valid_utf_16le$0, + blit$0, + copy$0, + fill, + uppercase$1, + lowercase$1, + capitalize$0, + uncapitalize$0, + get_uint8$0, + get_int8$0, + get_uint16_ne$0, + get_uint16_be$0, + get_uint16_le$0, + get_int16_ne$0, + get_int16_be$0, + get_int16_le$0, + get_int32_ne$0, + get_int32_be$0, + get_int32_le$0, + get_int64_ne$0, + get_int64_be$0, + get_int64_le$0]; + caml_register_global(831,Stdlib_StringLabels,"Stdlib__StringLabels"); + var Stdlib_MoreLabels=[0,Stdlib_Hashtbl,Stdlib_Map,Stdlib_Set]; + caml_register_global(832,Stdlib_MoreLabels,"Stdlib__MoreLabels"); + var Stdlib_StdLabels=[0]; + caml_register_global(833,Stdlib_StdLabels,"Stdlib__StdLabels"); + var + float32=0, + float64=1, + int8_signed=2, + int8_unsigned=3, + int16_signed=4, + int16_unsigned=5, + int32$1=6, + int64$1=7, + int$2=8, + nativeint$1=9, + complex32=10, + complex64=11, + char$0=12; + function kind_size_in_bytes(param) + {switch(param) + {case 0:return 4; + case 1:return 8; + case 2:return 1; + case 3:return 1; + case 4:return 2; + case 5:return 2; + case 6:return 4; + case 7:return 8; + case 8:return 4; + case 9:return 4; + case 10:return 8; + case 11:return 16; + default:return 1}} + var c_layout=0,fortran_layout=1; + function cloop(arr,idx,f,col,max) + {if(col === idx.length - 1) + return caml_ba_set_generic(arr,idx,caml_call1(f,idx)); + var _ei_=caml_check_bound(max,col)[1 + col] - 1 | 0,_eh_=0; + if(! (_ei_ < 0)) + {var j=_eh_; + for(;;) + {caml_check_bound(idx,col)[1 + col] = j; + cloop(arr,idx,f,col + 1 | 0,max); + var _ej_=j + 1 | 0; + if(_ei_ !== j){var j=_ej_;continue} + break}} + return 0} + function floop(arr,idx,f,col,max) + {if(0 <= col) + {var _ef_=caml_check_bound(max,col)[1 + col],_ee_=1; + if(! (_ef_ < 1)) + {var j=_ee_; + for(;;) + {caml_check_bound(idx,col)[1 + col] = j; + floop(arr,idx,f,col - 1 | 0,max); + var _eg_=j + 1 | 0; + if(_ef_ !== j){var j=_eg_;continue} + break}} + return 0} + return caml_ba_set_generic(arr,idx,caml_call1(f,idx))} + function init$6(kind,layout,dims,f) + {var arr=caml_ba_create(kind,layout,dims),dlen=dims.length - 1; + return 0 === dlen + ?arr + :layout + ?(floop(arr,caml_make_vect(dlen,1),f,dlen - 1 | 0,dims),arr) + :(cloop(arr,caml_make_vect(dlen,0),f,0,dims),arr)} + function dims(a) + {var n=caml_ba_num_dims(a),d=caml_make_vect(n,0),_eb_=n - 1 | 0,_ea_=0; + if(! (_eb_ < 0)) + {var i=_ea_; + for(;;) + {var _ec_=runtime.caml_ba_dim(a,i); + caml_check_bound(d,i)[1 + i] = _ec_; + var _ed_=i + 1 | 0; + if(_eb_ !== i){var i=_ed_;continue} + break}} + return d} + function size_in_bytes(arr) + {var _d$_=fold_left$3(caml_mul,1,dims(arr)); + return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d$_)} + function create$8(kind,layout){return caml_ba_create(kind,layout,[0])} + function get$3(arr){return runtime.caml_ba_get_generic(arr,[0])} + function set$2(arr) + {var _d9_=[0]; + return function(_d__){return caml_ba_set_generic(arr,_d9_,_d__)}} + function size_in_bytes$0(arr) + {return kind_size_in_bytes(caml_ba_kind(arr))} + function of_value(kind,layout,v) + {var a=create$8(kind,layout);caml_call1(set$2(a),v);return a} + function create$9(kind,layout,dim) + {return caml_ba_create(kind,layout,[0,dim])} + function size_in_bytes$1(arr) + {var _d8_=caml_ba_dim_1(arr); + return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d8_)} + function slice(a,n) + {var match=runtime.caml_ba_layout(a); + return match?caml_ba_slice(a,[0,n]):caml_ba_slice(a,[0,n])} + function init$7(kind,layout,dim,f) + {var arr=create$9(kind,layout,dim); + if(layout) + {var _d6_=1; + if(! (dim < 1)) + {var i$0=_d6_; + for(;;) + {caml_ba_set_1(arr,i$0,caml_call1(f,i$0)); + var _d7_=i$0 + 1 | 0; + if(dim !== i$0){var i$0=_d7_;continue} + break}} + return arr} + var _d4_=dim - 1 | 0,_d3_=0; + if(! (_d4_ < 0)) + {var i=_d3_; + for(;;) + {caml_ba_set_1(arr,i,caml_call1(f,i)); + var _d5_=i + 1 | 0; + if(_d4_ !== i){var i=_d5_;continue} + break}} + return arr} + function of_array(kind,layout,data) + {var + ba=create$9(kind,layout,data.length - 1), + ofs=layout?1:0, + _d1_=data.length - 1 - 1 | 0, + _d0_=0; + if(! (_d1_ < 0)) + {var i=_d0_; + for(;;) + {caml_ba_set_1(ba,i + ofs | 0,caml_check_bound(data,i)[1 + i]); + var _d2_=i + 1 | 0; + if(_d1_ !== i){var i=_d2_;continue} + break}} + return ba} + function create$10(kind,layout,dim1,dim2) + {return caml_ba_create(kind,layout,[0,dim1,dim2])} + function size_in_bytes$2(arr) + {var _dY_=caml_ba_dim_2(arr),_dZ_=caml_ba_dim_1(arr); + return caml_mul + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dZ_),_dY_)} + function slice_left(a,n){return caml_ba_slice(a,[0,n])} + function slice_right(a,n){return caml_ba_slice(a,[0,n])} + function init$8(kind,layout,dim1,dim2,f) + {var arr=create$10(kind,layout,dim1,dim2); + if(layout) + {var _dU_=1; + if(! (dim2 < 1)) + {var j$0=_dU_; + for(;;) + {var _dV_=1; + if(! (dim1 < 1)) + {var i$0=_dV_; + for(;;) + {caml_ba_set_2(arr,i$0,j$0,caml_call2(f,i$0,j$0)); + var _dX_=i$0 + 1 | 0; + if(dim1 !== i$0){var i$0=_dX_;continue} + break}} + var _dW_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dW_;continue} + break}} + return arr} + var _dP_=dim1 - 1 | 0,_dO_=0; + if(! (_dP_ < 0)) + {var i=_dO_; + for(;;) + {var _dR_=dim2 - 1 | 0,_dQ_=0; + if(! (_dR_ < 0)) + {var j=_dQ_; + for(;;) + {caml_ba_set_2(arr,i,j,caml_call2(f,i,j)); + var _dT_=j + 1 | 0; + if(_dR_ !== j){var j=_dT_;continue} + break}} + var _dS_=i + 1 | 0; + if(_dP_ !== i){var i=_dS_;continue} + break}} + return arr} + function of_array$0(kind,layout,data) + {var + dim1=data.length - 1, + dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1, + ba=create$10(kind,layout,dim1,dim2), + ofs=layout?1:0, + _dJ_=dim1 - 1 | 0, + _dI_=0; + if(! (_dJ_ < 0)) + {var i=_dI_; + for(;;) + {var row=caml_check_bound(data,i)[1 + i]; + if(row.length - 1 !== dim2) + invalid_arg(cst_Bigarray_Array2_of_array_n); + var _dL_=dim2 - 1 | 0,_dK_=0; + if(! (_dL_ < 0)) + {var j=_dK_; + for(;;) + {caml_ba_set_2 + (ba,i + ofs | 0,j + ofs | 0,caml_check_bound(row,j)[1 + j]); + var _dN_=j + 1 | 0; + if(_dL_ !== j){var j=_dN_;continue} + break}} + var _dM_=i + 1 | 0; + if(_dJ_ !== i){var i=_dM_;continue} + break}} + return ba} + function create$11(kind,layout,dim1,dim2,dim3) + {return caml_ba_create(kind,layout,[0,dim1,dim2,dim3])} + function size_in_bytes$3(arr) + {var + _dF_=runtime.caml_ba_dim_3(arr), + _dG_=caml_ba_dim_2(arr), + _dH_=caml_ba_dim_1(arr); + return caml_mul + (caml_mul + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dH_),_dG_), + _dF_)} + function slice_left_1(a,n,m){return caml_ba_slice(a,[0,n,m])} + function slice_right_1(a,n,m){return caml_ba_slice(a,[0,n,m])} + function slice_left_2(a,n){return caml_ba_slice(a,[0,n])} + function slice_right_2(a,n){return caml_ba_slice(a,[0,n])} + function init$9(kind,layout,dim1,dim2,dim3,f) + {var arr=create$11(kind,layout,dim1,dim2,dim3); + if(layout) + {var _dz_=1; + if(! (dim3 < 1)) + {var k$0=_dz_; + for(;;) + {var _dA_=1; + if(! (dim2 < 1)) + {var j$0=_dA_; + for(;;) + {var _dC_=1; + if(! (dim1 < 1)) + {var i$0=_dC_; + for(;;) + {caml_ba_set_3(arr,i$0,j$0,k$0,caml_call3(f,i$0,j$0,k$0)); + var _dE_=i$0 + 1 | 0; + if(dim1 !== i$0){var i$0=_dE_;continue} + break}} + var _dD_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dD_;continue} + break}} + var _dB_=k$0 + 1 | 0; + if(dim3 !== k$0){var k$0=_dB_;continue} + break}} + return arr} + var _dr_=dim1 - 1 | 0,_dq_=0; + if(! (_dr_ < 0)) + {var i=_dq_; + for(;;) + {var _dt_=dim2 - 1 | 0,_ds_=0; + if(! (_dt_ < 0)) + {var j=_ds_; + for(;;) + {var _dw_=dim3 - 1 | 0,_dv_=0; + if(! (_dw_ < 0)) + {var k=_dv_; + for(;;) + {caml_ba_set_3(arr,i,j,k,caml_call3(f,i,j,k)); + var _dy_=k + 1 | 0; + if(_dw_ !== k){var k=_dy_;continue} + break}} + var _dx_=j + 1 | 0; + if(_dt_ !== j){var j=_dx_;continue} + break}} + var _du_=i + 1 | 0; + if(_dr_ !== i){var i=_du_;continue} + break}} + return arr} + function of_array$1(kind,layout,data) + {var + dim1=data.length - 1, + dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1, + dim3= + 0 === dim2 + ?0 + :caml_check_bound(caml_check_bound(data,0)[1],0)[1].length - 1, + ba=create$11(kind,layout,dim1,dim2,dim3), + ofs=layout?1:0, + _di_=dim1 - 1 | 0, + _dh_=0; + if(! (_di_ < 0)) + {var i=_dh_; + for(;;) + {var row=caml_check_bound(data,i)[1 + i]; + if(row.length - 1 !== dim2) + invalid_arg(cst_Bigarray_Array3_of_array_n); + var _dk_=dim2 - 1 | 0,_dj_=0; + if(! (_dk_ < 0)) + {var j=_dj_; + for(;;) + {var col=caml_check_bound(row,j)[1 + j]; + if(col.length - 1 !== dim3) + invalid_arg(cst_Bigarray_Array3_of_array_n$0); + var _dn_=dim3 - 1 | 0,_dm_=0; + if(! (_dn_ < 0)) + {var k=_dm_; + for(;;) + {caml_ba_set_3 + (ba, + i + ofs | 0, + j + ofs | 0, + k + ofs | 0, + caml_check_bound(col,k)[1 + k]); + var _dp_=k + 1 | 0; + if(_dn_ !== k){var k=_dp_;continue} + break}} + var _do_=j + 1 | 0; + if(_dk_ !== j){var j=_do_;continue} + break}} + var _dl_=i + 1 | 0; + if(_di_ !== i){var i=_dl_;continue} + break}} + return ba} + function array0_of_genarray(a) + {return 0 === caml_ba_num_dims(a) + ?a + :invalid_arg(cst_Bigarray_array0_of_genarra)} + function array1_of_genarray(a) + {return 1 === caml_ba_num_dims(a) + ?a + :invalid_arg(cst_Bigarray_array1_of_genarra)} + function array2_of_genarray(a) + {return 2 === caml_ba_num_dims(a) + ?a + :invalid_arg(cst_Bigarray_array2_of_genarra)} + function array3_of_genarray(a) + {return 3 === caml_ba_num_dims(a) + ?a + :invalid_arg(cst_Bigarray_array3_of_genarra)} + function reshape_0(a){return caml_ba_reshape(a,[0])} + function reshape_1(a,dim1){return caml_ba_reshape(a,[0,dim1])} + function reshape_2(a,dim1,dim2){return caml_ba_reshape(a,[0,dim1,dim2])} + function reshape_3(a,dim1,dim2,dim3) + {return caml_ba_reshape(a,[0,dim1,dim2,dim3])} + var + Stdlib_Bigarray= + [0, + float32, + float64, + complex32, + complex64, + int8_signed, + int8_unsigned, + int16_signed, + int16_unsigned, + int$2, + int32$1, + int64$1, + nativeint$1, + char$0, + kind_size_in_bytes, + c_layout, + fortran_layout, + [0,init$6,dims,size_in_bytes], + [0, + create$8, + of_value, + caml_ba_change_layout, + size_in_bytes$0, + get$3, + set$2, + of_value], + [0, + create$9, + init$7, + caml_ba_change_layout, + size_in_bytes$1, + slice, + of_array], + [0, + create$10, + init$8, + caml_ba_change_layout, + size_in_bytes$2, + slice_left, + slice_right, + of_array$0], + [0, + create$11, + init$9, + caml_ba_change_layout, + size_in_bytes$3, + slice_left_1, + slice_right_1, + slice_left_2, + slice_right_2, + of_array$1], + array0_of_genarray, + array1_of_genarray, + array2_of_genarray, + array3_of_genarray, + caml_ba_reshape, + reshape_0, + reshape_1, + reshape_2, + reshape_3]; + caml_register_global(834,Stdlib_Bigarray,"Stdlib__Bigarray"); + function with_open(openfun,s,f) + {var ic=caml_call1(openfun,s); + function _dg_(param){return caml_call1(f,ic)} + return protect(function(param){return close_noerr$0(ic)},_dg_)} + function with_open_bin(s,f){return with_open(open_bin$0,s,f)} + function with_open_text(s,f){return with_open(open_text$0,s,f)} + function with_open_gen(flags,perm,s,f) + {return with_open(function(_df_){return open_gen$0(flags,perm,_df_)},s,f)} + var seek=_m_[4],pos=_m_[5],length$11=_m_[6]; + function input_char$0(ic) + {try + {var c=caml_ml_input_char(ic)} + catch(_de_) + {_de_ = caml_wrap_exception(_de_); + if(_de_ === End_of_file)return 0; + throw _de_} + return [0,c]} + function input_byte$0(ic) + {try + {var n=caml_ml_input_char(ic)} + catch(_dd_) + {_dd_ = caml_wrap_exception(_dd_); + if(_dd_ === End_of_file)return 0; + throw _dd_} + return [0,n]} + function input_line$0(ic) + {try + {var s=input_line(ic)} + catch(_dc_) + {_dc_ = caml_wrap_exception(_dc_); + if(_dc_ === End_of_file)return 0; + throw _dc_} + return [0,s]} + function really_input$0(ic,buf,pos,len) + {try + {really_input(ic,buf,pos,len);return _c1_} + catch(_db_) + {_db_ = caml_wrap_exception(_db_); + if(_db_ === End_of_file)return 0; + throw _db_}} + function really_input_string$0(ic,len) + {try + {var s=really_input_string(ic,len)} + catch(_da_) + {_da_ = caml_wrap_exception(_da_); + if(_da_ === End_of_file)return 0; + throw _da_} + return [0,s]} + function read_upto(ic,buf,ofs,len) + {var ofs$0=ofs,len$0=len; + for(;;) + {if(0 !== len$0) + {var r=input(ic,buf,ofs$0,len$0); + if(0 !== r) + {var + len$1=len$0 - r | 0, + ofs$1=ofs$0 + r | 0, + ofs$0=ofs$1, + len$0=len$1; + continue}} + return ofs$0 - ofs | 0}} + function ensure(buf,ofs,n) + {var len=caml_ml_bytes_length(buf); + if((ofs + n | 0) <= len)return buf; + var new_len=[0,len]; + for(;;) + {if(new_len[1] < (ofs + n | 0)) + {new_len[1] = (2 * new_len[1] | 0) + 1 | 0;continue} + var + new_len$0=new_len[1], + new_len$1= + new_len$0 <= max_string_length + ?new_len$0 + :ofs < max_string_length + ?max_string_length + :failwith(cst_In_channel_input_all_chann), + new_buf=caml_create_bytes(new_len$1); + blit(buf,0,new_buf,0,ofs); + return new_buf}} + function input_all(ic) + {var chunk_size=65536; + try + {var + _c8_=caml_ml_pos_in(ic), + _c9_=caml_ml_channel_size(ic) - _c8_ | 0, + initial_size=_c9_} + catch(_c$_) + {_c$_ = caml_wrap_exception(_c$_); + if(_c$_[1] !== Sys_error)throw _c$_; + var initial_size=-1} + var + initial_size$0=0 <= initial_size?initial_size:chunk_size, + initial_size$1= + initial_size$0 <= max_string_length?initial_size$0:max_string_length, + buf=caml_create_bytes(initial_size$1), + nread=read_upto(ic,buf,0,initial_size$1); + if(nread < initial_size$1)return sub_string(buf,0,nread); + try + {var c=caml_ml_input_char(ic)} + catch(_c__) + {_c__ = caml_wrap_exception(_c__); + if(_c__ === End_of_file)return caml_string_of_bytes(buf); + throw _c__} + function loop(buf,ofs) + {var buf$0=buf,ofs$0=ofs; + for(;;) + {var + buf$1=ensure(buf$0,ofs$0,chunk_size), + rem=caml_ml_bytes_length(buf$1) - ofs$0 | 0, + r=read_upto(ic,buf$1,ofs$0,rem); + if(r < rem)return sub_string(buf$1,0,ofs$0 + r | 0); + var ofs$1=ofs$0 + rem | 0,buf$0=buf$1,ofs$0=ofs$1; + continue}} + var buf$0=ensure(buf,nread,65537); + caml_bytes_set(buf$0,nread,c); + return loop(buf$0,nread + 1 | 0)} + var + Stdlib_In_channel= + [0, + stdin, + open_bin$0, + open_text$0, + open_gen$0, + with_open_bin, + with_open_text, + with_open_gen, + seek, + pos, + length$11, + close$0, + close_noerr$0, + input_char$0, + input_byte$0, + input_line$0, + input, + really_input$0, + really_input_string$0, + input_all, + set_binary_mode]; + caml_register_global(835,Stdlib_In_channel,"Stdlib__In_channel"); + function with_open$0(openfun,s,f) + {var oc=caml_call1(openfun,s); + function _c7_(param){return caml_call1(f,oc)} + return protect(function(param){return close_noerr(oc)},_c7_)} + function with_open_bin$0(s,f){return with_open$0(open_bin,s,f)} + function with_open_text$0(s,f){return with_open$0(open_text,s,f)} + function with_open_gen$0(flags,perm,s,f) + {return with_open$0(function(_c6_){return open_gen(flags,perm,_c6_)},s,f)} + var + seek$0=_m_[1], + pos$0=_m_[2], + length$12=_m_[3], + Stdlib_Out_channel= + [0, + stdout, + stderr, + open_bin, + open_text, + open_gen, + with_open_bin$0, + with_open_text$0, + with_open_gen$0, + seek$0, + pos$0, + length$12, + close, + close_noerr, + flush, + flush_all, + output_char, + output_byte, + output_string, + output_bytes, + output, + output_substring, + set_binary_mode$0, + runtime.caml_ml_set_buffered, + runtime.caml_ml_is_buffered]; + caml_register_global(836,Stdlib_Out_channel,"Stdlib__Out_channel"); + return} + (globalThis)); + + +//# 1 "../../.js/dates_calc/dates_calc.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_mul=runtime.caml_mul, + caml_register_global=runtime.caml_register_global, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call5(f,a0,a1,a2,a3,a4) + {return f.length == 5 + ?f(a0,a1,a2,a3,a4) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} + var + global_data=runtime.caml_get_global_data(), + cst_Dates_calc_Dates_InvalidDa= + caml_string_of_jsbytes("Dates_calc.Dates.InvalidDate"), + cst_Dates_calc_Dates_Ambiguous= + caml_string_of_jsbytes("Dates_calc.Dates.AmbiguousComputation"), + Assert_failure=global_data.Assert_failure, + Stdlib_Format=global_data.Stdlib__Format, + Stdlib_Int=global_data.Stdlib__Int, + Dates_calc=[0]; + caml_register_global(10,Dates_calc,"Dates_calc"); + var + InvalidDate=[248,cst_Dates_calc_Dates_InvalidDa,caml_fresh_oo_id(0)], + AmbiguousComputation= + [248,cst_Dates_calc_Dates_Ambiguous,caml_fresh_oo_id(0)], + _h_=[0,caml_string_of_jsbytes("lib/dates.ml"),230,2], + _g_=[0,caml_string_of_jsbytes("lib/dates.ml"),226,2], + _f_= + [0, + [4,0,[0,2,4],0,[12,45,[4,0,[0,2,2],0,[12,45,[4,0,[0,2,2],0,0]]]]], + caml_string_of_jsbytes("%04d-%02d-%02d")], + _d_=[0,caml_string_of_jsbytes("lib/dates.ml"),123,2], + _e_=[0,caml_string_of_jsbytes("lib/dates.ml"),124,2], + _b_=[0,caml_string_of_jsbytes("lib/dates.ml"),109,2], + _c_=[0,caml_string_of_jsbytes("lib/dates.ml"),110,2], + _a_= + [0, + [12, + 91, + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(" years, "), + [4, + 0, + 0, + 0, + [11, + caml_string_of_jsbytes(" months, "), + [4,0,0,0,[11,caml_string_of_jsbytes(" days]"),0]]]]]]], + caml_string_of_jsbytes("[%d years, %d months, %d days]")]; + function format_period(fmt,p) + {return caml_call5(Stdlib_Format[129],fmt,_a_,p[1],p[2],p[3])} + function make_period(years,months,days){return [0,years,months,days]} + function add_periods(d1,d2) + {return [0,d1[1] + d2[1] | 0,d1[2] + d2[2] | 0,d1[3] + d2[3] | 0]} + function sub_periods(d1,d2) + {return [0,d1[1] - d2[1] | 0,d1[2] - d2[2] | 0,d1[3] - d2[3] | 0]} + function mul_period(d1,m) + {return [0,caml_mul(d1[1],m),caml_mul(d1[2],m),caml_mul(d1[3],m)]} + function period_to_days(p) + {if(0 === p[1] && 0 === p[2])return p[3];throw AmbiguousComputation} + function is_leap_year(year) + {var _w_=0 === (year % 400 | 0)?1:0; + if(_w_) + var _x_=_w_; + else + var + _y_=0 === (year % 4 | 0)?1:0, + _x_=_y_?0 !== (year % 100 | 0)?1:0:_y_; + return _x_} + function days_in_month(month,is_leap_year) + {var switcher=month - 1 | 0; + if(11 < switcher >>> 0)throw InvalidDate; + switch(switcher) + {case 1:return is_leap_year?29:28; + case 3: + case 5: + case 8: + case 10:return 30; + default:return 31}} + function is_valid_date(d) + {try + {var _r_=1 <= d[3]?1:0; + if(_r_) + var + _s_=is_leap_year(d[1]), + _t_=days_in_month(d[2],_s_), + _u_=d[3] <= _t_?1:0; + else + var _u_=_r_; + return _u_} + catch(_v_) + {_v_ = caml_wrap_exception(_v_); + if(_v_ === InvalidDate)return 0; + throw _v_}} + function make_date(year,month,day) + {var d=[0,year,month,day];if(is_valid_date(d))return d;throw InvalidDate} + function add_months_to_first_of_month_d(year,month,months) + {var year$0=year,months$0=months; + for(;;) + {var new_month=month + months$0 | 0; + if(1 <= new_month && ! (12 < new_month))return [0,year$0,new_month]; + if(12 < new_month) + {var + months$1=months$0 - 12 | 0, + year$1=year$0 + 1 | 0, + year$0=year$1, + months$0=months$1; + continue} + var + months$2=months$0 + 12 | 0, + year$2=year$0 - 1 | 0, + year$0=year$2, + months$0=months$2; + continue}} + function add_dates(opt,d) + {if(opt)var sth=opt[1],round=sth;else var round=2; + return function(p) + {var + _o_=d[3], + match$0=add_months_to_first_of_month_d(d[1] + p[1] | 0,d[2],p[2]), + new_month$0=match$0[2], + new_year$0=match$0[1], + new_date=[0,new_year$0,new_month$0,_o_]; + if(is_valid_date(new_date)) + var _p_=new_date; + else + switch(round) + {case 0: + var switch$0=0; + if(1 <= new_date[2] && ! (12 < new_date[2])) + {var switch$1=0; + if(1 <= new_date[3] && ! (31 < new_date[3])) + if(is_valid_date(new_date)) + {var _p_=new_date;switch$1 = 1} + else + {var + match= + add_months_to_first_of_month_d(new_date[1],new_date[2],1), + new_month=match[2], + new_year=match[1], + _p_=[0,new_year,new_month,1]; + switch$1 = 1} + if(! switch$1)throw [0,Assert_failure,_e_]} + else + switch$0 = 1; + if(switch$0)throw [0,Assert_failure,_d_]; + break; + case 1: + var switch$2=0; + if(1 <= new_date[2] && ! (12 < new_date[2])) + {var switch$3=0; + if(1 <= new_date[3] && ! (31 < new_date[3])) + if(is_valid_date(new_date)) + {var _p_=new_date;switch$3 = 1} + else + {var + _m_=is_leap_year(new_date[1]), + _n_=days_in_month(new_date[2],_m_), + _p_=[0,new_date[1],new_date[2],_n_]; + switch$3 = 1} + if(! switch$3)throw [0,Assert_failure,_c_]} + else + switch$2 = 1; + if(switch$2)throw [0,Assert_failure,_b_]; + break; + default:throw AmbiguousComputation} + var d$0=_p_,days=p[3]; + for(;;) + {var + _q_=is_leap_year(d$0[1]), + days_in_d_month=days_in_month(d$0[2],_q_), + new_day=d$0[3] + days | 0; + if(1 <= new_day && new_day <= days_in_d_month) + return [0,d$0[1],d$0[2],new_day]; + if(days_in_d_month <= new_day) + {var + match$1=add_months_to_first_of_month_d(d$0[1],d$0[2],1), + new_month$1=match$1[2], + new_year$1=match$1[1], + days$0=(days - (days_in_d_month - d$0[3] | 0) | 0) - 1 | 0, + d$1=[0,new_year$1,new_month$1,1], + d$0=d$1, + days=days$0; + continue} + var + match$2=add_months_to_first_of_month_d(d$0[1],d$0[2],-1), + new_month$2=match$2[2], + new_year$2=match$2[1], + days$1=days + d$0[3] | 0, + d$2= + [0, + new_year$2, + new_month$2, + days_in_month(new_month$2,is_leap_year(new_year$2))], + d$0=d$2, + days=days$1; + continue}}} + function compare_dates(d1,d2) + {return 0 === caml_call2(Stdlib_Int[9],d1[1],d2[1]) + ?0 === caml_call2(Stdlib_Int[9],d1[2],d2[2]) + ?caml_call2(Stdlib_Int[9],d1[3],d2[3]) + :caml_call2(Stdlib_Int[9],d1[2],d2[2]) + :caml_call2(Stdlib_Int[9],d1[1],d2[1])} + function format_date(fmt,d) + {return caml_call5(Stdlib_Format[129],fmt,_f_,d[1],d[2],d[3])} + function first_day_of_month(d) + {if(is_valid_date(d))return make_date(d[1],d[2],1); + throw [0,Assert_failure,_g_]} + function last_day_of_month(d) + {if(is_valid_date(d)) + {var _l_=is_leap_year(d[1]),days_month=days_in_month(d[2],_l_); + return make_date(d[1],d[2],days_month)} + throw [0,Assert_failure,_h_]} + function neg_period(p){return [0,- p[1] | 0,- p[2] | 0,- p[3] | 0]} + function sub_dates(d1,d2) + {if(d1[1] === d2[1] && d1[2] === d2[2])return [0,0,0,d1[3] - d2[3] | 0]; + var cmp=compare_dates(d1,d2); + if(0 <= cmp) + {var + match=add_months_to_first_of_month_d(d2[1],d2[2],1), + new_d2_month=match[2], + new_d2_year=match[1], + new_d2=[0,new_d2_year,new_d2_month,1], + _i_=sub_dates(d1,new_d2), + _j_=d2[3], + _k_=is_leap_year(d2[1]); + return add_periods + ([0,0,0,(days_in_month(d2[2],_k_) - _j_ | 0) + 1 | 0],_i_)} + return neg_period(sub_dates(d2,d1))} + function date_to_ymd(d){return [0,d[1],d[2],d[3]]} + function period_to_ymds(p){return [0,p[1],p[2],p[3]]} + var + Dates_calc_Dates= + [0, + InvalidDate, + AmbiguousComputation, + make_date, + add_dates, + sub_dates, + compare_dates, + date_to_ymd, + format_date, + first_day_of_month, + last_day_of_month, + is_leap_year, + make_period, + neg_period, + add_periods, + sub_periods, + mul_period, + format_period, + period_to_days, + period_to_ymds]; + caml_register_global(14,Dates_calc_Dates,"Dates_calc__Dates"); + return} + (globalThis)); + + +//# 1 "../../.js/zarith/zarith.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_div=runtime.caml_div, + caml_equal=runtime.caml_equal, + caml_int64_to_float=runtime.caml_int64_to_float, + caml_ldexp_float=runtime.caml_ldexp_float, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_mul=runtime.caml_mul, + caml_register_global=runtime.caml_register_global, + caml_string_get=runtime.caml_string_get, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + var + global_data=runtime.caml_get_global_data(), + cst_1_12=caml_string_of_jsbytes("1.12"), + cst_Z_log2up=caml_string_of_jsbytes("Z.log2up"), + cst_Z_log2=caml_string_of_jsbytes("Z.log2"), + cst_Z_signed_extract_negative_= + caml_string_of_jsbytes("Z.signed_extract: negative bit offset"), + cst_Z_signed_extract_nonpositi= + caml_string_of_jsbytes("Z.signed_extract: nonpositive bit length"), + cst_Z_testbit=caml_string_of_jsbytes("Z.testbit"), + cst_Z_Overflow=caml_string_of_jsbytes("Z.Overflow"), + cst_ml_z_overflow=caml_string_of_jsbytes("ml_z_overflow"), + cst_d=caml_string_of_jsbytes("%d"), + cst$0=caml_string_of_jsbytes(""), + cst_inf$1=caml_string_of_jsbytes("+inf"), + cst_inf$2=caml_string_of_jsbytes("-inf"), + cst_inf$3=caml_string_of_jsbytes("inf"), + cst_undef$0=caml_string_of_jsbytes("undef"), + cst_Q_of_string_invalid_digit= + caml_string_of_jsbytes("Q.of_string: invalid digit"), + cst_impossible_case$0=caml_string_of_jsbytes("impossible case"), + cst_impossible_case=caml_string_of_jsbytes("impossible case"), + cst_0=caml_string_of_jsbytes("0"), + cst_inf=caml_string_of_jsbytes("+inf"), + cst_inf$0=caml_string_of_jsbytes("-inf"), + cst_undef=caml_string_of_jsbytes("undef"), + cst=caml_string_of_jsbytes("/"), + cst_int64_of_big_int=caml_string_of_jsbytes("int64_of_big_int"), + cst_nativeint_of_big_int=caml_string_of_jsbytes("nativeint_of_big_int"), + cst_int32_of_big_int=caml_string_of_jsbytes("int32_of_big_int"), + cst_int_of_big_int=caml_string_of_jsbytes("int_of_big_int"), + cst_power_big_int_positive_big= + caml_string_of_jsbytes("power_big_int_positive_big_int"), + cst_power_int_positive_big_int= + caml_string_of_jsbytes("power_int_positive_big_int"), + cst_power_big_int_positive_int= + caml_string_of_jsbytes("power_big_int_positive_int"), + cst_power_int_positive_int= + caml_string_of_jsbytes("power_int_positive_int"), + Stdlib_Format=global_data.Stdlib__Format, + Stdlib_Buffer=global_data.Stdlib__Buffer, + Stdlib=global_data.Stdlib, + Stdlib_Sys=global_data.Stdlib__Sys, + Stdlib_Callback=global_data.Stdlib__Callback, + Stdlib_String=global_data.Stdlib__String, + Assert_failure=global_data.Assert_failure, + Zarith_version=[0,cst_1_12]; + caml_register_global(33,Zarith_version,"Zarith_version"); + var _a_=[248,cst_Z_Overflow,runtime.caml_fresh_oo_id(0)]; + runtime.ml_z_init(0); + caml_call2(Stdlib_Callback[2],cst_ml_z_overflow,_a_); + var + _S_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _aV_=[0,caml_string_of_jsbytes("q.ml"),486,25]; + function _b_(_gZ_) + {if(typeof _gZ_ === "number" && _gZ_ !== Stdlib[20])return - _gZ_ | 0; + return runtime.ml_z_neg(_gZ_)} + function _c_(_gX_,_gW_) + {if(typeof _gX_ === "number" && typeof _gW_ === "number") + {var _gY_=_gX_ + _gW_ | 0; + return 0 <= ((_gY_ ^ _gX_) & (_gY_ ^ _gW_)) + ?_gY_ + :runtime.ml_z_add(_gX_,_gW_)} + return runtime.ml_z_add(_gX_,_gW_)} + function _d_(_gU_,_gT_) + {if(typeof _gU_ === "number" && typeof _gT_ === "number") + {var _gV_=_gU_ - _gT_ | 0; + return 0 <= ((_gU_ ^ _gT_) & (_gV_ ^ _gU_)) + ?_gV_ + :runtime.ml_z_sub(_gU_,_gT_)} + return runtime.ml_z_sub(_gU_,_gT_)} + function _e_(_gS_,_gR_) + {if + (typeof _gS_ + === + "number" + && + typeof _gR_ + === + "number" + && + ! + runtime.ml_z_mul_overflows(_gS_,_gR_)) + return caml_mul(_gS_,_gR_); + return runtime.ml_z_mul(_gS_,_gR_)} + function _f_(_gQ_,_gP_) + {return typeof _gP_ === "number" + ?-1 === _gP_ + ?_b_(_gQ_) + :typeof _gQ_ === "number" + ?caml_div(_gQ_,_gP_) + :runtime.ml_z_div(_gQ_,_gP_) + :runtime.ml_z_div(_gQ_,_gP_)} + function _g_(_gO_,_gN_) + {return typeof _gN_ === "number" + ?-1 === _gN_ + ?0 + :typeof _gO_ === "number" + ?runtime.caml_mod(_gO_,_gN_) + :runtime.ml_z_rem(_gO_,_gN_) + :runtime.ml_z_rem(_gO_,_gN_)} + function _h_(_gM_,_gL_) + {return typeof _gL_ === "number" + ?-1 === _gL_ + ?_b_(_gM_) + :typeof _gM_ === "number" + ?caml_div(_gM_,_gL_) + :runtime.ml_z_divexact(_gM_,_gL_) + :runtime.ml_z_divexact(_gM_,_gL_)} + function _i_(_gK_) + {if(typeof _gK_ === "number" && _gK_ !== Stdlib[19])return _gK_ + 1 | 0; + return runtime.ml_z_succ(_gK_)} + function _j_(_gJ_) + {if(typeof _gJ_ === "number" && _gJ_ !== Stdlib[20])return _gJ_ - 1 | 0; + return runtime.ml_z_pred(_gJ_)} + function _k_(_gI_) + {return typeof _gI_ === "number" + ?0 <= _gI_ + ?_gI_ + :_gI_ !== Stdlib[20]?- _gI_ | 0:runtime.ml_z_abs(_gI_) + :runtime.ml_z_abs(_gI_)} + function _l_(_gH_,_gG_) + {if(typeof _gH_ === "number" && typeof _gG_ === "number") + return _gH_ & _gG_; + return runtime.ml_z_logand(_gH_,_gG_)} + function _m_(_gF_,_gE_) + {if(typeof _gF_ === "number" && typeof _gE_ === "number") + return _gF_ | _gE_; + return runtime.ml_z_logor(_gF_,_gE_)} + function _n_(_gD_,_gC_) + {if(typeof _gD_ === "number" && typeof _gC_ === "number") + return _gD_ ^ _gC_; + return runtime.ml_z_logxor(_gD_,_gC_)} + function _o_(_gB_) + {return typeof _gB_ === "number"?_gB_ ^ -1:runtime.ml_z_lognot(_gB_)} + function _p_(_gz_,_gy_) + {if(typeof _gz_ === "number" && 0 <= _gy_ && _gy_ < Stdlib_Sys[9]) + {var _gA_=_gz_ << _gy_; + return _gA_ >> _gy_ === _gz_?_gA_:runtime.ml_z_shift_left(_gz_,_gy_)} + return runtime.ml_z_shift_left(_gz_,_gy_)} + function _q_(_gw_,_gv_) + {if(typeof _gw_ === "number" && 0 <= _gv_) + {var _gx_=_gv_ < Stdlib_Sys[9]?_gv_:Stdlib_Sys[9] - 1 | 0; + return _gw_ >> _gx_} + return runtime.ml_z_shift_right(_gw_,_gv_)} + function _r_(_gu_,_gt_) + {if(typeof _gu_ === "number" && 0 <= _gt_) + return Stdlib_Sys[9] <= _gt_ + ?0 + :0 <= _gu_?_gu_ >>> _gt_ | 0:- ((- _gu_ | 0) >>> _gt_ | 0) | 0; + return runtime.ml_z_shift_right_trunc(_gu_,_gt_)} + function _s_(_gs_) + {return typeof _gs_ === "number"?_gs_:runtime.ml_z_to_int(_gs_)} + var _t_=0,_u_=1,_v_=-1; + function _w_(_gr_,_gq_) + {return 0 < runtime.ml_z_compare(_gr_,_gq_)?_gq_:_gr_} + function _x_(_gp_,_go_) + {return 0 <= runtime.ml_z_compare(_gp_,_go_)?_gp_:_go_} + function _y_(_gn_,_gm_){return runtime.ml_z_compare(_gn_,_gm_) <= 0?1:0} + function _z_(_gl_,_gk_){return 0 <= runtime.ml_z_compare(_gl_,_gk_)?1:0} + function _A_(_gj_,_gi_){return runtime.ml_z_compare(_gj_,_gi_) < 0?1:0} + function _B_(_gh_,_gg_){return 0 < runtime.ml_z_compare(_gh_,_gg_)?1:0} + function _C_(_gf_){return runtime.ml_z_format(cst_d,_gf_)} + function _D_(_ge_) + {return runtime.ml_z_of_substring_base + (0,_ge_,0,caml_ml_string_length(_ge_))} + function _E_(_gb_,_gc_,_gd_) + {return runtime.ml_z_of_substring_base(0,_gb_,_gc_,_gd_)} + function _F_(_ga_,_f$_) + {return runtime.ml_z_of_substring_base + (_ga_,_f$_,0,caml_ml_string_length(_f$_))} + function _G_(_f5_,_f4_) + {var _f6_=runtime.ml_z_div_rem(_f5_,_f4_),_f7_=_f6_[2],_f8_=_f6_[1]; + if(0 <= runtime.ml_z_sign(_f7_))return [0,_f8_,_f7_]; + if(0 <= runtime.ml_z_sign(_f4_)) + {var _f9_=_c_(_f7_,_f4_);return [0,_j_(_f8_),_f9_]} + var _f__=_d_(_f7_,_f4_); + return [0,_i_(_f8_),_f__]} + function _H_(_f3_,_f2_) + {return 0 <= runtime.ml_z_sign(_f2_) + ?runtime.ml_z_fdiv(_f3_,_f2_) + :runtime.ml_z_cdiv(_f3_,_f2_)} + function _I_(_f0_,_fZ_) + {var _f1_=_g_(_f0_,_fZ_); + return 0 <= runtime.ml_z_sign(_f1_)?_f1_:_c_(_f1_,_k_(_fZ_))} + function _J_(_fR_,_fQ_) + {var + _fS_=runtime.ml_z_sign(_fR_), + _fT_=runtime.ml_z_sign(_fQ_), + _fU_=_fS_ + 1 | 0; + if(! (2 < _fU_ >>> 0)) + switch(_fU_) + {case 0:if(0 === _fT_)return [0,_b_(_fR_),_v_,_t_];break; + case 1: + var _fY_=_fT_ + 1 | 0; + if(! (2 < _fY_ >>> 0)) + switch(_fY_) + {case 0:return [0,_b_(_fQ_),_t_,_v_]; + case 1:return [0,_t_,_t_,_t_]; + default:return [0,_fQ_,_t_,_u_]} + break; + default:if(0 === _fT_)return [0,_fR_,_u_,_t_]} + var + _fV_=runtime.ml_z_gcdext_intern(_fR_,_fQ_), + _fW_=_fV_[2], + _fX_=_fV_[1]; + return _fV_[3] + ?[0,_fX_,_fW_,_f_(_d_(_fX_,_e_(_fR_,_fW_)),_fQ_)] + :[0,_fX_,_f_(_d_(_fX_,_e_(_fQ_,_fW_)),_fR_),_fW_]} + function _K_(_fP_,_fO_) + {if(! caml_equal(_fP_,_t_) && ! caml_equal(_fO_,_t_)) + return _k_(_e_(_h_(_fP_,runtime.ml_z_gcd(_fP_,_fO_)),_fO_)); + return _t_} + function _L_(_fN_,_fM_) + {return 0 <= _fM_ + ?runtime.ml_z_testbit(_fN_,_fM_) + :caml_call1(Stdlib[1],cst_Z_testbit)} + function _M_(_fL_){return runtime.ml_z_testbit(_fL_,0)} + function _N_(_fK_){return 1 - runtime.ml_z_testbit(_fK_,0)} + function _O_(_fJ_,_fI_,_fH_) + {if(_fI_ < 0)caml_call1(Stdlib[1],cst_Z_signed_extract_negative_); + if(_fH_ < 1)caml_call1(Stdlib[1],cst_Z_signed_extract_nonpositi); + return _L_(_fJ_,(_fI_ + _fH_ | 0) - 1 | 0) + ?_o_(runtime.ml_z_extract(_o_(_fJ_),_fI_,_fH_)) + :runtime.ml_z_extract(_fJ_,_fI_,_fH_)} + function _P_(_fG_) + {return 0 < runtime.ml_z_sign(_fG_) + ?runtime.ml_z_numbits(_fG_) - 1 | 0 + :caml_call1(Stdlib[1],cst_Z_log2)} + function _Q_(_fF_) + {return 0 < runtime.ml_z_sign(_fF_) + ?runtime.ml_z_numbits(_j_(_fF_)) + :caml_call1(Stdlib[1],cst_Z_log2up)} + function _R_(_fC_,_fB_) + {var + _fD_=runtime.ml_z_to_int64(_fC_), + _fE_=_fB_?_fD_:runtime.caml_int64_or(_fD_,_S_); + return caml_int64_to_float(_fE_)} + function _T_(_fx_) + {if(typeof _fx_ === "number")return _fx_; + var _fy_=runtime.ml_z_numbits(_fx_); + if(63 < _fy_) + {var _fz_=_fy_ - 55 | 0,_fA_=_q_(_fx_,_fz_); + return caml_ldexp_float + (_R_(_fA_,runtime.ml_z_equal(_fx_,_p_(_fA_,_fz_))),_fz_)} + return caml_int64_to_float(runtime.ml_z_to_int64(_fx_))} + function _U_(_fv_){var _fw_=_C_(_fv_);return caml_call1(Stdlib[42],_fw_)} + function _V_(_ft_,_fs_) + {var _fu_=_C_(_fs_);return caml_call2(Stdlib[66],_ft_,_fu_)} + function _W_(_fr_,_fq_){return _C_(_fq_)} + function _X_(_fo_,_fn_) + {var _fp_=_C_(_fn_);return caml_call2(Stdlib_Buffer[16],_fo_,_fp_)} + function _Y_(_fl_,_fk_) + {var _fm_=_C_(_fk_);return caml_call2(Stdlib_Format[13],_fl_,_fm_)} + function _Z_(_fj_){return _fj_} + function ___(_fi_,_fh_){return runtime.ml_z_equal(_fi_,_fh_)} + var + Z= + [0, + _a_, + _t_, + _u_, + _v_, + _D_, + _E_, + _F_, + _i_, + _j_, + _k_, + _b_, + _c_, + _d_, + _e_, + _f_, + _g_, + _G_, + _H_, + _I_, + _h_, + _l_, + _m_, + _n_, + _o_, + _p_, + _q_, + _r_, + _L_, + _s_, + _T_, + _C_, + _U_, + _V_, + _W_, + _X_, + _Y_, + _y_, + _z_, + _A_, + _B_, + _w_, + _x_, + _N_, + _M_, + _J_, + _K_, + _P_, + _Q_, + _O_, + _b_, + _Z_, + _c_, + _d_, + _e_, + _f_, + _h_, + _g_, + _l_, + _m_, + _n_, + _o_, + _p_, + _q_, + [0, + ___, + _A_, + _B_, + _y_, + _z_, + function(_fg_,_ff_){return 1 - runtime.ml_z_equal(_fg_,_ff_)}], + cst_1_12, + _R_]; + caml_register_global(39,Z,"Z"); + function _$_(_fc_,_fb_) + {if(_fc_ !== 0 && _fb_ !== 1) + {var _fd_=runtime.ml_z_gcd(_fc_,_fb_); + if(_fd_ === 1)return [0,_fc_,_fb_]; + var _fe_=_h_(_fb_,_fd_); + return [0,_h_(_fc_,_fd_),_fe_]} + return [0,_fc_,_u_]} + function _aa_(_e__,_e9_) + {var _e$_=runtime.ml_z_sign(_e9_); + if(0 === _e$_)return [0,runtime.ml_z_sign(_e__),_t_]; + if(0 < _e$_)return _$_(_e__,_e9_); + var _fa_=_b_(_e9_); + return _$_(_b_(_e__),_fa_)} + function _ab_(_e8_){return [0,_e8_,_u_]} + function _ac_(_e7_){return _ab_(_e7_)} + function _ad_(_e6_){return _ab_(runtime.ml_z_of_int32(_e6_))} + function _ae_(_e5_){return _ab_(runtime.ml_z_of_int64(_e5_))} + function _af_(_e4_){return _ab_(runtime.ml_z_of_nativeint(_e4_))} + function _ag_(_e3_,_e2_){return _aa_(_e3_,_e2_)} + var + _ah_=_ab_(_t_), + _ai_=_ab_(_u_), + _ak_=[0,_u_,_t_], + _al_=[0,_v_,_t_], + _am_=[0,_t_,_t_], + _aj_=_ab_(_v_); + function _an_(_eY_) + {if(_eY_ == Stdlib[22])return _ak_; + if(_eY_ == Stdlib[23])return _al_; + if(4 === runtime.caml_classify_float(_eY_))return _am_; + var + _eZ_=runtime.caml_frexp_float(_eY_), + _e0_=_eZ_[2] - 53 | 0, + _e1_=runtime.ml_z_of_float(caml_ldexp_float(_eZ_[1],53)); + return 0 <= _e0_?_ab_(_p_(_e1_,_e0_)):_$_(_e1_,_p_(_u_,- _e0_ | 0))} + function _ao_(_eW_) + {if(_eW_[2] === 0) + {var _eX_=runtime.ml_z_sign(_eW_[1]) + 1 | 0; + if(! (2 < _eX_ >>> 0)) + switch(_eX_){case 0:return 2;case 1:break;default:return 1} + return 3} + return _eW_[1] === 0?0:4} + function _ap_(_eV_){return _eV_[2] !== 0?1:0} + function _aq_(_eU_){return _eU_[1]} + function _ar_(_eT_){return _eT_[2]} + function _as_(_eS_){return runtime.ml_z_sign(_eS_[1])} + function _at_(_eO_,_eN_) + {var _eP_=runtime.ml_z_equal(_eO_[1],_eN_[1]); + if(_eP_) + var + _eQ_=runtime.ml_z_equal(_eO_[2],_eN_[2]), + _eR_=_eQ_?3 !== _ao_(_eO_)?1:0:_eQ_; + else + var _eR_=_eP_; + return _eR_} + function _au_(_eH_,_eG_) + {var _eI_=_ao_(_eH_),_eJ_=_ao_(_eG_),switch$0=0; + switch(_eI_) + {case 1: + var _eM_=_eJ_ - 1 | 0; + if(! (2 < _eM_ >>> 0)) + switch(_eM_) + {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} + break; + case 2: + if(1 === _eJ_) + switch$0 = 1; + else + if(_eJ_) + switch(_eJ_ - 2 | 0) + {case 1:switch$0 = 1;break;case 2:break;default:switch$0 = 2} + break; + case 3:if(3 !== _eJ_)return -1;switch$0 = 2;break; + default:switch$0 = 1} + var switch$1=0; + switch(switch$0) + {case 1: + var _eK_=_eJ_ - 1 | 0; + if(! (2 < _eK_ >>> 0)) + switch(_eK_) + {case 0:switch$1 = 1;break;case 1:break;default:return 1} + break; + case 0:break; + default:return 0} + if(! switch$1) + {var switch$2=0; + if(! (4 <= _eI_)) + switch(_eI_) + {case 0:break;case 2:switch$2 = 1;break;default:switch$2 = 2} + var switch$3=0; + switch(switch$2) + {case 0: + if(2 !== _eJ_) + {if(caml_equal(_eH_[2],_eG_[2])) + return runtime.ml_z_compare(_eH_[1],_eG_[1]); + var _eL_=_e_(_eG_[1],_eH_[2]); + return runtime.ml_z_compare(_e_(_eH_[1],_eG_[2]),_eL_)} + switch$3 = 1; + break; + case 1:break; + default:switch$3 = 1} + if(switch$3)return 1} + return -1} + function _av_(_eF_,_eE_){return 0 < _au_(_eF_,_eE_)?_eE_:_eF_} + function _aw_(_eD_,_eC_){return 0 <= _au_(_eD_,_eC_)?_eD_:_eC_} + function _ax_(_ex_,_ew_) + {var _ey_=_ao_(_ex_),_ez_=_ao_(_ew_); + if(3 !== _ey_) + {var _eA_=_ez_ - 1 | 0,switch$0=0; + if(! (2 < _eA_ >>> 0)) + switch(_eA_) + {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1} + var switch$1=0; + switch(switch$0) + {case 0: + var switch$2=0; + if(! (4 <= _ey_)) + switch(_ey_) + {case 0:break; + case 2:switch$1 = 1;switch$2 = 2;break; + default:switch$2 = 1} + var switch$3=0; + switch(switch$2) + {case 2:switch$3 = 1;break; + case 0: + if(2 !== _ez_) + {if(caml_equal(_ex_[2],_ew_[2]))return _y_(_ex_[1],_ew_[1]); + var _eB_=_e_(_ew_[1],_ex_[2]); + return _y_(_e_(_ex_[1],_ew_[2]),_eB_)} + break + } + if(! switch$3)return 0; + break; + case 1:break; + default:switch$1 = 1} + if(switch$1)return 1} + return 0} + function _ay_(_es_,_er_) + {var _et_=_ao_(_es_),_eu_=_ao_(_er_); + if(3 !== _et_) + {var switch$0=0; + if(2 <= _eu_) + switch(_eu_ - 2 | 0) + {case 2:break;case 1:switch$0 = 1;break;default:switch$0 = 2} + var switch$1=0; + switch(switch$0) + {case 0: + var switch$2=0; + if(! (4 <= _et_)) + switch(_et_) + {case 0:break; + case 1:switch$1 = 1;switch$2 = 2;break; + default:switch$2 = 1} + var switch$3=0; + switch(switch$2) + {case 2:switch$3 = 1;break; + case 0: + if(1 !== _eu_) + {if(caml_equal(_es_[2],_er_[2]))return _A_(_es_[1],_er_[1]); + var _ev_=_e_(_er_[1],_es_[2]); + return _A_(_e_(_es_[1],_er_[2]),_ev_)} + break + } + if(! switch$3)return 1; + break; + case 1:break; + default:switch$1 = 1} + if(switch$1)return 0} + return 0} + function _az_(_eq_,_ep_){return _ax_(_ep_,_eq_)} + function _aA_(_eo_,_en_){return _ay_(_en_,_eo_)} + function _aB_(_ej_) + {switch(_ao_(_ej_)) + {case 0:return cst_0; + case 1:return cst_inf; + case 2:return cst_inf$0; + case 3:return cst_undef; + default: + if(runtime.ml_z_equal(_ej_[2],1))return _C_(_ej_[1]); + var + _ek_=_C_(_ej_[2]), + _el_=caml_call2(Stdlib[28],cst,_ek_), + _em_=_C_(_ej_[1]); + return caml_call2(Stdlib[28],_em_,_el_)}} + function _aC_(_ei_){return _f_(_ei_[1],_ei_[2])} + function _aD_(_eh_){return _s_(_aC_(_eh_))} + function _aE_(_eg_){return runtime.ml_z_to_int32(_aC_(_eg_))} + function _aF_(_ef_){return runtime.ml_z_to_int64(_aC_(_ef_))} + function _aG_(_ee_){return runtime.ml_z_to_nativeint(_aC_(_ee_))} + function _aH_(_dZ_) + {switch(_ao_(_dZ_)) + {case 0:return 0.; + case 1:return Stdlib[22]; + case 2:return Stdlib[23]; + case 3:return Stdlib[24]; + default: + var + _d0_=_dZ_[1], + _d1_=_dZ_[2], + _d2_=runtime.ml_z_numbits(_d0_), + _d3_=runtime.ml_z_numbits(_d1_); + if(! (53 < _d2_) && ! (53 < _d3_)) + {var _ed_=caml_int64_to_float(runtime.ml_z_to_int64(_d1_)); + return caml_int64_to_float(runtime.ml_z_to_int64(_d0_)) / _ed_} + var _d4_=0 <= runtime.ml_z_sign(_d0_)?1:-1,_d5_=_d2_ - _d3_ | 0; + if(0 <= _d5_) + var _d7_=_p_(_d1_,_d5_),_d6_=_d0_; + else + var _d7_=_d1_,_d6_=_p_(_d0_,- _d5_ | 0); + if(_z_(_k_(_d6_),_d7_)) + var _d9_=_d5_,_d8_=_d6_; + else + var _d9_=_d5_ - 1 | 0,_d8_=_p_(_d6_,1); + var _d__=_G_(_p_(_d8_,54),_d7_); + if(-1080 < _d9_) + {var + _d$_=-1023 < _d9_?_t_:_p_(_d4_,55 + (-1023 - _d9_ | 0) | 0), + _ea_=_c_(_d$_,_d__[1]), + _eb_=0 === runtime.ml_z_sign(_d__[2])?_ea_:_m_(_u_,_ea_), + _ec_=_T_(_eb_); + return caml_ldexp_float(_ec_ - _T_(_d$_),_d9_ - 54 | 0)} + return caml_ldexp_float(_d4_,-1080)}} + function _aI_(_dX_){var _dY_=_dX_[2];return [0,_b_(_dX_[1]),_dY_]} + function _aJ_(_dV_){var _dW_=_dV_[2];return [0,_k_(_dV_[1]),_dW_]} + function _aK_(_dR_,_dQ_,_dP_) + {if(_dQ_[2] === _dP_[2]) + {var _dS_=_dQ_[2];return _$_(caml_call2(_dR_,_dQ_[1],_dP_[1]),_dS_)} + var _dT_=_e_(_dQ_[2],_dP_[2]),_dU_=_e_(_dP_[1],_dQ_[2]); + return _$_(caml_call2(_dR_,_e_(_dQ_[1],_dP_[2]),_dU_),_dT_)} + function _aL_(_dM_,_dL_) + {if(_dM_[2] !== 0 && _dL_[2] !== 0)return _aK_(_c_,_dM_,_dL_); + var _dN_=_ao_(_dM_),_dO_=_ao_(_dL_),switch$0=0; + switch(_dN_) + {case 0:return _dL_; + case 1: + switch(_dO_) + {case 2:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1} + break; + case 2: + switch(_dO_) + {case 2:switch$0 = 2;break; + case 1:switch$0 = 3;break; + case 4:switch$0 = 4;break + } + break; + case 4: + switch(_dO_) + {case 4:return caml_call1(Stdlib[2],cst_impossible_case); + case 0: + case 3:break; + default:switch$0 = 2} + break + } + var switch$1=0; + switch(switch$0) + {case 0:if(3 === _dO_)switch$1 = 1;else if(! _dO_)return _dM_;break; + case 1:break; + case 2:switch$1 = 2 <= _dO_?3:2;break; + case 3:return _am_; + default:switch$1 = 3} + var switch$2=0; + switch(switch$1) + {case 0:if(! (3 <= _dN_))switch$2 = 1;break; + case 1:break; + case 2:switch$2 = 1;break; + default:return _al_} + return switch$2?_ak_:_am_} + function _aM_(_dI_,_dH_) + {if(_dI_[2] !== 0 && _dH_[2] !== 0)return _aK_(_d_,_dI_,_dH_); + var _dJ_=_ao_(_dI_),_dK_=_ao_(_dH_),switch$0=0; + switch(_dJ_) + {case 0:return _aI_(_dH_); + case 1: + switch(_dK_) + {case 1:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1} + break; + case 2: + switch(_dK_) + {case 1:switch$0 = 2;break; + case 2:switch$0 = 3;break; + case 4:switch$0 = 4;break + } + break; + case 4: + switch(_dK_) + {case 4:return caml_call1(Stdlib[2],cst_impossible_case$0); + case 0: + case 3:break; + default:switch$0 = 2} + break + } + var switch$1=0; + switch(switch$0) + {case 0:if(3 === _dK_)switch$1 = 1;else if(! _dK_)return _dI_;break; + case 1:break; + case 2:switch$1 = 2 <= _dK_?2:3;break; + case 3:return _am_; + default:switch$1 = 3} + var switch$2=0; + switch(switch$1) + {case 0:if(! (3 <= _dJ_))switch$2 = 1;break; + case 1:break; + case 2:switch$2 = 1;break; + default:return _al_} + return switch$2?_ak_:_am_} + function _aN_(_dE_,_dD_) + {if(_dE_[2] !== 0 && _dD_[2] !== 0) + {var _dG_=_e_(_dE_[2],_dD_[2]);return _$_(_e_(_dE_[1],_dD_[1]),_dG_)} + var _dF_=runtime.ml_z_sign(_dD_[1]); + return [0,caml_mul(runtime.ml_z_sign(_dE_[1]),_dF_),_t_]} + function _aO_(_dA_) + {var _dB_=runtime.ml_z_sign(_dA_[1]) + 1 | 0; + if(! (2 < _dB_ >>> 0)) + switch(_dB_) + {case 0:var _dC_=_b_(_dA_[1]);return [0,_b_(_dA_[2]),_dC_]; + case 1:break; + default:return [0,_dA_[2],_dA_[1]]} + return _dA_[2] === 0?_am_:_ak_} + function _aP_(_dy_,_dx_) + {if(0 <= runtime.ml_z_sign(_dx_[1])) + return _aN_(_dy_,[0,_dx_[2],_dx_[1]]); + var _dz_=_b_(_dx_[1]); + return _aN_(_dy_,[0,_b_(_dx_[2]),_dz_])} + function _aQ_(_dv_,_du_) + {if(_dv_[2] === 0)return _dv_; + var _dw_=_dv_[2]; + return _$_(_p_(_dv_[1],_du_),_dw_)} + function _aR_(_ds_,_dr_) + {if(_ds_[2] === 0)return _ds_; + var _dt_=_p_(_ds_[2],_dr_); + return _$_(_ds_[1],_dt_)} + function _aS_(_dq_) + {switch(_dq_) + {case 0:return 2;case 1:return 8;case 2:return 10;default:return 16}} + function _aT_(_do_,_dn_,_dm_,_dl_) + {var _dp_=_dn_; + for(;;) + {if(_dm_ <= _dp_)return 0; + if(caml_call1(_dl_,caml_string_get(_do_,_dp_)))return [0,_dp_]; + var _dp_=_dp_ + 1 | 0; + continue}} + function _aU_(_cy_) + {if(caml_string_notequal(_cy_,cst$0)) + {if(caml_string_notequal(_cy_,cst_inf$1)) + {if(! caml_string_notequal(_cy_,cst_inf$2))return _al_; + if(caml_string_notequal(_cy_,cst_inf$3)) + {if(caml_string_notequal(_cy_,cst_undef$0)) + try + {var + _dc_=caml_call2(Stdlib_String[35],_cy_,47), + _dd_= + runtime.ml_z_of_substring_base + (0, + _cy_, + _dc_ + 1 | 0, + (caml_ml_string_length(_cy_) - _dc_ | 0) - 1 | 0), + _de_=_aa_(runtime.ml_z_of_substring_base(0,_cy_,0,_dc_),_dd_); + return _de_} + catch(_df_) + {_df_ = caml_wrap_exception(_df_); + if(_df_ === Stdlib[8]) + {var _cA_=caml_ml_string_length(_cy_),_cz_=0; + if(_cA_ < 1) + var _cB_=[0,0,_cz_]; + else + {var _c$_=caml_string_get(_cy_,0) - 43 | 0,switch$0=0; + if(! (2 < _c$_ >>> 0)) + {var switch$1=0; + switch(_c$_) + {case 0:var _db_=[0,0,1];break; + case 1:switch$1 = 1;break; + default:var _db_=[0,1,1]} + if(! switch$1){var _da_=_db_;switch$0 = 1}} + if(! switch$0)var _da_=[0,0,_cz_]; + var _cB_=_da_} + var _cC_=_cB_[2]; + if(_cA_ < (_cC_ + 2 | 0)) + var _cD_=[0,2,_cC_]; + else + {var + _c8_=caml_string_get(_cy_,_cC_), + _c9_=caml_string_get(_cy_,_cC_ + 1 | 0), + switch$2=0; + if(48 === _c8_) + {var switch$3=0; + if(89 <= _c9_) + {if(98 === _c9_) + switch$3 = 2; + else + if(111 === _c9_) + switch$3 = 1; + else + if(120 !== _c9_){switch$2 = 1;switch$3 = 3}} + else + if(66 === _c9_) + switch$3 = 2; + else + if(79 === _c9_) + switch$3 = 1; + else + if(! (88 <= _c9_)){switch$2 = 1;switch$3 = 3} + switch(switch$3) + {case 3:break; + case 0:var _c__=[0,3,_cC_ + 2 | 0];break; + case 1:var _c__=[0,1,_cC_ + 2 | 0];break; + default:var _c__=[0,0,_cC_ + 2 | 0]}} + else + switch$2 = 1; + if(switch$2)var _c__=[0,2,_cC_]; + var _cD_=_c__} + var + _cE_=_cD_[2], + _cF_=_cD_[1], + _cG_= + 2 === _cF_ + ?function(_di_) + {if(69 !== _di_ && 101 !== _di_)return 0;return 1} + :3 <= _cF_ + ?function(_dj_) + {if(80 !== _dj_ && 112 !== _dj_)return 0;return 1} + :function(_dk_){return 0}, + _cH_=_aT_(_cy_,_cE_,_cA_,_cG_); + if(_cH_) + var + _cI_=_cH_[1], + _cJ_=_cI_ + 1 | 0, + _cL_=_cI_, + _cK_= + _s_ + (runtime.ml_z_of_substring_base + (10,_cy_,_cJ_,_cA_ - _cJ_ | 0)); + else + var _cL_=_cA_,_cK_=0; + if(2 <= _cF_) + {var + _cM_= + _aT_(_cy_,_cE_,_cL_,function(_dh_){return 46 === _dh_?1:0}); + if(_cM_) + {var _cN_=_cM_[1]; + if(2 === _cF_) + var _cO_=1; + else + {if(! (3 <= _cF_))throw [0,Assert_failure,_aV_];var _cO_=4} + var _cQ_=_cN_ + 1 | 0,_cR_=_cL_ - 1 | 0,_cP_=0; + if(_cR_ < _cQ_) + var _cS_=_cP_; + else + {var _c4_=_cQ_,_c3_=_cP_; + for(;;) + {var _c5_=caml_string_get(_cy_,_c4_),switch$4=0; + if(71 <= _c5_) + {if(97 <= _c5_) + {if(! (103 <= _c5_))switch$4 = 1} + else + if(95 === _c5_){var _c6_=_c3_;switch$4 = 2}} + else + if(58 <= _c5_) + {if(65 <= _c5_)switch$4 = 1} + else + if(48 <= _c5_)switch$4 = 1; + switch(switch$4) + {case 0: + caml_call1(Stdlib[1],cst_Q_of_string_invalid_digit); + var _c6_=_c3_; + break; + case 1:var _c6_=_c3_ + 1 | 0;break + } + var _c7_=_c4_ + 1 | 0; + if(_cR_ !== _c4_){var _c4_=_c7_,_c3_=_c6_;continue} + var _cS_=_c6_; + break}} + var + _cT_= + _aT_ + (_cy_, + _cN_ + 1 | 0, + _cL_, + function(_dg_){return 95 !== _dg_?1:0}), + _cU_=_cT_?_cT_[1]:_cL_, + _cV_=caml_call3(Stdlib_String[15],_cy_,_cU_,_cL_ - _cU_ | 0), + _cW_=caml_call3(Stdlib_String[15],_cy_,_cE_,_cN_ - _cE_ | 0), + _cX_=caml_call2(Stdlib[28],_cW_,_cV_), + _cZ_=caml_mul(_cS_,_cO_), + _cY_=_F_(_aS_(_cF_),_cX_)} + else + var + _cZ_=0, + _cY_= + runtime.ml_z_of_substring_base + (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0)} + else + var + _cZ_=0, + _cY_= + runtime.ml_z_of_substring_base + (_aS_(_cF_),_cy_,_cE_,_cL_ - _cE_ | 0); + var + _c0_=_cK_ - _cZ_ | 0, + _c1_=2 === _cF_?10:3 <= _cF_?2:1, + _c2_= + 0 <= _c0_ + ?_ab_(_e_(_cY_,runtime.ml_z_pow(_c1_,_c0_))) + :_aa_(_cY_,runtime.ml_z_pow(_c1_,- _c0_ | 0)); + return _cB_[1]?_aI_(_c2_):_c2_} + throw _df_} + return _am_}} + return _ak_} + return _ah_} + function _aW_(_cw_) + {var _cx_=_aB_(_cw_);return caml_call1(Stdlib[42],_cx_)} + function _aX_(_cu_,_ct_) + {var _cv_=_aB_(_ct_);return caml_call2(Stdlib[66],_cu_,_cv_)} + function _aY_(_cs_,_cr_){return _aB_(_cr_)} + function _aZ_(_cp_,_co_) + {var _cq_=_aB_(_co_);return caml_call2(Stdlib_Buffer[16],_cp_,_cq_)} + function _a0_(_cm_,_cl_) + {var _cn_=_aB_(_cl_);return caml_call2(Stdlib_Format[13],_cm_,_cn_)} + function _a1_(_ck_){return _ck_} + var + Q= + [0, + _aa_, + _ah_, + _ai_, + _aj_, + _ak_, + _al_, + _am_, + _ab_, + _ac_, + _ad_, + _ae_, + _af_, + _ag_, + _an_, + _aU_, + _aq_, + _ar_, + _ao_, + _ap_, + _as_, + _au_, + _at_, + _av_, + _aw_, + _ax_, + _az_, + _ay_, + _aA_, + _aC_, + _aD_, + _aE_, + _aF_, + _aG_, + _aB_, + _aH_, + _aI_, + _aJ_, + _aL_, + _aM_, + _aN_, + _aO_, + _aP_, + _aQ_, + _aR_, + _aW_, + _aX_, + _aY_, + _aZ_, + _a0_, + _aI_, + _a1_, + _aL_, + _aM_, + _aN_, + _aP_, + _aQ_, + _aR_, + _ac_, + _ag_, + _ab_, + _aa_, + _at_, + _ay_, + _aA_, + _ax_, + _az_, + function(_cj_,_ci_){return 1 - _at_(_cj_,_ci_)}]; + caml_register_global(42,Q,"Q"); + function _a2_(_ch_,_cg_){return _c_(_ch_,_cg_)} + function _a3_(_cf_,_ce_){return _e_(_cf_,_ce_)} + function _a4_(_cd_){return _e_(_cd_,_cd_)} + function _a5_(_cc_){return runtime.ml_z_sqrt(_cc_)} + function _a6_(_cb_,_ca_){return runtime.ml_z_gcd(_cb_,_ca_)} + function _a7_(_b$_,_b__){return runtime.ml_z_pow(_b$_,_b__)} + function _a8_(_b9_,_b8_){return runtime.ml_z_pow(_b9_,_s_(_b8_))} + function _a9_(_b7_,_b6_) + {if(_b6_ < 0)throw [0,Stdlib[6],cst_power_int_positive_int]; + return runtime.ml_z_pow(_b7_,_b6_)} + function _a__(_b5_,_b4_) + {if(_b4_ < 0)throw [0,Stdlib[6],cst_power_big_int_positive_int]; + return runtime.ml_z_pow(_b5_,_b4_)} + function _a$_(_b3_,_b2_) + {if(runtime.ml_z_sign(_b2_) < 0) + throw [0,Stdlib[6],cst_power_int_positive_big_int]; + return _a8_(_b3_,_b2_)} + function _ba_(_b1_,_b0_) + {if(runtime.ml_z_sign(_b0_) < 0) + throw [0,Stdlib[6],cst_power_big_int_positive_big]; + return _a8_(_b1_,_b0_)} + function _bb_(_bZ_){return runtime.ml_z_sign(_bZ_)} + function _bc_(_bY_,_bX_){return runtime.ml_z_compare(_bY_,_bX_)} + function _bd_(_bW_,_bV_){return runtime.ml_z_equal(_bW_,_bV_)} + function _be_(_bU_,_bT_){return runtime.ml_z_compare(_bU_,_bT_) <= 0?1:0} + function _bf_(_bS_,_bR_){return 0 <= runtime.ml_z_compare(_bS_,_bR_)?1:0} + function _bg_(_bQ_,_bP_){return runtime.ml_z_compare(_bQ_,_bP_) < 0?1:0} + function _bh_(_bO_,_bN_){return 0 < runtime.ml_z_compare(_bO_,_bN_)?1:0} + function _bi_(_bM_){return runtime.ml_z_size(_bM_)} + function _bj_(_bL_){return _bL_} + function _bk_(_bK_){return runtime.ml_z_fits_int(_bK_)} + function _bl_(_bH_) + {try + {var _bI_=_s_(_bH_);return _bI_} + catch(_bJ_) + {_bJ_ = caml_wrap_exception(_bJ_); + if(_bJ_ === _a_)return caml_call1(Stdlib[2],cst_int_of_big_int); + throw _bJ_}} + function _bm_(_bG_){return runtime.ml_z_of_int32(_bG_)} + function _bn_(_bF_){return runtime.ml_z_of_nativeint(_bF_)} + function _bo_(_bE_){return runtime.ml_z_of_int64(_bE_)} + function _bp_(_bB_) + {try + {var _bC_=runtime.ml_z_to_int32(_bB_);return _bC_} + catch(_bD_) + {_bD_ = caml_wrap_exception(_bD_); + if(_bD_ === _a_)return caml_call1(Stdlib[2],cst_int32_of_big_int); + throw _bD_}} + function _bq_(_by_) + {try + {var _bz_=runtime.ml_z_to_nativeint(_by_);return _bz_} + catch(_bA_) + {_bA_ = caml_wrap_exception(_bA_); + if(_bA_ === _a_)return caml_call1(Stdlib[2],cst_nativeint_of_big_int); + throw _bA_}} + function _br_(_bv_) + {try + {var _bw_=runtime.ml_z_to_int64(_bv_);return _bw_} + catch(_bx_) + {_bx_ = caml_wrap_exception(_bx_); + if(_bx_ === _a_)return caml_call1(Stdlib[2],cst_int64_of_big_int); + throw _bx_}} + var + Big_int_Z= + [0, + _t_, + _u_, + _b_, + _k_, + _c_, + _i_, + _a2_, + _d_, + _j_, + _e_, + _a3_, + _a4_, + _a5_, + _G_, + _H_, + _I_, + _a6_, + _a7_, + _a8_, + _a9_, + _a__, + _a$_, + _ba_, + _bb_, + _bc_, + _bd_, + _be_, + _bf_, + _bg_, + _bh_, + _x_, + _w_, + _bi_, + _C_, + _D_, + _bj_, + _bk_, + _bl_, + _bm_, + _bn_, + _bo_, + _bp_, + _bq_, + _br_, + _T_, + _l_, + _m_, + _n_, + _p_, + _q_, + _r_, + function(_bu_,_bt_,_bs_){return runtime.ml_z_extract(_bu_,_bt_,_bs_)}]; + caml_register_global(43,Big_int_Z,"Big_int_Z"); + return} + (globalThis)); + + +//# 1 "../../.js/zarith_stubs_js/zarith_stubs_js.cma.js" +(function(globalThis) + {"use strict"; + var runtime=globalThis.jsoo_runtime,Zarith_stubs_js=[0]; + runtime.caml_register_global(0,Zarith_stubs_js,"Zarith_stubs_js"); + return} + (globalThis)); + + +//# 1 "../../.js/easy-format/easy_format.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + var + global_data=runtime.caml_get_global_data(), + cst$3=caml_string_of_jsbytes(" "), + cst$4=caml_string_of_jsbytes(" "), + cst$5=caml_string_of_jsbytes(" "), + cst$6=caml_string_of_jsbytes(" "), + cst$7=caml_string_of_jsbytes(" "), + cst$8=caml_string_of_jsbytes(" "), + cst$9=caml_string_of_jsbytes(" "), + cst$10=caml_string_of_jsbytes(" "), + cst$1=caml_string_of_jsbytes(""), + cst$2=caml_string_of_jsbytes(""), + cst=caml_string_of_jsbytes(""), + cst$0=caml_string_of_jsbytes(""), + atom=[0,0], + list=[0,1,1,0,1,1,1,1,-921200851,2,0,0,0,0,0], + label=[0,726666127,1,2,0], + list_true=[0,1,1,1,1,1,1,1,-921200851,2,0,0,0,0,0], + list_false=[0,0,0,0,0,0,0,0,-921200851,2,0,0,0,0,0], + label_true=[0,726666127,1,2,0], + label_false=[0,726666127,0,2,0], + Stdlib_Buffer=global_data.Stdlib__Buffer, + Stdlib_Format=global_data.Stdlib__Format, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Printf=global_data.Stdlib__Printf, + Stdlib=global_data.Stdlib, + Stdlib_String=global_data.Stdlib__String, + Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, + _a_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")], + _b_=[0,[2,0,0],caml_string_of_jsbytes("%s")]; + function set_escape(fmt,escape) + {var + match=caml_call2(Stdlib_Format[98],fmt,0), + flush0=match[2], + print0=match[1], + tagf0=caml_call2(Stdlib_Format[106],fmt,0), + is_tag=[0,0]; + function mot(tag){is_tag[1] = 1;return caml_call1(tagf0[1],tag)} + function mct(tag){is_tag[1] = 1;return caml_call1(tagf0[2],tag)} + function print(s,p,n) + {return is_tag[1] + ?(caml_call3(print0,s,p,n),is_tag[1] = 0,0) + :caml_call4(escape,print0,s,p,n)} + var tagf=[0,mot,mct,tagf0[3],tagf0[4]]; + caml_call3(Stdlib_Format[96],fmt,print,flush0); + return caml_call2(Stdlib_Format[104],fmt,tagf)} + function define_styles(fmt,escape$0,l) + {if(0 !== l) + {caml_call2(Stdlib_Format[84],fmt,1); + var + _R_=2 * caml_call1(Stdlib_List[1],l) | 0, + tbl1=caml_call2(Stdlib_Hashtbl[1],0,_R_), + _S_=2 * caml_call1(Stdlib_List[1],l) | 0, + tbl2=caml_call2(Stdlib_Hashtbl[1],0,_S_), + _T_= + function(param) + {var style=param[2],style_name=param[1]; + caml_call3(Stdlib_Hashtbl[5],tbl1,style_name,style[1]); + return caml_call3(Stdlib_Hashtbl[5],tbl2,style_name,style[2])}; + caml_call2(Stdlib_List[17],_T_,l); + var + mark_open_tag= + function(param) + {if(param[1] === Stdlib_Format[79]) + {var style_name=param[2]; + try + {var _X_=caml_call2(Stdlib_Hashtbl[6],tbl1,style_name); + return _X_} + catch(_Y_) + {_Y_ = caml_wrap_exception(_Y_); + if(_Y_ === Stdlib[8])return cst; + throw _Y_}} + return cst$0}, + mark_close_tag= + function(param) + {if(param[1] === Stdlib_Format[79]) + {var style_name=param[2]; + try + {var _V_=caml_call2(Stdlib_Hashtbl[6],tbl2,style_name); + return _V_} + catch(_W_) + {_W_ = caml_wrap_exception(_W_); + if(_W_ === Stdlib[8])return cst$1; + throw _W_}} + return cst$2}, + _U_=caml_call2(Stdlib_Format[106],fmt,0), + tagf=[0,mark_open_tag,mark_close_tag,_U_[3],_U_[4]]; + caml_call2(Stdlib_Format[104],fmt,tagf)} + if(typeof escape$0 === "number")return 0; + if(258914209 <= escape$0[1]) + {var esc=escape$0[2];return set_escape(fmt,esc)} + var esc$0=escape$0[2]; + function escape(print,s,p,n) + {var s0=caml_call3(Stdlib_String[15],s,p,n),s1=caml_call1(esc$0,s0); + return caml_call3(print,s1,0,caml_ml_string_length(s1))} + return set_escape(fmt,escape)} + function pp_open_xbox(fmt,p,indent) + {var _Q_=p[8]; + if(451368025 <= _Q_) + {if(! (736550845 <= _Q_))return caml_call2(Stdlib_Format[7],fmt,indent)} + else + if(379096626 <= _Q_)return caml_call2(Stdlib_Format[5],fmt,0); + return caml_call2(Stdlib_Format[9],fmt,indent)} + function extra_box(p,l) + {var _M_=p[8]; + if(379096626 <= _M_) + var wrap=922275930 <= _M_?1:0; + else + var + _P_=function(param){return 0 === param[0]?1:0}, + wrap=caml_call2(Stdlib_List[32],_P_,l); + if(wrap) + {var _N_=function(fmt){return caml_call2(Stdlib_Format[3],fmt,0)}; + return [0, + function(fmt){return caml_call2(Stdlib_Format[11],fmt,0)}, + _N_]} + function _O_(param){return 0} + return [0,function(param){return 0},_O_]} + function open_tag(fmt,param) + {if(param) + {var s=param[1]; + return caml_call2(Stdlib_Format[80],fmt,[0,Stdlib_Format[79],s])} + return 0} + function close_tag(fmt,param) + {return param?caml_call2(Stdlib_Format[82],fmt,0):0} + function tag_string(fmt,o,s) + {if(o) + {var tag=o[1]; + caml_call2(Stdlib_Format[80],fmt,[0,Stdlib_Format[79],tag]); + caml_call2(Stdlib_Format[13],fmt,s); + return caml_call2(Stdlib_Format[82],fmt,0)} + return caml_call2(Stdlib_Format[13],fmt,s)} + function fprint_opt_label(fmt,param) + {if(param) + {var match=param[1],lp=match[2],lab=match[1]; + open_tag(fmt,lp[4]); + fprint_t(fmt,lab); + close_tag(fmt,lp[4]); + var _L_=lp[2]; + return _L_?caml_call2(Stdlib_Format[13],fmt,cst$5):_L_} + return 0} + function fprint_list_body_stick_left(fmt,p,sep,hd,tl) + {open_tag(fmt,p[12]); + fprint_t(fmt,hd); + function _K_(x) + {if(p[3])caml_call2(Stdlib_Format[13],fmt,cst$3); + tag_string(fmt,p[13],sep); + if(p[2]) + caml_call2(Stdlib_Format[27],fmt,0); + else + caml_call2(Stdlib_Format[29],fmt,0); + return fprint_t(fmt,x)} + caml_call2(Stdlib_List[17],_K_,tl); + return close_tag(fmt,p[12])} + function fprint_t(fmt,param) + {switch(param[0]) + {case 0:var p=param[2],s=param[1];return tag_string(fmt,p[1],s); + case 1: + var l=param[2],param$0=param[1],p$0=param$0[4]; + open_tag(fmt,p$0[10]); + if(p$0[7]) + fprint_list(fmt,0,param$0,l); + else + {var _C_=param$0[4],_D_=param$0[3],_E_=param$0[2],_F_=param$0[1]; + if(l) + {var tl=l[2],hd=l[1]; + tag_string(fmt,_C_[11],_F_); + if(_C_[1])caml_call2(Stdlib_Format[13],fmt,cst$8); + var _z_=_C_[8],indent=0; + if(379096626 === _z_) + caml_call2(Stdlib_Format[5],fmt,0); + else + if(736550845 <= _z_) + if(922275930 <= _z_) + caml_call2(Stdlib_Format[11],fmt,indent); + else + caml_call2(Stdlib_Format[9],fmt,indent); + else + if(-921200850 <= _z_) + caml_call2(Stdlib_Format[7],fmt,indent); + else + {var _A_=function(param){return 0 === param[0]?1:0}; + if(caml_call2(Stdlib_List[32],_A_,l)) + caml_call2(Stdlib_Format[11],fmt,indent); + else + caml_call2(Stdlib_Format[9],fmt,indent)} + if(_C_[4]) + fprint_list_body_stick_left(fmt,_C_,_E_,hd,tl); + else + {open_tag(fmt,_C_[12]); + fprint_t(fmt,hd); + var + _B_= + function(x) + {if(_C_[3]) + caml_call2(Stdlib_Format[27],fmt,0); + else + caml_call2(Stdlib_Format[29],fmt,0); + tag_string(fmt,_C_[13],_E_); + if(_C_[2])caml_call2(Stdlib_Format[13],fmt,cst$4); + return fprint_t(fmt,x)}; + caml_call2(Stdlib_List[17],_B_,tl); + close_tag(fmt,_C_[12])} + caml_call2(Stdlib_Format[3],fmt,0); + if(_C_[5])caml_call2(Stdlib_Format[13],fmt,cst$9); + tag_string(fmt,_C_[14],_D_)} + else + {tag_string(fmt,_C_[11],_F_); + var _G_=_C_[1],_H_=_G_ || _C_[5]; + if(_H_)caml_call2(Stdlib_Format[13],fmt,cst$10); + tag_string(fmt,_C_[14],_D_)}} + return close_tag(fmt,p$0[10]); + case 2: + var x=param[2],label=param[1],lp=label[2],lab=label[1]; + if(1 === x[0]) + {var + l$0=x[2], + match=x[1], + p$1=match[4], + cl=match[3], + sep=match[2], + op=match[1]; + if(p$1[6] && p$1[7]) + return fprint_list(fmt,[0,label],[0,op,sep,cl,p$1],l$0)} + var indent$0=lp[3]; + caml_call2(Stdlib_Format[9],fmt,0); + open_tag(fmt,lp[4]); + fprint_t(fmt,lab); + close_tag(fmt,lp[4]); + var _I_=lp[1]; + if(726666127 === _I_) + if(lp[2]) + caml_call3(Stdlib_Format[31],fmt,1,indent$0); + else + caml_call3(Stdlib_Format[31],fmt,0,indent$0); + else + if(744337004 <= _I_) + {if(lp[2])caml_call2(Stdlib_Format[23],fmt,32)} + else + {caml_call2(Stdlib_Format[34],fmt,0); + var _J_=caml_call2(Stdlib_String[1],indent$0,32); + caml_call2(Stdlib_Format[13],fmt,_J_)} + fprint_t(fmt,x); + return caml_call2(Stdlib_Format[3],fmt,0); + default:var f=param[1];return caml_call1(f,fmt)}} + function fprint_list(fmt,label,param,l) + {var _s_=param[4],_t_=param[3],_u_=param[1]; + if(l) + {var tl=l[2],hd=l[1]; + if(0 !== tl && ! _s_[4]) + {var + p$0=param[4], + cl$0=param[3], + sep$0=param[2], + op$0=param[1], + base_indent=p$0[9], + _x_=p$0[2]?1:0, + sep_indent=caml_ml_string_length(sep$0) + _x_ | 0, + indent$0=base_indent + sep_indent | 0; + pp_open_xbox(fmt,p$0,indent$0); + fprint_opt_label(fmt,label); + tag_string(fmt,p$0[11],op$0); + if(p$0[1]) + caml_call2(Stdlib_Format[27],fmt,0); + else + caml_call2(Stdlib_Format[29],fmt,0); + var + match$0=extra_box(p$0,l), + close_extra$0=match$0[2], + open_extra$0=match$0[1]; + caml_call1(open_extra$0,fmt); + fprint_t(fmt,hd); + var + _y_= + function(x) + {if(p$0[3]) + caml_call3(Stdlib_Format[31],fmt,1,- sep_indent | 0); + else + caml_call3(Stdlib_Format[31],fmt,0,- sep_indent | 0); + tag_string(fmt,p$0[13],sep$0); + if(p$0[2])caml_call2(Stdlib_Format[13],fmt,cst$7); + return fprint_t(fmt,x)}; + caml_call2(Stdlib_List[17],_y_,tl); + caml_call1(close_extra$0,fmt); + if(p$0[5]) + caml_call3(Stdlib_Format[31],fmt,1,- indent$0 | 0); + else + caml_call3(Stdlib_Format[31],fmt,0,- indent$0 | 0); + tag_string(fmt,p$0[14],cl$0); + return caml_call2(Stdlib_Format[3],fmt,0)} + var p=param[4],cl=param[3],sep=param[2],op=param[1],indent=p[9]; + pp_open_xbox(fmt,p,indent); + fprint_opt_label(fmt,label); + tag_string(fmt,p[11],op); + if(p[1]) + caml_call2(Stdlib_Format[27],fmt,0); + else + caml_call2(Stdlib_Format[29],fmt,0); + var match=extra_box(p,l),close_extra=match[2],open_extra=match[1]; + caml_call1(open_extra,fmt); + fprint_list_body_stick_left(fmt,p,sep,hd,tl); + caml_call1(close_extra,fmt); + if(p[5]) + caml_call3(Stdlib_Format[31],fmt,1,- indent | 0); + else + caml_call3(Stdlib_Format[31],fmt,0,- indent | 0); + tag_string(fmt,p[14],cl); + return caml_call2(Stdlib_Format[3],fmt,0)} + fprint_opt_label(fmt,label); + tag_string(fmt,_s_[11],_u_); + var _v_=_s_[1],_w_=_v_ || _s_[5]; + if(_w_)caml_call2(Stdlib_Format[13],fmt,cst$6); + return tag_string(fmt,_s_[14],_t_)} + function to_formatter(fmt,x) + {function init_acc(param) + {var switch$0=0; + switch(param[0]) + {case 1:if(451368025 === param[1][4][8])switch$0 = 1;break; + case 2:if(3884224 === param[1][2][1])switch$0 = 1;break + } + return switch$0?1:0} + function merge_acc(force_breaks1,force_breaks2) + {var force_breaks1$0=force_breaks1 || force_breaks2; + return force_breaks1$0} + function map_node(x,force_breaks) + {switch(x[0]) + {case 1: + var + _j_=x[1], + _k_=_j_[4], + _l_=_k_[8], + _m_=_j_[3], + _n_=_j_[2], + _o_=_j_[1]; + if(379096626 !== _l_) + {if(451368025 === _l_)return [0,x,1]; + if(610243080 === _l_)return [0,x,force_breaks]; + var children=x[2]; + if(force_breaks) + {var + p= + [0, + _k_[1], + _k_[2], + _k_[3], + _k_[4], + _k_[5], + _k_[6], + _k_[7], + 610243080, + _k_[9], + _k_[10], + _k_[11], + _k_[12], + _k_[13], + _k_[14]]; + return [0,[1,[0,_o_,_n_,_m_,p],children],1]} + return [0,x,0]} + break; + case 2: + var _p_=x[1],_q_=_p_[2],_r_=_p_[1]; + if(726666127 === _q_[1]) + {var b=x[2]; + if(force_breaks) + {var lp=[0,-76840209,_q_[2],_q_[3],_q_[4]]; + return [0,[2,[0,_r_,lp],b],1]} + return [0,x,0]} + break + } + return [0,x,force_breaks]} + function aux(x$0) + {switch(x$0[0]) + {case 0:var acc=init_acc(x$0);return map_node(x$0,acc); + case 1: + var + children=x$0[2], + param$1=x$0[1], + param$2=caml_call2(Stdlib_List[21],aux,children), + new_children=0, + accs=0, + param=param$2; + for(;;) + {if(param) + {var + param$0=param[2], + match=param[1], + y=match[2], + x=match[1], + ys=[0,y,accs], + xs=[0,x,new_children], + new_children=xs, + accs=ys, + param=param$0; + continue} + var + _i_=init_acc(x$0), + acc$0=caml_call3(Stdlib_List[25],merge_acc,_i_,accs); + return map_node([1,param$1,new_children],acc$0)} + case 2: + var + x2=x$0[2], + match$0=x$0[1], + param$3=match$0[2], + x1=match$0[1], + acc0=init_acc(x$0), + match$1=aux(x1), + acc1=match$1[2], + new_x1=match$1[1], + match$2=aux(x2), + acc2=match$2[2], + new_x2=match$2[1], + acc$1=merge_acc(merge_acc(acc0,acc1),acc2); + return map_node([2,[0,new_x1,param$3],new_x2],acc$1); + default:var acc$2=init_acc(x$0);return map_node(x$0,acc$2)}} + var match=aux(x),new_x=match[1]; + fprint_t(fmt,new_x); + return caml_call2(Stdlib_Format[38],fmt,0)} + function to_buffer(opt,_h_,buf,x) + {if(opt)var sth=opt[1],escape=sth;else var escape=870530776; + if(_h_)var sth$0=_h_[1],styles=sth$0;else var styles=0; + var fmt=caml_call1(Stdlib_Format[111],buf); + define_styles(fmt,escape,styles); + return to_formatter(fmt,x)} + function to_string(escape,styles,x) + {var buf=caml_call1(Stdlib_Buffer[1],500); + to_buffer(escape,styles,buf,x); + return caml_call1(Stdlib_Buffer[2],buf)} + function to_channel(opt,_g_,oc,x) + {if(opt)var sth=opt[1],escape=sth;else var escape=870530776; + if(_g_)var sth$0=_g_[1],styles=sth$0;else var styles=0; + var fmt=caml_call1(Stdlib_Format[108],oc); + define_styles(fmt,escape,styles); + return to_formatter(fmt,x)} + function to_stdout(escape,styles,x) + {return to_channel(escape,styles,Stdlib[39],x)} + function to_stderr(escape,styles,x) + {return to_channel(escape,styles,Stdlib[40],x)} + function fprint_t$0(buf,param) + {var param$0=param; + for(;;) + switch(param$0[0]) + {case 0:var s=param$0[1];return caml_call2(Stdlib_Buffer[16],buf,s); + case 1: + var + l=param$0[2], + param$1=param$0[1], + _c_=param$1[3], + _e_=param$1[1], + _d_=param$1[2]; + if(l) + {var tl=l[2],x$0=l[1]; + caml_call2(Stdlib_Buffer[16],buf,_e_); + fprint_t$0(buf,x$0); + var + _f_= + function(x) + {caml_call2(Stdlib_Buffer[16],buf,_d_); + return fprint_t$0(buf,x)}; + caml_call2(Stdlib_List[17],_f_,tl); + return caml_call2(Stdlib_Buffer[16],buf,_c_)} + return caml_call4(Stdlib_Printf[5],buf,_a_,_e_,_c_); + case 2: + var x=param$0[2],label=param$0[1],label$0=label[1]; + fprint_t$0(buf,label$0); + var param$0=x; + continue; + default: + var f=param$0[1],fmt=caml_call1(Stdlib_Format[111],buf); + caml_call1(f,fmt); + return caml_call2(Stdlib_Format[38],fmt,0)}} + function to_buffer$0(buf,x){return fprint_t$0(buf,x)} + function to_string$0(x) + {var buf=caml_call1(Stdlib_Buffer[1],500); + to_buffer$0(buf,x); + return caml_call1(Stdlib_Buffer[2],buf)} + function to_formatter$0(fmt,x) + {var s=to_string$0(x); + caml_call3(Stdlib_Format[129],fmt,_b_,s); + return caml_call2(Stdlib_Format[38],fmt,0)} + function to_channel$0(oc,x) + {var buf=caml_call1(Stdlib_Buffer[1],500); + to_buffer$0(buf,x); + return caml_call2(Stdlib_Buffer[10],oc,buf)} + function to_stdout$0(x){return to_channel$0(Stdlib[39],x)} + function to_stderr$0(x){return to_channel$0(Stdlib[40],x)} + var + Easy_format= + [0, + atom, + list, + label, + [0, + define_styles, + to_formatter, + to_buffer, + to_string, + to_channel, + to_stdout, + to_stderr], + [0, + to_buffer$0, + to_string$0, + to_channel$0, + to_stdout$0, + to_stderr$0, + to_formatter$0], + [0,list_true,label_true,list_false,label_false]]; + runtime.caml_register_global(28,Easy_format,"Easy_format"); + return} + (globalThis)); + + +//# 1 "../../.js/biniou/biniou.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_bytes_get=runtime.caml_bytes_get, + caml_bytes_set=runtime.caml_bytes_set, + caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get, + caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set, + caml_check_bound=runtime.caml_check_bound, + caml_create_bytes=runtime.caml_create_bytes, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_make_vect=runtime.caml_make_vect, + caml_ml_bytes_length=runtime.caml_ml_bytes_length, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_obj_tag=runtime.caml_obj_tag, + caml_register_global=runtime.caml_register_global, + caml_string_get=runtime.caml_string_get, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_string_unsafe_get=runtime.caml_string_unsafe_get, + caml_sys_getenv=runtime.caml_sys_getenv, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + function caml_call5(f,a0,a1,a2,a3,a4) + {return f.length == 5 + ?f(a0,a1,a2,a3,a4) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} + var + global_data=runtime.caml_get_global_data(), + cst_Bi_util_print_bits=caml_string_of_jsbytes("Bi_util.print_bits"), + cst_Bi_util_print_bits$0=caml_string_of_jsbytes("Bi_util.print_bits"), + cst_Bi_util_Error=caml_string_of_jsbytes("Bi_util.Error"), + cst_Corrupted_data_invalid_ref= + caml_string_of_jsbytes("Corrupted data (invalid reference)"), + cst_Bi_share_Rd_poly_create_ty= + caml_string_of_jsbytes + ("Bi_share.Rd_poly.create_type_id: exhausted available type_id's"), + cst_Bi_inbuf_refill_from_chann= + caml_string_of_jsbytes("Bi_inbuf.refill_from_channel"), + cst_Bi_inbuf_End_of_input=caml_string_of_jsbytes("Bi_inbuf.End_of_input"), + cst_Buf_extend_reached_Sys_max= + caml_string_of_jsbytes("Buf.extend: reached Sys.max_string_length"), + cst_Junk_input_after_end_of_vi= + caml_string_of_jsbytes("Junk input after end of vint"), + cst_Unterminated_vint_or_vint_= + caml_string_of_jsbytes + ("Unterminated vint or vint exceeding range of OCaml ints"), + cst_Vint_exceeding_range_of_OC= + caml_string_of_jsbytes("Vint exceeding range of OCaml ints"), + cst$0=caml_string_of_jsbytes(""), + cst_test_stream_dat=caml_string_of_jsbytes("test-stream.dat"), + cst_test_stream_dat$0=caml_string_of_jsbytes("test-stream.dat"), + cst=caml_string_of_jsbytes("\0\0\0\0"), + cst_Corrupted_stream_excessive= + caml_string_of_jsbytes("Corrupted stream: excessive chunk length"), + cst_Chunk_length_exceeds_suppo$0= + caml_string_of_jsbytes + ("Chunk length exceeds supported range on this platform"), + cst_Chunk_length_exceeds_suppo= + caml_string_of_jsbytes + ("Chunk length exceeds supported range on this platform"), + cst_Bi_stream=caml_string_of_jsbytes("Bi_stream: "), + cst_Bi_io_write_t_Malformed_Ta= + caml_string_of_jsbytes("Bi_io.write_t: Malformed `Table"), + cst_Corrupted_data_invalid_tag$0= + caml_string_of_jsbytes("Corrupted data (invalid tag)"), + cst_unit=caml_string_of_jsbytes("unit"), + cst$1=caml_string_of_jsbytes("]"), + cst$2=caml_string_of_jsbytes(","), + cst$3=caml_string_of_jsbytes("["), + cst$4=caml_string_of_jsbytes("[]"), + cst$5=caml_string_of_jsbytes("}"), + cst$6=caml_string_of_jsbytes(","), + cst$7=caml_string_of_jsbytes("{"), + cst_true=caml_string_of_jsbytes("true"), + cst_false=caml_string_of_jsbytes("false"), + cst$8=caml_string_of_jsbytes(")"), + cst$9=caml_string_of_jsbytes(","), + cst$10=caml_string_of_jsbytes("("), + cst$11=caml_string_of_jsbytes(":"), + cst$12=caml_string_of_jsbytes(">"), + cst$13=caml_string_of_jsbytes(""), + cst$14=caml_string_of_jsbytes("<"), + cst$15=caml_string_of_jsbytes(">"), + cst$16=caml_string_of_jsbytes("<"), + cst$17=caml_string_of_jsbytes("[]"), + cst$18=caml_string_of_jsbytes(""), + cst_Some=caml_string_of_jsbytes("Some"), + cst_None=caml_string_of_jsbytes("None"), + cst_Corrupted_data_invalid_tag= + caml_string_of_jsbytes("Corrupted data (invalid tag)"), + cst_Corrupted_data_string= + caml_string_of_jsbytes("Corrupted data (string)"), + cst_Corrupted_data_bool_value= + caml_string_of_jsbytes("Corrupted data (bool value)"), + cst_Corrupted_data_unit_value= + caml_string_of_jsbytes("Corrupted data (unit value)"), + s=caml_string_of_jsbytes("?\xf0\x06\x05\x04\x03\x02\x01"), + cst_Corrupted_data_invalid_num= + caml_string_of_jsbytes("Corrupted data (invalid numtag)"), + cst_Corrupted_data_invalid_fie= + caml_string_of_jsbytes("Corrupted data (invalid field hashtag)"), + cst_Cygwin=caml_string_of_jsbytes("Cygwin"), + cst_Unix=caml_string_of_jsbytes("Unix"), + cst_Win32=caml_string_of_jsbytes("Win32"), + cst_bdump_dict=caml_string_of_jsbytes("_bdump-dict"), + cst_HOMEPATH=caml_string_of_jsbytes("HOMEPATH"), + cst_bdump_dict$0=caml_string_of_jsbytes(".bdump-dict"), + cst_HOME=caml_string_of_jsbytes("HOME"), + cst_bdump_dict$1=caml_string_of_jsbytes(".bdump-dict"), + cst_HOME$0=caml_string_of_jsbytes("HOME"), + Stdlib=global_data.Stdlib, + Stdlib_Bytes=global_data.Stdlib__Bytes, + Stdlib_Char=global_data.Stdlib__Char, + Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, + Stdlib_Sys=global_data.Stdlib__Sys, + Stdlib_String=global_data.Stdlib__String, + Stdlib_Printf=global_data.Stdlib__Printf, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Array=global_data.Stdlib__Array, + Assert_failure=global_data.Assert_failure, + Stdlib_Stream=global_data.Stdlib__Stream, + Easy_format=global_data.Easy_format, + CamlinternalLazy=global_data.CamlinternalLazy, + Stdlib_Obj=global_data.Stdlib__Obj, + Stdlib_Printexc=global_data.Stdlib__Printexc, + Stdlib_Buffer=global_data.Stdlib__Buffer, + Stdlib_Filename=global_data.Stdlib__Filename, + Error=[248,cst_Bi_util_Error,caml_fresh_oo_id(0)], + _g_= + [0, + [11,caml_string_of_jsbytes("Corrupted stream: "),[1,0]], + caml_string_of_jsbytes("Corrupted stream: %C")], + _f_= + [0, + [11, + caml_string_of_jsbytes("Corrupted stream: excessive chunk length ("), + [4,3,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]], + caml_string_of_jsbytes + ("Corrupted stream: excessive chunk length (%i bytes)")], + _i_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),131,22], + _j_=[0,2], + _h_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),102,20], + _e_= + [0, + [11, + caml_string_of_jsbytes("unsupported word size ("), + [4,3,0,0,[12,41,0]]], + caml_string_of_jsbytes("unsupported word size (%i)")], + _d_= + [0, + [11, + caml_string_of_jsbytes("unsupported word size ("), + [4,3,0,0,[12,41,0]]], + caml_string_of_jsbytes("unsupported word size (%i)")], + _s_= + [0, + [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,2],0,0]], + caml_string_of_jsbytes("0x%02x")], + _t_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _u_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")], + _v_= + [0, + [11, + caml_string_of_jsbytes("shared"), + [4,3,0,0,[11,caml_string_of_jsbytes(" ->"),0]]], + caml_string_of_jsbytes("shared%i ->")], + _w_= + [0, + [11,caml_string_of_jsbytes("shared"),[4,3,0,0,0]], + caml_string_of_jsbytes("shared%i")], + _x_= + [0, + [11,caml_string_of_jsbytes("0x"),[7,6,[0,2,16],0,0]], + caml_string_of_jsbytes("0x%016Lx")], + _y_= + [0, + [11,caml_string_of_jsbytes("0x"),[5,6,[0,2,8],0,0]], + caml_string_of_jsbytes("0x%08lx")], + _z_= + [0, + [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,4],0,0]], + caml_string_of_jsbytes("0x%04x")], + _A_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _B_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _D_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")], + _C_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")], + _p_=[0,951901561,0], + _q_=[0,504440814,0], + _n_=[0,caml_string_of_jsbytes("src/bi_io.ml"),270,4], + _o_=[0,caml_string_of_jsbytes("src/bi_io.ml"),274,4], + _m_=[0,caml_string_of_jsbytes("src/bi_io.ml"),212,11], + _k_= + [0, + [11, + caml_string_of_jsbytes("Bi_io.make_unhash: "), + [3, + 0, + [11, + caml_string_of_jsbytes(" and "), + [3, + 0, + [11, + caml_string_of_jsbytes + (" have the same hash, please pick another name"), + 0]]]]], + caml_string_of_jsbytes + ("Bi_io.make_unhash: %S and %S have the same hash, please pick another name")], + _l_=[0,caml_string_of_jsbytes("src/bi_io.ml"),169,13], + _H_=[0,caml_string_of_jsbytes("src/bi_io.ml"),85,2], + _G_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _F_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _E_= + [0, + [11, + caml_string_of_jsbytes("Cannot load dictionary from "), + [3,0,[11,caml_string_of_jsbytes(": "),[2,0,[12,10,[10,0]]]]]], + caml_string_of_jsbytes("Cannot load dictionary from %S: %s\n%!")]; + function error(s){throw [0,Error,s]} + function string8_of_int(x) + {var s=caml_create_bytes(8),i=0; + for(;;) + {caml_bytes_set + (s, + 7 - i | 0, + caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0))); + var _c4_=i + 1 | 0; + if(7 !== i){var i=_c4_;continue} + return caml_call1(Stdlib_Bytes[6],s)}} + function string4_of_int(x) + {var s=caml_create_bytes(4),i=0; + for(;;) + {caml_bytes_set + (s, + 3 - i | 0, + caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0))); + var _c3_=i + 1 | 0; + if(3 !== i){var i=_c3_;continue} + return caml_call1(Stdlib_Bytes[6],s)}} + function print_bits(opt,len,s) + {if(opt)var sth=opt[1],pos=sth;else var pos=0; + var slen=caml_ml_string_length(s),_cT_=pos < 0?1:0; + if(_cT_) + var _cU_=_cT_; + else + var _c2_=0 < pos?1:0,_cU_=_c2_?slen <= pos?1:0:_c2_; + if(_cU_)caml_call1(Stdlib[1],cst_Bi_util_print_bits); + if(len) + var + len$0=len[1], + _cV_= + (slen - pos | 0) < len$0 + ?caml_call1(Stdlib[1],cst_Bi_util_print_bits$0) + :len$0, + len$1=_cV_; + else + var len$1=slen - pos | 0; + var r=caml_create_bytes(len$1 * 9 | 0),_cX_=len$1 - 1 | 0,_cW_=0; + if(! (_cX_ < 0)) + {var i=_cW_; + a: + for(;;) + {var k=i * 9 | 0,x=caml_string_get(s,pos + i | 0),j=0; + for(;;) + {var _c0_=0 === ((x >>> (7 - j | 0) | 0) & 1)?48:49; + caml_bytes_set(r,k + j | 0,_c0_); + var _c1_=j + 1 | 0; + if(7 !== j){var j=_c1_;continue} + var _cY_=0 === ((i + 1 | 0) % 8 | 0)?10:32; + caml_bytes_set(r,k + 8 | 0,_cY_); + var _cZ_=i + 1 | 0; + if(_cX_ !== i){var i=_cZ_;continue a} + break} + break}} + return caml_call1(Stdlib_Bytes[6],r)} + var c=[0,0],r=[0,-1]; + for(;;) + {if(0 === r[1]) + {var + int_size=c[1], + Bi_util= + [0,Error,error,string8_of_int,string4_of_int,print_bits,int_size]; + caml_register_global(101,Bi_util,"Bi_util"); + var + n=[0,0], + dummy_type_id=0, + create_type_id= + function(param) + {n[1]++; + return 0 <= n[1] + ?n[1] + :caml_call1(Stdlib[2],cst_Bi_share_Rd_poly_create_ty)}, + equal= + function(param,_cQ_) + {var + t2=_cQ_[2], + x2=_cQ_[1], + t1=param[2], + x1=param[1], + _cR_=x1 === x2?1:0, + _cS_=_cR_?t1 === t2?1:0:_cR_; + return _cS_}, + hash=Stdlib_Hashtbl[28], + H=caml_call1(Stdlib_Hashtbl[26],[0,equal,hash]), + create=H[1], + clear= + function(tbl) + {var _cP_=0 < caml_call1(H[15],tbl)?1:0; + return _cP_?caml_call1(H[2],tbl):_cP_}, + put= + function(tbl,k,pos) + {try + {var pos0=caml_call2(H[7],tbl,k),_cN_=pos - pos0 | 0;return _cN_} + catch(_cO_) + {_cO_ = caml_wrap_exception(_cO_); + if(_cO_ === Stdlib[8]){caml_call3(H[5],tbl,k,pos);return 0} + throw _cO_}}, + create$0=function(n){return caml_call2(Stdlib_Hashtbl[1],0,n)}, + clear$0=Stdlib_Hashtbl[2], + put$0= + function(tbl,pos,x){return caml_call3(Stdlib_Hashtbl[5],tbl,pos,x)}, + get= + function(tbl,pos) + {try + {var _cL_=caml_call2(Stdlib_Hashtbl[6],tbl,pos);return _cL_} + catch(_cM_) + {_cM_ = caml_wrap_exception(_cM_); + if(_cM_ === Stdlib[8]) + return error(cst_Corrupted_data_invalid_ref); + throw _cM_}}, + Rd=[0,create$0,clear$0,put$0,get], + _a_=[0,create,clear,put], + Bi_share=[0,dummy_type_id,create_type_id,_a_,Rd]; + caml_register_global(103,Bi_share,"Bi_share"); + var + End_of_input=[248,cst_Bi_inbuf_End_of_input,caml_fresh_oo_id(0)], + try_preread= + function(ib,n) + {return (ib[3] - ib[2] | 0) < n + ?(caml_call2(ib[6],ib,n), + caml_call2(Stdlib[16],ib[3] - ib[2] | 0,n)) + :n}, + read= + function(ib,n) + {var pos=ib[2]; + if(n <= (ib[3] - pos | 0)){ib[2] = pos + n | 0;return pos} + if(n <= try_preread(ib,n)) + {var pos$0=ib[2];ib[2] = ib[2] + n | 0;return pos$0} + throw End_of_input}, + read_char= + function(ib) + {var pos=ib[2]; + if(0 < (ib[3] - pos | 0)) + {var c=caml_bytes_unsafe_get(ib[1],pos); + ib[2] = pos + 1 | 0; + return c} + if(0 < try_preread(ib,1)) + {var pos$0=ib[2],c$0=caml_bytes_unsafe_get(ib[1],pos$0); + ib[2] = pos$0 + 1 | 0; + return c$0} + throw End_of_input}, + peek= + function(ib) + {var pos=ib[2]; + if(0 < (ib[3] - pos | 0))return caml_bytes_unsafe_get(ib[1],pos); + if(0 < try_preread(ib,1)) + return caml_bytes_unsafe_get(ib[1],ib[2]); + throw End_of_input}, + from_bytes= + function(opt,_cJ_,s) + {if(opt)var sth=opt[1],pos=sth;else var pos=0; + if(_cJ_)var sth$0=_cJ_[1],shrlen=sth$0;else var shrlen=16; + var _cK_=caml_call1(Rd[1],shrlen); + return [0, + s, + pos, + caml_ml_bytes_length(s), + - pos | 0, + caml_ml_bytes_length(s), + function(ib,n){return 0}, + _cK_]}, + from_string= + function(pos,shrlen,s) + {return from_bytes(pos,shrlen,caml_call1(Stdlib_Bytes[5],s))}, + from_channel= + function(opt,_cF_,ic) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_cF_)var sth$0=_cF_[1],shrlen=sth$0;else var shrlen=16; + var _cG_=caml_call1(Rd[1],shrlen); + return [0, + caml_create_bytes(len), + 0, + 0, + 0, + len, + function(ib,n$0) + {if(ib[5] < n$0) + return caml_call1(Stdlib[1],cst_Bi_inbuf_refill_from_chann); + var pos$1=ib[3] - ib[2] | 0,_cH_=pos$1 < n$0?1:0; + if(_cH_) + {var s=ib[1]; + caml_call5(Stdlib_Bytes[11],s,ib[2],s,0,pos$1); + var len$1=n$0 - pos$1 | 0,pos=pos$1,len=len$1,accu=0; + for(;;) + {var n=caml_call4(Stdlib[84],ic,s,pos,len); + if(n < len && 0 < n) + {var + accu$0=accu + n | 0, + len$0=len - n | 0, + pos$0=pos + n | 0, + pos=pos$0, + len=len$0, + accu=accu$0; + continue} + var really_read=accu + n | 0; + ib[4] = ib[4] + ib[2] | 0; + ib[2] = 0; + ib[3] = pos$1 + really_read | 0; + var _cI_=0; + break}} + else + var _cI_=_cH_; + return _cI_}, + _cG_]}, + Bi_inbuf= + [0, + End_of_input, + try_preread, + read, + read_char, + peek, + from_string, + from_bytes, + from_channel]; + caml_register_global(104,Bi_inbuf,"Bi_inbuf"); + var + really_extend= + function(b,n) + {var + slen0=b[2], + reqlen=b[3] + n | 0, + x=caml_call2(Stdlib[17],reqlen,2 * slen0 | 0), + slen= + x <= Stdlib_Sys[12] + ?x + :Stdlib_Sys[12] < reqlen + ?caml_call1(Stdlib[1],cst_Buf_extend_reached_Sys_max) + :Stdlib_Sys[12], + s=caml_create_bytes(slen); + caml_call5(Stdlib_Bytes[11],b[1],0,s,0,b[3]); + b[1] = s; + b[2] = slen; + return 0}, + flush_to_output= + function(abstract_output,b,n) + {var _cD_=b[3]; + caml_call3 + (abstract_output,caml_call1(Stdlib_Bytes[6],b[1]),0,_cD_); + b[4] = b[4] + b[3] | 0; + b[3] = 0; + var _cE_=b[2] < n?1:0; + return _cE_?really_extend(b,n):_cE_}, + flush_to_channel= + function(oc) + {var _cA_=caml_call1(Stdlib[69],oc); + return function(_cB_,_cC_){return flush_to_output(_cA_,_cB_,_cC_)}}, + create$1= + function(opt,_cz_,n) + {if(opt) + var sth=opt[1],make_room=sth; + else + var make_room=really_extend; + if(_cz_)var sth$0=_cz_[1],shrlen=sth$0;else var shrlen=16; + return [0, + caml_create_bytes(n), + n, + 0, + 0, + n, + make_room, + caml_call1(_a_[1],shrlen), + shrlen]}, + create_channel_writer= + function(opt,shrlen,oc) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + return create$1([0,flush_to_channel(oc)],shrlen,len)}, + flush_output_writer=function(b){return caml_call2(b[6],b,0)}, + create_output_writer= + function(opt,shrlen,out) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + var + _cw_= + caml_call1(runtime.caml_get_public_method(out,209784577,1),out); + return create$1 + ([0, + function(_cx_,_cy_){return flush_to_output(_cw_,_cx_,_cy_)}], + shrlen, + len)}, + extend= + function(b,n) + {var _cv_=b[2] < (b[3] + n | 0)?1:0; + return _cv_?caml_call2(b[6],b,n):_cv_}, + alloc= + function(b,n) + {extend(b,n);var pos=b[3];b[3] = pos + n | 0;return pos}, + add_sub= + function(blit,b,s,pos,len) + {extend(b,len); + caml_call5(blit,s,pos,b[1],b[3],len); + b[3] = b[3] + len | 0; + return 0}, + _b_=Stdlib_String[48], + add_substring= + function(_cr_,_cs_,_ct_,_cu_) + {return add_sub(_b_,_cr_,_cs_,_ct_,_cu_)}, + _c_=Stdlib_Bytes[11], + add_subbytes= + function(_cn_,_co_,_cp_,_cq_) + {return add_sub(_c_,_cn_,_co_,_cp_,_cq_)}, + add_string= + function(b,s){return add_substring(b,s,0,caml_ml_string_length(s))}, + add_bytes= + function(b,s){return add_subbytes(b,s,0,caml_ml_bytes_length(s))}, + add_char= + function(b,c){var pos=alloc(b,1);return caml_bytes_set(b[1],pos,c)}, + unsafe_add_char= + function(b,c) + {var len=b[3]; + caml_bytes_set(b[1],len,c); + b[3] = len + 1 | 0; + return 0}, + add_char2= + function(b,c1,c2) + {var pos=alloc(b,2),s=b[1]; + caml_bytes_unsafe_set(s,pos,c1); + caml_bytes_unsafe_set(s,pos + 1 | 0,c2); + return 0}, + add_char4= + function(b,c1,c2,c3,c4) + {var pos=alloc(b,4),s=b[1]; + caml_bytes_unsafe_set(s,pos,c1); + caml_bytes_unsafe_set(s,pos + 1 | 0,c2); + caml_bytes_unsafe_set(s,pos + 2 | 0,c3); + caml_bytes_unsafe_set(s,pos + 3 | 0,c4); + return 0}, + clear$1=function(b){b[4] = 0;b[3] = 0;return caml_call1(_a_[2],b[7])}, + reset= + function(b) + {if(caml_ml_bytes_length(b[1]) !== b[5]) + b[1] = caml_create_bytes(b[5]); + b[4] = 0; + b[3] = 0; + b[7] = caml_call1(_a_[1],b[8]); + return 0}, + contents=function(b){return caml_call3(Stdlib_Bytes[8],b[1],0,b[3])}, + Bi_outbuf= + [0, + really_extend, + flush_to_channel, + create$1, + contents, + create_channel_writer, + flush_output_writer, + create_output_writer, + flush_output_writer, + extend, + alloc, + add_bytes, + add_subbytes, + add_string, + add_substring, + add_char, + add_char2, + add_char4, + unsafe_add_char, + clear$1, + reset]; + caml_register_global(107,Bi_outbuf,"Bi_outbuf"); + if(0 === (int_size % 7 | 0)) + var m=int_size / 7 | 0,max_highest_byte=127,max_vint_bytes=m; + else + var + m$0=(int_size / 7 | 0) + 1 | 0, + h=(1 << (int_size % 7 | 0)) - 1 | 0, + max_highest_byte=h, + max_vint_bytes=m$0; + var + check_highest_byte= + function(x) + {var _cm_=max_highest_byte < x?1:0; + return _cm_?error(cst_Vint_exceeding_range_of_OC):_cm_}, + unsigned_of_signed= + function(i){return 0 <= i?i << 1:(-1 - i | 0) << 1 | 1}, + write_untagged_uvint= + function(buf,i) + {extend(buf,max_vint_bytes); + var x=[0,i]; + for(;;) + {if(0 === (x[1] >>> 7 | 0)) + return unsafe_add_char(buf,caml_call1(Stdlib_Char[1],x[1])); + var byte$0=128 | x[1] & 127; + unsafe_add_char(buf,caml_call1(Stdlib_Char[1],byte$0)); + x[1] = x[1] >>> 7 | 0; + continue}}, + write_untagged_svint= + function(buf,i) + {return write_untagged_uvint(buf,unsigned_of_signed(i))}, + uvint_of_uint= + function(buf,i) + {if(buf)var b=buf[1],buffer=b;else var buffer=create$1(0,0,10); + clear$1(buffer); + write_untagged_uvint(buffer,i); + return contents(buffer)}, + svint_of_int= + function(buf,i){return uvint_of_uint(buf,unsigned_of_signed(i))}, + read_untagged_uvint= + function(ib) + {var + avail=try_preread(ib,max_vint_bytes), + s=ib[1], + pos=ib[2], + x=[0,0]; + try + {var _cj_=avail - 1 | 0,_ci_=0; + if(! (_cj_ < 0)) + {var i=_ci_; + for(;;) + {var b=caml_bytes_get(s,pos + i | 0); + x[1] = (b & 127) << (7 * i | 0) | x[1]; + if(b < 128) + {ib[2] = (pos + i | 0) + 1 | 0; + if((i + 1 | 0) === max_vint_bytes)check_highest_byte(b); + throw Stdlib[3]} + var _ck_=i + 1 | 0; + if(_cj_ !== i){var i=_ck_;continue} + break}} + error(cst_Unterminated_vint_or_vint_)} + catch(_cl_) + {_cl_ = caml_wrap_exception(_cl_); + if(_cl_ !== Stdlib[3])throw _cl_} + return x[1]}, + read_untagged_svint= + function(ib) + {var i=read_untagged_uvint(ib); + return 0 === (i & 1)?i >>> 1 | 0:-1 - (i >>> 1 | 0) | 0}, + check_end_of_input= + function(ib) + {var _ch_=0 < try_preread(ib,1)?1:0; + return _ch_?error(cst_Junk_input_after_end_of_vi):_ch_}, + uint_of_uvint= + function(s) + {var ib=from_string(0,0,s),x=read_untagged_uvint(ib); + check_end_of_input(ib); + return x}, + int_of_svint= + function(s) + {var ib=from_string(0,0,s),x=read_untagged_svint(ib); + check_end_of_input(ib); + return x}, + Bi_vint= + [0, + uvint_of_uint, + svint_of_int, + uint_of_uvint, + int_of_svint, + write_untagged_uvint, + write_untagged_svint, + read_untagged_uvint, + read_untagged_svint]; + caml_register_global(110,Bi_vint,"Bi_vint"); + var + error$0= + function(s) + {var _cg_=caml_call2(Stdlib[28],cst_Bi_stream,s); + return caml_call1(Stdlib[2],_cg_)}, + read_stream= + function(of_string,ic) + {function _b__(i$2) + {var c=caml_call1(Stdlib[82],ic); + if(1 === c) + {var _ca_=Stdlib_Sys[9]; + if(32 === _ca_) + {var i$0=1; + for(;;) + {if(0 !== caml_call1(Stdlib[87],ic)) + error$0(cst_Chunk_length_exceeds_suppo$0); + var _cd_=i$0 + 1 | 0; + if(4 !== i$0){var i$0=_cd_;continue} + var n=[0,0],i=1; + for(;;) + {var _cb_=caml_call1(Stdlib[87],ic); + n[1] = n[1] << 8 | _cb_; + var _cc_=i + 1 | 0; + if(4 !== i){var i=_cc_;continue} + if(n[1] < 0)error$0(cst_Chunk_length_exceeds_suppo); + var len=n[1]; + break} + break}} + else + if(64 === _ca_) + {var n$0=[0,0],i$1=1; + for(;;) + {var _ce_=caml_call1(Stdlib[87],ic); + n$0[1] = n$0[1] << 8 | _ce_; + var _cf_=i$1 + 1 | 0; + if(8 !== i$1){var i$1=_cf_;continue} + if(n$0[1] < 0)error$0(cst_Corrupted_stream_excessive); + var len=n$0[1]; + break}} + else + var len=error$0(caml_call2(Stdlib_Printf[4],_d_,_ca_)); + if(Stdlib_Sys[12] < len) + error$0(caml_call2(Stdlib_Printf[4],_f_,len)); + var s=caml_create_bytes(len); + caml_call4(Stdlib[85],ic,s,0,len); + return [0,caml_call1(of_string,caml_call1(Stdlib_Bytes[6],s))]} + return c?error$0(caml_call2(Stdlib_Printf[4],_g_,c)):0} + var st=caml_call1(Stdlib_Stream[3],_b__),a=[0,[0]],pos=[0,0]; + function next(i) + {for(;;) + {if(a[1].length - 1 <= pos[1]) + {var match=caml_call1(Stdlib_Stream[11],st); + if(match) + {var a$0=match[1]; + caml_call1(Stdlib_Stream[12],st); + a[1] = a$0; + pos[1] = 0; + continue} + return 0} + var _b$_=pos[1],x=caml_check_bound(a[1],_b$_)[1 + _b$_]; + pos[1]++; + return [0,x]}} + return caml_call1(Stdlib_Stream[3],next)}, + write_stream= + function(opt,to_string,oc,st) + {if(opt)var sth=opt[1],chunk_len=sth;else var chunk_len=1024; + var n=[0,0],acc=[0,0]; + function flush_chunk(param) + {var _b9_=acc[1]; + if(_b9_) + {var + tl=_b9_[2], + x=_b9_[1], + r=[0,tl], + len=caml_call1(Stdlib_List[1],_b9_), + a=caml_make_vect(len,x), + _b6_=len - 2 | 0; + if(! (_b6_ < 0)) + {var i$1=_b6_; + for(;;) + {var _b7_=r[1]; + if(! _b7_)throw [0,Assert_failure,_h_]; + var tl$0=_b7_[2],hd=_b7_[1]; + caml_check_bound(a,i$1)[1 + i$1] = hd; + r[1] = tl$0; + var _b8_=i$1 - 1 | 0; + if(0 !== i$1){var i$1=_b8_;continue} + break}} + var a$0=a} + else + var a$0=[0]; + acc[1] = 0; + n[1] = 0; + var s=caml_call1(to_string,a$0); + caml_call2(Stdlib[65],oc,1); + var n$2=caml_ml_string_length(s),_b1_=Stdlib_Sys[9]; + if(32 === _b1_) + {caml_call2(Stdlib[66],oc,cst); + var n$0=[0,n$2],i=1; + for(;;) + {var _b2_=caml_call1(Stdlib[29],n$0[1] >>> 24 | 0); + caml_call2(Stdlib[65],oc,_b2_); + n$0[1] = n$0[1] << 8; + var _b3_=i + 1 | 0; + if(4 !== i){var i=_b3_;continue} + break}} + else + if(64 === _b1_) + {var n$1=[0,n$2],i$0=1; + for(;;) + {var _b4_=caml_call1(Stdlib[29],n$1[1] >>> 56 | 0); + caml_call2(Stdlib[65],oc,_b4_); + n$1[1] = n$1[1] << 8; + var _b5_=i$0 + 1 | 0; + if(8 !== i$0){var i$0=_b5_;continue} + break}} + else + error$0(caml_call2(Stdlib_Printf[4],_e_,_b1_)); + return caml_call2(Stdlib[66],oc,s)} + function _bZ_(x) + {n[1]++; + acc[1] = [0,x,acc[1]]; + var _b0_=chunk_len <= n[1]?1:0; + return _b0_?flush_chunk(0):_b0_} + caml_call2(Stdlib_Stream[8],_bZ_,st); + if(0 < n[1])flush_chunk(0); + return caml_call2(Stdlib[65],oc,0)}, + test= + function(l) + {function _bT_(x) + {if(0 <= x && ! (9 < x))return 0;throw [0,Assert_failure,_i_]} + caml_call2(Stdlib_List[17],_bT_,l); + function to_string(a) + {var + _bX_=caml_call1(Stdlib_Array[11],a), + _bY_=caml_call2(Stdlib_List[19],Stdlib[33],_bX_); + return caml_call2(Stdlib_String[6],cst$0,_bY_)} + function of_string(s) + {function _bV_(i) + {var _bW_=caml_string_get(s,i); + return runtime.caml_int_of_string + (caml_call2(Stdlib_String[1],1,_bW_))} + return caml_call2(Stdlib_Array[2],caml_ml_string_length(s),_bV_)} + var + st=caml_call1(Stdlib_Stream[4],l), + oc=caml_call1(Stdlib[60],cst_test_stream_dat); + write_stream(_j_,to_string,oc,st); + caml_call1(Stdlib[76],oc); + var + ic=caml_call1(Stdlib[79],cst_test_stream_dat$0), + st$0=read_stream(of_string,ic), + l$0=[0,0]; + function _bU_(i){l$0[1] = [0,i,l$0[1]];return 0} + caml_call2(Stdlib_Stream[8],_bU_,st$0); + caml_call1(Stdlib[93],ic); + return runtime.caml_equal(l,caml_call1(Stdlib_List[9],l$0[1]))}, + Bi_stream=[0,read_stream,write_stream,test]; + caml_register_global(114,Bi_stream,"Bi_stream"); + var + bool_tag=0, + int8_tag=1, + int16_tag=2, + int32_tag=3, + int64_tag=4, + float32_tag=11, + float64_tag=12, + uvint_tag=16, + svint_tag=17, + string_tag=18, + array_tag=19, + tuple_tag=20, + record_tag=21, + num_variant_tag=22, + variant_tag=23, + unit_tag=24, + table_tag=25, + shared_tag=26, + make_signed=function(x){return 1073741823 < x?x + 2147483648 | 0:x}, + hash_name= + function(s) + {var accu=[0,0],_bQ_=caml_ml_string_length(s) - 1 | 0,_bP_=0; + if(! (_bQ_ < 0)) + {var i=_bP_; + for(;;) + {var _bR_=caml_string_get(s,i); + accu[1] = (223 * accu[1] | 0) + _bR_ | 0; + var _bS_=i + 1 | 0; + if(_bQ_ !== i){var i=_bS_;continue} + break}} + accu[1] = accu[1] & 2147483647; + return make_signed(accu[1])}, + n$0=int_size - 31 | 0; + if(0 <= n$0) + {var + write_hashtag= + function(ob,h$0,has_arg) + {var h=h$0 << n$0 >>> n$0 | 0,pos=alloc(ob,4),s=ob[1]; + caml_bytes_unsafe_set + (s,pos + 3 | 0,caml_call1(Stdlib_Char[1],h & 255)); + var h$1=h >>> 8 | 0; + caml_bytes_unsafe_set + (s,pos + 2 | 0,caml_call1(Stdlib_Char[1],h$1 & 255)); + var h$2=h$1 >>> 8 | 0; + caml_bytes_unsafe_set + (s,pos + 1 | 0,caml_call1(Stdlib_Char[1],h$2 & 255)); + var h$3=h$2 >>> 8 | 0,_bO_=has_arg?h$3 | 128:h$3; + caml_bytes_unsafe_set(s,pos,caml_call1(Stdlib_Char[1],_bO_)); + return 0}, + string_of_hashtag= + function(h,has_arg) + {var ob=create$1(0,0,4); + write_hashtag(ob,h,has_arg); + return contents(ob)}, + read_hashtag= + function(ib,cont) + {var + i=read(ib,4), + s=ib[1], + x0=caml_bytes_get(s,i), + has_arg=128 <= x0?1:0, + x1=(x0 & 127) << 24, + x2=caml_bytes_get(s,i + 1 | 0) << 16, + x3=caml_bytes_get(s,i + 2 | 0) << 8, + x4=caml_bytes_get(s,i + 3 | 0), + h=make_signed(x1 | x2 | x3 | x4); + return caml_call3(cont,ib,h,has_arg)}, + read_field_hashtag= + function(ib) + {var i=read(ib,4),s=ib[1],x0=caml_bytes_unsafe_get(s,i); + if(x0 < 128)error(cst_Corrupted_data_invalid_fie); + var + x1=(x0 & 127) << 24, + x2=caml_bytes_unsafe_get(s,i + 1 | 0) << 16, + x3=caml_bytes_unsafe_get(s,i + 2 | 0) << 8, + x4=caml_bytes_unsafe_get(s,i + 3 | 0); + return make_signed(x1 | x2 | x3 | x4)}, + write_numtag= + function(ob,i,has_arg) + {var _bM_=i < 0?1:0,_bN_=_bM_ || (127 < i?1:0); + if(_bN_)error(cst_Corrupted_data_invalid_num); + var x=has_arg?i | 128:i; + return add_char(ob,caml_call1(Stdlib_Char[1],x))}, + read_numtag= + function(ib,cont) + {var i=read(ib,1),x=caml_bytes_get(ib[1],i),has_arg=128 <= x?1:0; + return caml_call3(cont,ib,x & 127,has_arg)}, + make_unhash= + function(l) + {var + _bE_=4 * caml_call1(Stdlib_List[1],l) | 0, + tbl=caml_call2(Stdlib_Hashtbl[1],0,_bE_); + function _bF_(s) + {var h=hash_name(s); + try + {var match=caml_call2(Stdlib_Hashtbl[6],tbl,h); + if(match) + {var s$0=match[1],_bI_=caml_string_notequal(s,s$0); + if(_bI_) + var + _bJ_=caml_call3(Stdlib_Printf[4],_k_,s,s$0), + _bK_=caml_call1(Stdlib[2],_bJ_); + else + var _bK_=_bI_; + return _bK_} + throw [0,Assert_failure,_l_]} + catch(_bL_) + {_bL_ = caml_wrap_exception(_bL_); + if(_bL_ === Stdlib[8]) + return caml_call3(Stdlib_Hashtbl[5],tbl,h,[0,s]); + throw _bL_}} + caml_call2(Stdlib_List[17],_bF_,l); + return function(h) + {try + {var _bG_=caml_call2(Stdlib_Hashtbl[6],tbl,h);return _bG_} + catch(_bH_) + {_bH_ = caml_wrap_exception(_bH_); + if(_bH_ === Stdlib[8])return 0; + throw _bH_}}}, + write_tag= + function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))}, + write_untagged_unit=function(ob,param){return add_char(ob,0)}, + write_untagged_bool= + function(ob,x){var _bD_=x?1:0;return add_char(ob,_bD_)}, + write_untagged_char=function(ob,x){return add_char(ob,x)}, + write_untagged_int8= + function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))}, + write_untagged_int16= + function(ob,x) + {add_char(ob,caml_call1(Stdlib_Char[1],x >>> 8 | 0)); + return add_char(ob,caml_call1(Stdlib_Char[1],x & 255))}, + write_untagged_int32= + function(ob,low) + {var high=low >>> 16 | 0; + add_char(ob,caml_call1(Stdlib_Char[1],high >>> 8 | 0)); + add_char(ob,caml_call1(Stdlib_Char[1],high & 255)); + add_char(ob,caml_call1(Stdlib_Char[1],(low >>> 8 | 0) & 255)); + return add_char(ob,caml_call1(Stdlib_Char[1],low & 255))}, + write_untagged_float32= + function(ob,x) + {return write_untagged_int32 + (ob,runtime.caml_int32_bits_of_float(x))}, + float_endianness= + [246, + function(_bC_) + {var match=caml_string_unsafe_get(1.,0); + if(63 === match)return 3305632; + if(match)throw [0,Assert_failure,_m_]; + return 624392470}], + read_untagged_float64= + function(ib) + {var + i=read(ib,8), + s=ib[1], + x=runtime.caml_obj_block(Stdlib_Obj[14],8), + _by_=caml_obj_tag(float_endianness), + _bz_= + 250 === _by_ + ?float_endianness[1] + :246 === _by_ + ?caml_call1(CamlinternalLazy[2],float_endianness) + :float_endianness; + if(624392470 <= _bz_) + {var j=0; + for(;;) + {caml_bytes_unsafe_set + (x,7 - j | 0,caml_bytes_unsafe_get(s,i + j | 0)); + var _bA_=j + 1 | 0; + if(7 !== j){var j=_bA_;continue} + break}} + else + {var j$0=0; + for(;;) + {caml_bytes_unsafe_set + (x,j$0,caml_bytes_unsafe_get(s,i + j$0 | 0)); + var _bB_=j$0 + 1 | 0; + if(7 !== j$0){var j$0=_bB_;continue} + break}} + return x}, + write_untagged_float64= + function(ob,x) + {var + i=alloc(ob,8), + s=ob[1], + _bu_=caml_obj_tag(float_endianness), + _bv_= + 250 === _bu_ + ?float_endianness[1] + :246 === _bu_ + ?caml_call1(CamlinternalLazy[2],float_endianness) + :float_endianness; + if(624392470 <= _bv_) + {var j=0; + for(;;) + {caml_bytes_unsafe_set + (s,i + j | 0,caml_string_unsafe_get(x,7 - j | 0)); + var _bw_=j + 1 | 0; + if(7 !== j){var j=_bw_;continue} + return 0}} + var j$0=0; + for(;;) + {caml_bytes_unsafe_set + (s,i + j$0 | 0,caml_string_unsafe_get(x,j$0)); + var _bx_=j$0 + 1 | 0; + if(7 !== j$0){var j$0=_bx_;continue} + return 0}}, + write_untagged_int64= + function(ob,x) + {return write_untagged_float64 + (ob,runtime.caml_int64_float_of_bits(x))}, + safety_test= + function(param) + {var + y=read_untagged_float64(from_string(0,0,s)), + x=1.00146962706651288; + if(1.00146962706651288 != y)throw [0,Assert_failure,_n_]; + var ob=create$1(0,0,8); + write_untagged_float64(ob,x); + var _bt_=caml_string_notequal(contents(ob),s); + if(_bt_)throw [0,Assert_failure,_o_]; + return _bt_}, + write_untagged_string= + function(ob,s) + {write_untagged_uvint(ob,caml_ml_string_length(s)); + return add_string(ob,s)}, + write_unit= + function(ob,param) + {write_tag(ob,unit_tag);return write_untagged_unit(ob,0)}, + write_bool= + function(ob,x) + {write_tag(ob,bool_tag);return write_untagged_bool(ob,x)}, + write_char= + function(ob,x) + {write_tag(ob,int8_tag);return write_untagged_char(ob,x)}, + write_int8= + function(ob,x) + {write_tag(ob,int8_tag);return write_untagged_int8(ob,x)}, + write_int16= + function(ob,x) + {write_tag(ob,int16_tag);return write_untagged_int16(ob,x)}, + write_int32= + function(ob,x) + {write_tag(ob,int32_tag);return write_untagged_int32(ob,x)}, + write_int64= + function(ob,x) + {write_tag(ob,int64_tag);return write_untagged_int64(ob,x)}, + write_float32= + function(ob,x) + {write_tag(ob,float32_tag);return write_untagged_float32(ob,x)}, + write_float64= + function(ob,x) + {write_tag(ob,float64_tag);return write_untagged_float64(ob,x)}, + write_string= + function(ob,x) + {write_tag(ob,string_tag);return write_untagged_string(ob,x)}, + write_uvint= + function(ob,x) + {write_tag(ob,uvint_tag);return write_untagged_uvint(ob,x)}, + write_svint= + function(ob,x) + {write_tag(ob,svint_tag);return write_untagged_svint(ob,x)}, + write_t= + function(ob,tagged,x) + {var tagged$0=tagged,x$0=x; + for(;;) + {if(typeof x$0 === "number") + {if(tagged$0)write_tag(ob,unit_tag); + return write_untagged_unit(ob,0)} + var _a__=x$0[1]; + if(708012133 <= _a__) + {if(847309489 <= _a__) + {if(928626971 === _a__) + {var x$1=x$0[2]; + if(tagged$0)write_tag(ob,float32_tag); + return write_untagged_float32(ob,x$1)} + if(951901561 <= _a__) + {if(1063160078 <= _a__) + {var x$2=x$0[2]; + if(tagged$0)write_tag(ob,uvint_tag); + return write_untagged_uvint(ob,x$2)} + var o=x$0[2]; + if(tagged$0)write_tag(ob,array_tag); + if(o) + {var + match=o[1], + a=match[2], + node_tag=match[1], + len=a.length - 1; + write_untagged_uvint(ob,len); + var _a$_=0 < len?1:0; + if(_a$_) + {write_tag(ob,node_tag); + var + _ba_=0, + _bb_=function(_bs_){return write_t(ob,_ba_,_bs_)}; + return caml_call2(Stdlib_Array[13],_bb_,a)} + return _a$_} + return write_untagged_uvint(ob,0)} + if(928627642 <= _a__) + {var x$3=x$0[2]; + if(tagged$0)write_tag(ob,float64_tag); + return write_untagged_float64(ob,x$3)} + var a$0=x$0[2]; + if(tagged$0)write_tag(ob,record_tag); + write_untagged_uvint(ob,a$0.length - 1); + var + _bc_= + function(param) + {var x=param[3],h=param[2]; + write_hashtag(ob,h,1); + return write_t(ob,1,x)}; + return caml_call2(Stdlib_Array[13],_bc_,a$0)} + if(737456202 <= _a__) + {if(815034505 <= _a__) + {var x$4=x$0[2]; + if(tagged$0)write_tag(ob,int8_tag); + return write_untagged_char(ob,x$4)} + var x$5=x$0[2]; + if(tagged$0)write_tag(ob,bool_tag); + return write_untagged_bool(ob,x$5)} + if(726928360 <= _a__) + {var a$1=x$0[2]; + if(tagged$0)write_tag(ob,tuple_tag); + write_untagged_uvint(ob,a$1.length - 1); + var + _bd_=1, + _be_=function(_br_){return write_t(ob,_bd_,_br_)}; + return caml_call2(Stdlib_Array[13],_be_,a$1)} + var match$0=x$0[2],x$6=match$0[3],h=match$0[2]; + if(tagged$0)write_tag(ob,variant_tag); + write_hashtag(ob,h,0 !== x$6?1:0); + if(x$6){var x$7=x$6[1],tagged$0=1,x$0=x$7;continue} + return 0} + if(-775957819 <= _a__) + {if(412180492 <= _a__) + {if(504440814 <= _a__) + {var o$0=x$0[2]; + if(tagged$0)write_tag(ob,table_tag); + if(o$0) + {var + match$1=o$0[1], + a$2=match$1[2], + fields=match$1[1], + row_num=a$2.length - 1; + write_untagged_uvint(ob,row_num); + var _bf_=0 < row_num?1:0; + if(_bf_) + {var col_num=fields.length - 1; + write_untagged_uvint(ob,col_num); + var + _bg_= + function(param) + {var tag=param[3],h=param[2]; + write_hashtag(ob,h,1); + return write_tag(ob,tag)}; + caml_call2(Stdlib_Array[13],_bg_,fields); + var _bh_=0 < row_num?1:0; + if(_bh_) + {var _bj_=row_num - 1 | 0,_bi_=0; + if(! (_bj_ < 0)) + {var i=_bi_; + for(;;) + {var ai=caml_check_bound(a$2,i)[1 + i]; + if(ai.length - 1 !== col_num) + caml_call1(Stdlib[1],cst_Bi_io_write_t_Malformed_Ta); + var _bn_=col_num - 1 | 0,_bm_=0; + if(! (_bn_ < 0)) + {var j=_bm_; + for(;;) + {write_t(ob,0,caml_check_bound(ai,j)[1 + j]); + var _bp_=j + 1 | 0; + if(_bn_ !== j){var j=_bp_;continue} + break}} + var _bo_=i + 1 | 0; + if(_bj_ !== i){var i=_bo_;continue} + break}} + var _bk_=0} + else + var _bk_=_bh_; + var _bl_=_bk_} + else + var _bl_=_bf_; + return _bl_} + return write_untagged_uvint(ob,0)} + var x$8=x$0[2]; + if(tagged$0)write_tag(ob,svint_tag); + return write_untagged_svint(ob,x$8)} + if(221365804 <= _a__) + {var match$2=x$0[2],x$9=match$2[2],i$0=match$2[1]; + if(tagged$0)write_tag(ob,num_variant_tag); + write_numtag(ob,i$0,0 !== x$9?1:0); + if(x$9){var x$10=x$9[1],tagged$0=1,x$0=x$10;continue} + return 0} + var x$11=x$0[2]; + if(tagged$0)write_tag(ob,shared_tag); + var + offset= + caml_call3 + (_a_[3],ob[7],[0,x$11,dummy_type_id],ob[4] + ob[3] | 0); + write_untagged_uvint(ob,offset); + var _bq_=0 === offset?1:0; + if(_bq_){var tagged$0=1,x$0=x$11;continue} + return _bq_} + if(-783416530 <= _a__) + {if(-783415859 <= _a__) + {var x$12=x$0[2]; + if(tagged$0)write_tag(ob,int64_tag); + return write_untagged_int64(ob,x$12)} + var x$13=x$0[2]; + if(tagged$0)write_tag(ob,int32_tag); + return write_untagged_int32(ob,x$13)} + if(-783416972 <= _a__) + {var x$14=x$0[2]; + if(tagged$0)write_tag(ob,int16_tag); + return write_untagged_int16(ob,x$14)} + var s=x$0[2]; + if(tagged$0)write_tag(ob,string_tag); + return write_untagged_string(ob,s)}}, + write_tree=function(ob,x){return write_t(ob,1,x)}, + string_of_tree= + function(x) + {var ob=create$1(0,0,1000);write_tree(ob,x);return contents(ob)}, + tag_of_tree= + function(x) + {if(typeof x === "number")return unit_tag; + var _a9_=x[1]; + return 708012133 <= _a9_ + ?847309489 <= _a9_ + ?928626971 === _a9_ + ?float32_tag + :951901561 <= _a9_ + ?1063160078 <= _a9_?uvint_tag:array_tag + :928627642 <= _a9_?float64_tag:record_tag + :737456202 <= _a9_ + ?815034505 <= _a9_?int8_tag:bool_tag + :726928360 <= _a9_?tuple_tag:variant_tag + :-775957819 <= _a9_ + ?412180492 <= _a9_ + ?504440814 <= _a9_?table_tag:svint_tag + :221365804 <= _a9_?num_variant_tag:shared_tag + :-783416530 <= _a9_ + ?-783415859 <= _a9_?int64_tag:int32_tag + :-783416972 <= _a9_?int16_tag:string_tag}, + read_tag=function(ib){return read_char(ib)}, + read_untagged_unit= + function(ib) + {var match=read_char(ib); + return match?error(cst_Corrupted_data_unit_value):0}, + read_untagged_bool= + function(ib) + {var match=read_char(ib); + return 1 === match + ?1 + :match?error(cst_Corrupted_data_bool_value):0}, + read_untagged_char=function(ib){return read_char(ib)}, + read_untagged_int8=function(ib){return read_char(ib)}, + read_untagged_int16= + function(ib) + {var i=read(ib,2),s=ib[1],_a8_=caml_bytes_get(s,i + 1 | 0); + return caml_bytes_get(s,i) << 8 | _a8_}, + read_untagged_int32= + function(ib) + {var + i=read(ib,4), + s=ib[1], + _a6_=caml_bytes_get(s,i + 1 | 0), + x1=caml_bytes_get(s,i) << 8 | _a6_, + _a7_=caml_bytes_get(s,i + 3 | 0), + x2=caml_bytes_get(s,i + 2 | 0) << 8 | _a7_; + return x1 << 16 | x2}, + read_untagged_float32= + function(ib) + {return runtime.caml_int32_float_of_bits(read_untagged_int32(ib))}, + read_untagged_int64= + function(ib) + {return runtime.caml_int64_bits_of_float + (read_untagged_float64(ib))}, + read_untagged_string= + function(ib) + {var + len=read_untagged_uvint(ib), + str=caml_create_bytes(len), + pos=[0,0], + rem=[0,len]; + for(;;) + {if(0 < rem[1]) + {var bytes_read=try_preread(ib,rem[1]); + if(0 === bytes_read) + error(cst_Corrupted_data_string); + else + {caml_call5 + (Stdlib_Bytes[11],ib[1],ib[2],str,pos[1],bytes_read); + ib[2] = ib[2] + bytes_read | 0; + pos[1] = pos[1] + bytes_read | 0; + rem[1] = rem[1] - bytes_read | 0} + continue} + return caml_call1(Stdlib_Bytes[6],str)}}, + read_unit=function(ib){read_untagged_unit(ib);return 948106916}, + read_bool=function(ib){return [0,737456202,read_untagged_bool(ib)]}, + read_int8=function(ib){return [0,815034505,read_untagged_char(ib)]}, + read_int16= + function(ib){return [0,-783416972,read_untagged_int16(ib)]}, + read_int32= + function(ib){return [0,-783416530,read_untagged_int32(ib)]}, + read_int64= + function(ib){return [0,-783415859,read_untagged_int64(ib)]}, + read_float32= + function(ib){return [0,928626971,read_untagged_float32(ib)]}, + read_float64= + function(ib){return [0,928627642,read_untagged_float64(ib)]}, + read_uvint= + function(ib){return [0,1063160078,read_untagged_uvint(ib)]}, + read_svint= + function(ib){return [0,412180492,read_untagged_svint(ib)]}, + read_string= + function(ib){return [0,-976970511,read_untagged_string(ib)]}, + read_tree= + function(opt,ib) + {if(opt)var sth=opt[1],unhash=sth;else var unhash=make_unhash(0); + function read_array(ib) + {var len=read_untagged_uvint(ib); + if(0 === len)return _p_; + var tag=read_tag(ib),read=reader_of_tag(tag); + function _a5_(param){return caml_call1(read,ib)} + return [0, + 951901561, + [0,[0,tag,caml_call2(Stdlib_Array[2],len,_a5_)]]]} + function reader_of_tag(param) + {if(! (26 < param >>> 0)) + switch(param) + {case 0:return read_bool; + case 1:return read_int8; + case 2:return read_int16; + case 3:return read_int32; + case 4:return read_int64; + case 11:return read_float32; + case 12:return read_float64; + case 16:return read_uvint; + case 17:return read_svint; + case 18:return read_string; + case 19:return read_array; + case 20:return read_tuple; + case 21:return read_record; + case 22:return read_num_variant; + case 23:return read_variant; + case 24:return read_unit; + case 25:return read_table; + case 26:return read_shared + } + return error(cst_Corrupted_data_invalid_tag)} + function read_tree(ib) + {return caml_call1(reader_of_tag(read_tag(ib)),ib)} + function read_tuple(ib) + {var len=read_untagged_uvint(ib); + function _a4_(param){return read_tree(ib)} + return [0,726928360,caml_call2(Stdlib_Array[2],len,_a4_)]} + function read_record(ib) + {var len=read_untagged_uvint(ib); + function _a3_(param) + {var + h=read_field_hashtag(ib), + name=caml_call1(unhash,h), + x=read_tree(ib); + return [0,name,h,x]} + return [0,847309489,caml_call2(Stdlib_Array[2],len,_a3_)]} + function read_num_variant_cont(ib,i,has_arg) + {var x=has_arg?[0,read_tree(ib)]:0; + return [0,221365804,[0,i,x]]} + function read_num_variant(ib) + {return read_numtag(ib,read_num_variant_cont)} + function read_variant_cont(ib,h,has_arg) + {var name=caml_call1(unhash,h),x=has_arg?[0,read_tree(ib)]:0; + return [0,708012133,[0,name,h,x]]} + function read_variant(ib) + {return read_hashtag(ib,read_variant_cont)} + function read_table(ib) + {var row_num=read_untagged_uvint(ib); + if(0 === row_num)return _q_; + var col_num=read_untagged_uvint(ib); + function _aZ_(param) + {var + h=read_field_hashtag(ib), + name=caml_call1(unhash,h), + tag=read_tag(ib); + return [0,name,h,tag]} + var fields=caml_call2(Stdlib_Array[2],col_num,_aZ_); + function _a0_(param) + {var tag=param[3];return reader_of_tag(tag)} + var readers=caml_call2(Stdlib_Array[15],_a0_,fields); + function _a1_(param) + {function _a2_(j) + {return caml_call1(caml_check_bound(readers,j)[1 + j],ib)} + return caml_call2(Stdlib_Array[2],col_num,_a2_)} + var a=caml_call2(Stdlib_Array[2],row_num,_a1_); + return [0,504440814,[0,[0,fields,a]]]} + function read_shared(ib) + {var pos=ib[4] + ib[2] | 0,offset=read_untagged_uvint(ib); + if(0 === offset) + {var r=[]; + runtime.caml_update_dummy(r,[0,-775957819,r]); + caml_call3(Rd[3],ib[7],[0,pos,dummy_type_id],r); + var x=read_tree(ib); + r[2] = x; + return r} + return caml_call2 + (Rd[4],ib[7],[0,pos - offset | 0,dummy_type_id])} + return read_tree(ib)}, + tree_of_string= + function(unhash,s){return read_tree(unhash,from_string(0,0,s))}, + skip_bytes=function(ib,n){read(ib,n);return 0}, + skip_unit=function(ib){return skip_bytes(ib,1)}, + skip_bool=function(ib){return skip_bytes(ib,1)}, + skip_int8=function(ib){return skip_bytes(ib,1)}, + skip_int16=function(ib){return skip_bytes(ib,2)}, + skip_int32=function(ib){return skip_bytes(ib,4)}, + skip_int64=function(ib){return skip_bytes(ib,8)}, + skip_float32=function(ib){return skip_bytes(ib,4)}, + skip_float64=function(ib){return skip_bytes(ib,8)}, + skip_uvint=function(ib){read_untagged_uvint(ib);return 0}, + skip_svint=function(ib){read_untagged_svint(ib);return 0}, + skip_string= + function(ib) + {var len=read_untagged_uvint(ib);return skip_bytes(ib,len)}, + skipper_of_tag= + function(param) + {if(! (25 < param >>> 0)) + switch(param) + {case 0:return skip_bool; + case 1:return skip_int8; + case 2:return skip_int16; + case 3:return skip_int32; + case 4:return skip_int64; + case 11:return skip_float32; + case 12:return skip_float64; + case 16:return skip_uvint; + case 17:return skip_svint; + case 18:return skip_string; + case 19:return skip_array; + case 20:return skip_tuple; + case 21:return skip_record; + case 22:return skip_num_variant; + case 23:return skip_variant; + case 24:return skip_unit; + case 25:return skip_table + } + return error(cst_Corrupted_data_invalid_tag$0)}, + skip_array= + function(ib) + {var len=read_untagged_uvint(ib); + if(0 === len)return 0; + var tag=read_tag(ib),read=skipper_of_tag(tag),_aX_=1; + if(! (len < 1)) + {var i=_aX_; + for(;;) + {caml_call1(read,ib); + var _aY_=i + 1 | 0; + if(len !== i){var i=_aY_;continue} + break}} + return 0}, + skip= + function(ib){return caml_call1(skipper_of_tag(read_tag(ib)),ib)}, + skip_tuple= + function(ib) + {var len=read_untagged_uvint(ib),_aV_=1; + if(! (len < 1)) + {var i=_aV_; + for(;;) + {skip(ib); + var _aW_=i + 1 | 0; + if(len !== i){var i=_aW_;continue} + break}} + return 0}, + skip_record= + function(ib) + {var len=read_untagged_uvint(ib),_aT_=1; + if(! (len < 1)) + {var i=_aT_; + for(;;) + {read_field_hashtag(ib); + skip(ib); + var _aU_=i + 1 | 0; + if(len !== i){var i=_aU_;continue} + break}} + return 0}, + skip_num_variant_cont= + function(ib,i,has_arg){return has_arg?skip(ib):has_arg}, + skip_num_variant= + function(ib){return read_numtag(ib,skip_num_variant_cont)}, + skip_variant_cont= + function(ib,h,has_arg){return has_arg?skip(ib):has_arg}, + skip_variant= + function(ib){return read_hashtag(ib,skip_variant_cont)}, + skip_table= + function(ib) + {var row_num=read_untagged_uvint(ib); + if(0 === row_num)return 0; + var col_num=read_untagged_uvint(ib); + function _aO_(param) + {read_field_hashtag(ib);return skipper_of_tag(read_tag(ib))} + var readers=caml_call2(Stdlib_Array[2],col_num,_aO_),_aP_=1; + if(! (row_num < 1)) + {var i=_aP_; + for(;;) + {var _aQ_=1; + if(! (col_num < 1)) + {var j=_aQ_; + for(;;) + {caml_call1(caml_check_bound(readers,j)[1 + j],ib); + var _aS_=j + 1 | 0; + if(col_num !== j){var j=_aS_;continue} + break}} + var _aR_=i + 1 | 0; + if(row_num !== i){var i=_aR_;continue} + break}} + return 0}, + array=Easy_format[2], + record=Easy_format[2], + _r_=Easy_format[2], + tuple= + [0, + 0, + _r_[2], + _r_[3], + _r_[4], + 0, + _r_[6], + 0, + _r_[8], + _r_[9], + _r_[10], + _r_[11], + _r_[12], + _r_[13], + _r_[14]], + map= + function(f,a) + {var len=a.length - 1; + if(0 === len) + var _aN_=[0]; + else + {var + r=caml_make_vect(len,caml_call1(f,a[1])), + _aL_=len - 1 | 0, + _aK_=1; + if(! (_aL_ < 1)) + {var i=_aK_; + for(;;) + {r[1 + i] = caml_call1(f,a[1 + i]); + var _aM_=i + 1 | 0; + if(_aL_ !== i){var i=_aM_;continue} + break}} + var _aN_=r} + return caml_call1(Stdlib_Array[11],_aN_)}, + format= + function(shared,x) + {var x$0=x; + for(;;) + {if(typeof x$0 === "number")return [0,cst_unit,Easy_format[1]]; + var _ad_=x$0[1]; + if(708012133 <= _ad_) + {if(847309489 <= _ad_) + {if(928626971 === _ad_) + {var x$1=x$0[2],_ae_=Easy_format[1]; + return [0,caml_call1(Stdlib[35],x$1),_ae_]} + if(951901561 <= _ad_) + {if(1063160078 <= _ad_) + {var x$2=x$0[2],_af_=Easy_format[1]; + return [0,caml_call1(Stdlib[33],x$2),_af_]} + var _ag_=x$0[2]; + if(_ag_) + {var match=_ag_[1],a=match[2]; + return [1, + [0,cst$3,cst$2,cst$1,array], + map(function(_aJ_){return format(shared,_aJ_)},a)]} + return [0,cst$4,Easy_format[1]]} + if(928627642 <= _ad_) + {var x$3=x$0[2],_ah_=Easy_format[1]; + return [0,caml_call1(Stdlib[35],x$3),_ah_]} + var a$0=x$0[2]; + return [1, + [0,cst$7,cst$6,cst$5,record], + map + (function(param) + {var x=param[3],h=param[2],o=param[1]; + if(o) + var s=o[1],s$0=caml_call2(Stdlib_Printf[4],_B_,s); + else + var s$0=caml_call2(Stdlib_Printf[4],_D_,h); + var + _aG_=format(shared,x), + _aH_=Easy_format[3], + _aI_=Easy_format[1]; + return [2, + [0,[0,caml_call2(Stdlib_Printf[4],_C_,s$0),_aI_],_aH_], + _aG_]}, + a$0)]} + if(737456202 <= _ad_) + {if(815034505 <= _ad_) + {var x$4=x$0[2],_ai_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_s_,x$4),_ai_]} + var + x$5=x$0[2], + _aj_=Easy_format[1], + _ak_=x$5?cst_true:cst_false; + return [0,_ak_,_aj_]} + if(726928360 <= _ad_) + {var a$1=x$0[2]; + return [1, + [0,cst$10,cst$9,cst$8,tuple], + map(function(_aF_){return format(shared,_aF_)},a$1)]} + var + match$0=x$0[2], + o=match$0[3], + h=match$0[2], + opt_name=match$0[1]; + if(opt_name) + var s=opt_name[1],name=caml_call2(Stdlib_Printf[4],_t_,s); + else + var name=caml_call2(Stdlib_Printf[4],_u_,h); + if(o) + {var + x$6=o[1], + _al_=format(shared,x$6), + _am_=Easy_format[3], + _an_=Easy_format[1]; + return [1, + [0,cst$14,cst$13,cst$12,tuple], + [0, + [2, + [0,[0,caml_call2(Stdlib[28],name,cst$11),_an_],_am_], + _al_], + 0]]} + var + _ao_=Easy_format[1], + _ap_=caml_call2(Stdlib[28],name,cst$15); + return [0,caml_call2(Stdlib[28],cst$16,_ap_),_ao_]} + if(-775957819 <= _ad_) + {if(412180492 <= _ad_) + {if(504440814 <= _ad_) + {var _aq_=x$0[2]; + if(_aq_) + {var + match$1=_aq_[1], + aa=match$1[2], + header=match$1[1], + _ar_= + function(header) + {return function(a) + {function _aE_(i,x) + {var + match=caml_check_bound(header,i)[1 + i], + h=match[2], + s=match[1]; + return [0,s,h,x]} + return [0,847309489,caml_call2(Stdlib_Array[16],_aE_,a)]}} + (header), + x$7= + [0, + 951901561, + [0,[0,record_tag,caml_call2(Stdlib_Array[15],_ar_,aa)]]], + x$0=x$7; + continue} + return [0,cst$17,Easy_format[1]]} + var x$8=x$0[2],_as_=Easy_format[1]; + return [0,caml_call1(Stdlib[33],x$8),_as_]} + if(221365804 <= _ad_) + {var + match$2=x$0[2], + o$0=match$2[2], + i=match$2[1], + suffix=0 === i?cst$18:caml_call1(Stdlib[33],i); + if(o$0) + {var + x$9=o$0[1], + _at_=Easy_format[1], + cons=[0,caml_call2(Stdlib[28],cst_Some,suffix),_at_], + _au_=format(shared,x$9); + return [2,[0,cons,Easy_format[3]],_au_]} + var _av_=Easy_format[1]; + return [0,caml_call2(Stdlib[28],cst_None,suffix),_av_]} + var x$10=x$0[2],p=shared[2],tbl=shared[1]; + p[1]++; + var + pos=p[1], + offset=caml_call3(_a_[3],tbl,[0,x$10,dummy_type_id],pos); + if(0 === offset) + {var + _aw_=format(shared,x$10), + _ax_=Easy_format[3], + _ay_=Easy_format[1]; + return [2, + [0,[0,caml_call2(Stdlib_Printf[4],_v_,pos),_ay_],_ax_], + _aw_]} + var _az_=Easy_format[1]; + return [0, + caml_call2(Stdlib_Printf[4],_w_,pos - offset | 0), + _az_]} + if(-783416530 <= _ad_) + {if(-783415859 <= _ad_) + {var x$11=x$0[2],_aA_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_x_,x$11),_aA_]} + var x$12=x$0[2],_aB_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_y_,x$12),_aB_]} + if(-783416972 <= _ad_) + {var x$13=x$0[2],_aC_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_z_,x$13),_aC_]} + var s$0=x$0[2],_aD_=Easy_format[1]; + return [0,caml_call2(Stdlib_Printf[4],_A_,s$0),_aD_]}}, + init=function(param){return [0,caml_call1(_a_[1],512),[0,0]]}, + view_of_tree= + function(t) + {var _ac_=format(init(0),t); + return caml_call3(Easy_format[4][4],0,0,_ac_)}, + print_view_of_tree= + function(t) + {var _ab_=format(init(0),t); + return caml_call3(Easy_format[4][6],0,0,_ab_)}, + output_view_of_tree= + function(oc,t) + {var _aa_=format(init(0),t); + return caml_call4(Easy_format[4][5],0,0,oc,_aa_)}, + view= + function(unhash,s){return view_of_tree(tree_of_string(unhash,s))}, + print_view= + function(unhash,s) + {return print_view_of_tree(tree_of_string(unhash,s))}, + output_view= + function(unhash,oc,s) + {return output_view_of_tree(oc,tree_of_string(unhash,s))}, + Bi_io= + [0, + bool_tag, + int8_tag, + int16_tag, + int32_tag, + int64_tag, + float32_tag, + float64_tag, + uvint_tag, + svint_tag, + string_tag, + array_tag, + tuple_tag, + record_tag, + num_variant_tag, + variant_tag, + unit_tag, + table_tag, + shared_tag, + write_tag, + read_tag, + hash_name, + write_hashtag, + string_of_hashtag, + read_hashtag, + read_field_hashtag, + make_unhash, + write_numtag, + read_numtag, + write_untagged_unit, + write_untagged_bool, + write_untagged_char, + write_untagged_int8, + write_untagged_int16, + write_untagged_int32, + write_untagged_int64, + write_untagged_float32, + write_untagged_float64, + write_untagged_string, + write_untagged_uvint, + write_untagged_svint, + write_unit, + write_bool, + write_char, + write_int8, + write_int16, + write_int32, + write_int64, + write_float32, + write_float64, + write_string, + write_uvint, + write_svint, + read_untagged_unit, + read_untagged_bool, + read_untagged_char, + read_untagged_int8, + read_untagged_int16, + read_untagged_int32, + read_untagged_int64, + read_untagged_float32, + read_untagged_float64, + read_untagged_string, + read_untagged_uvint, + read_untagged_svint, + skip, + write_tree, + string_of_tree, + read_tree, + tree_of_string, + tag_of_tree, + view_of_tree, + view, + print_view_of_tree, + print_view, + output_view_of_tree, + output_view, + safety_test]; + caml_register_global(118,Bi_io,"Bi_io"); + var + split= + function(s) + {var + acc=[0,0], + stop=[0,caml_ml_string_length(s)], + _Y_=stop[1] - 1 | 0; + if(! (_Y_ < 0)) + {var i=_Y_; + for(;;) + {if(44 === caml_string_get(s,i)) + {var start=i + 1 | 0,___=acc[1]; + acc[1] + = + [0, + caml_call3(Stdlib_String[15],s,start,stop[1] - start | 0), + ___]; + stop[1] = i} + var _$_=i - 1 | 0; + if(0 !== i){var i=_$_;continue} + break}} + var _Z_=acc[1]; + return [0,caml_call3(Stdlib_String[15],s,0,stop[1]),_Z_]}, + load_lines= + function(accu,s) + {var ic=caml_call1(Stdlib[79],s),l=[0,accu]; + try + {for(;;) + {var _W_=caml_call1(Stdlib_List[9],l[1]); + l[1] = [0,caml_call1(Stdlib[83],ic),_W_]; + continue}} + catch(_X_) + {_X_ = caml_wrap_exception(_X_); + if(_X_ === Stdlib[12]){caml_call1(Stdlib[93],ic);return l[1]} + throw _X_}}, + load= + function(ic) + {var buf=caml_call1(Stdlib_Buffer[1],1000); + try + {for(;;) + {var _U_=caml_call1(Stdlib[82],ic); + caml_call2(Stdlib_Buffer[12],buf,_U_); + continue}} + catch(_V_) + {_V_ = caml_wrap_exception(_V_); + if(_V_ === Stdlib[12])return caml_call1(Stdlib_Buffer[2],buf); + throw _V_}}, + symbol=Stdlib_Filename[4], + default_dict_path= + function(param) + {try + {var + _R_=Stdlib_Sys[4], + _S_= + caml_string_notequal(_R_,cst_Cygwin) + ?caml_string_notequal(_R_,cst_Unix) + ?caml_string_notequal(_R_,cst_Win32) + ?0 + :[0, + caml_call2 + (symbol,caml_sys_getenv(cst_HOMEPATH),cst_bdump_dict)] + :[0, + caml_call2 + (symbol,caml_sys_getenv(cst_HOME),cst_bdump_dict$0)] + :[0, + caml_call2 + (symbol,caml_sys_getenv(cst_HOME$0),cst_bdump_dict$1)]; + return _S_} + catch(_T_) + {_T_ = caml_wrap_exception(_T_); + if(_T_ === Stdlib[8])return 0; + throw _T_}}, + load_dictionary= + function(dic_file,accu) + {if(dic_file) + {var fn=dic_file[1]; + if(runtime.caml_sys_file_exists(fn)) + try + {var _Q_=load_lines(accu,fn);return _Q_} + catch(e) + {e = caml_wrap_exception(e); + var + _O_=caml_call1(Stdlib_Printexc[1],e), + _P_=caml_call3(Stdlib_Printf[4],_E_,fn,_O_); + return caml_call1(Stdlib[2],_P_)} + return accu} + return accu}, + write_uniq= + function(oc,a) + {var _J_=0 < a.length - 1?1:0; + if(_J_) + {var _K_=caml_check_bound(a,0)[1]; + caml_call3(Stdlib_Printf[1],oc,_F_,_K_); + var + _L_=caml_check_bound(a,0)[1], + _M_= + function(last,x) + {if(caml_string_notequal(last,x)) + caml_call3(Stdlib_Printf[1],oc,_G_,x); + return x}; + caml_call3(Stdlib_Array[17],_M_,_L_,a); + var _N_=0} + else + var _N_=_J_; + return _N_}, + save_dictionary= + function(dic_file,l) + {if(dic_file) + {var fn=dic_file[1],a=caml_call1(Stdlib_Array[12],l); + caml_call2(Stdlib_Array[32],Stdlib_String[9],a); + var + oc=caml_call1(Stdlib[60],fn), + finally$0=function(param){return caml_call1(Stdlib[77],oc)}; + try + {write_uniq(oc,a);var _I_=finally$0(0);return _I_} + catch(e){e = caml_wrap_exception(e);finally$0(0);throw e}} + return 0}, + Bi_dump= + [0, + split, + load_lines, + load, + symbol, + default_dict_path, + load_dictionary, + write_uniq, + save_dictionary]; + caml_register_global(122,Bi_dump,"Bi_dump"); + return} + throw [0,Assert_failure,_H_]} + r[1] = r[1] >>> 1 | 0; + c[1]++; + continue}} + (globalThis)); + + +//# 1 "../../.js/yojson/yojson.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_bytes_get=runtime.caml_bytes_get, + caml_bytes_set=runtime.caml_bytes_set, + caml_check_bound=runtime.caml_check_bound, + caml_classify_float=runtime.caml_classify_float, + caml_create_bytes=runtime.caml_create_bytes, + caml_equal=runtime.caml_equal, + caml_float_of_string=runtime.caml_float_of_string, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_int64_of_string=runtime.caml_int64_of_string, + caml_int_of_string=runtime.caml_int_of_string, + caml_lex_engine=runtime.caml_lex_engine, + caml_make_vect=runtime.caml_make_vect, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_register_global=runtime.caml_register_global, + caml_string_equal=runtime.caml_string_equal, + caml_string_get=runtime.caml_string_get, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_trampoline=runtime.caml_trampoline, + caml_trampoline_return=runtime.caml_trampoline_return, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + function caml_call5(f,a0,a1,a2,a3,a4) + {return f.length == 5 + ?f(a0,a1,a2,a3,a4) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} + var + global_data=runtime.caml_get_global_data(), + cst_Cannot_convert_heterogenou= + caml_string_of_jsbytes("Cannot convert heterogenous array to biniou"), + cst_Cannot_convert_big_int_to_= + caml_string_of_jsbytes("Cannot convert big int to biniou"), + cst_Cannot_convert_hashed_fiel= + caml_string_of_jsbytes("Cannot convert hashed field name to JSON"), + cst_Cannot_convert_uvint_to_JS= + caml_string_of_jsbytes("Cannot convert uvint to JSON"), + cst_Cannot_convert_int8_to_JSO= + caml_string_of_jsbytes("Cannot convert int8 to JSON"), + cst_Cannot_convert_hashed_vari= + caml_string_of_jsbytes("Cannot convert hashed variant name to JSON"), + cst_Cannot_convert_num_variant= + caml_string_of_jsbytes("Cannot convert num_variant to JSON"), + cst_Cannot_convert_shared_node= + caml_string_of_jsbytes("Cannot convert shared node to JSON"), + cst_Cannot_convert_int64_to_JS= + caml_string_of_jsbytes("Cannot convert int64 to JSON"), + cst_Cannot_convert_int32_to_JS= + caml_string_of_jsbytes("Cannot convert int32 to JSON"), + cst_Cannot_convert_int16_to_JS= + caml_string_of_jsbytes("Cannot convert int16 to JSON"), + cst_Malformed_biniou_table= + caml_string_of_jsbytes("Malformed biniou table"), + cst_Cannot_convert_hashed_fiel$0= + caml_string_of_jsbytes("Cannot convert hashed field name to JSON"), + cst_Null=caml_string_of_jsbytes("`Null"), + cst_Some=caml_string_of_jsbytes("(Some "), + cst$1=caml_string_of_jsbytes(")"), + cst_None=caml_string_of_jsbytes("None"), + cst_Null$2=caml_string_of_jsbytes("`Null"), + cst_Some$1=caml_string_of_jsbytes("(Some "), + cst$33=caml_string_of_jsbytes(")"), + cst_None$1=caml_string_of_jsbytes("None"), + cst_Unexpected_end_of_input$92= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$12=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input$93= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$94= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_escape_sequence$1= + caml_string_of_jsbytes("Invalid escape sequence"), + cst_Unexpected_end_of_input$95= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_low_surrogate_for_$1= + caml_string_of_jsbytes + ("Invalid low surrogate for code point beyond U+FFFF"), + cst_Missing_escape_sequence_re$1= + caml_string_of_jsbytes + ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), + cst_Unexpected_end_of_input$96= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_string_literal$5= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$97= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$29= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$98= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$30= + caml_string_of_jsbytes("Expected '<' but found"), + cst_Unexpected_end_of_input$99= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$31= + caml_string_of_jsbytes("Expected '>' but found"), + cst_Unexpected_end_of_input$100= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$32= + caml_string_of_jsbytes("Expected ',' but found"), + cst_Unexpected_end_of_input$101= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$30= + caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), + cst_Unexpected_end_of_input$102= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unterminated_comment$3=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_null_but_found$1= + caml_string_of_jsbytes("Expected 'null' but found"), + cst_Unexpected_end_of_input$103= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_true_or_false_but$1= + caml_string_of_jsbytes("Expected 'true' or 'false' but found"), + cst_Unexpected_end_of_input$104= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int_overflow$5=caml_string_of_jsbytes("Int overflow"), + cst_Int_overflow$6=caml_string_of_jsbytes("Int overflow"), + cst_Expected_an_integer_but_fo$1= + caml_string_of_jsbytes + ("Expected an integer but found a string that doesn't even represent an integer"), + cst_Expected_integer_but_found$1= + caml_string_of_jsbytes("Expected integer but found"), + cst_Unexpected_end_of_input$105= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$3=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int32_but_foun$1= + caml_string_of_jsbytes + ("Expected an int32 but found a string that doesn't even represent an integer"), + cst_Expected_int32_but_found$1= + caml_string_of_jsbytes("Expected int32 but found"), + cst_Unexpected_end_of_input$106= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$4=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int64_but_foun$1= + caml_string_of_jsbytes + ("Expected an int64 but found a string that doesn't even represent an integer"), + cst_Expected_int64_but_found$1= + caml_string_of_jsbytes("Expected int64 but found"), + cst_Unexpected_end_of_input$107= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Infinity$21=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$22=caml_string_of_jsbytes("Infinity"), + cst_NaN$10=caml_string_of_jsbytes("NaN"), + cst_Expected_a_number_but_foun$1= + caml_string_of_jsbytes + ("Expected a number but found a string that doesn't even represent a number"), + cst_Expected_number_but_found$1= + caml_string_of_jsbytes("Expected number but found"), + cst_Unexpected_end_of_input$108= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$33= + caml_string_of_jsbytes("Expected '\"' but found"), + cst_Unexpected_end_of_input$109= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$7= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$110= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$8= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$111= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$34= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$112= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$35= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$113= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$31= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$114= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$36= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$115= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$32= + caml_string_of_jsbytes("Expected ')' or '' but found"), + cst_Expected_or_but_found$33= + caml_string_of_jsbytes("Expected ']' or '' but found"), + cst_Expected_or_but_found$34= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$116= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$35= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Expected_or_but_found$36= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Expected_or_but_found$37= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$117= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$37= + caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$118= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$38= + caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$119= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$38= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$120= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$39= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$121= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$39= + caml_string_of_jsbytes("Expected '(' or '[' but found"), + cst_Unexpected_end_of_input$122= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$40= + caml_string_of_jsbytes("Expected '(' but found"), + cst_Unexpected_end_of_input$123= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$41= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$124= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$42= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$125= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$43= + caml_string_of_jsbytes("Expected ']' but found"), + cst_Unexpected_end_of_input$126= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$127= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$13=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$6= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$128= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$40= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$129= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$9= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$130= + caml_string_of_jsbytes("Unexpected end of input"), + cst$34=caml_string_of_jsbytes("/*"), + cst_Unexpected_end_of_input$131= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$14=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$7= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$132= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$41= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$133= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$10= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$134= + caml_string_of_jsbytes("Unexpected end of input"), + cst$35=caml_string_of_jsbytes("/*"), + cst_Expected_or_but_found$42= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$135= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$43= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$136= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$44= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$137= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$44= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$138= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$45= + caml_string_of_jsbytes("Expected '>' but found"), + cst_Unexpected_end_of_input$139= + caml_string_of_jsbytes("Unexpected end of input"), + cst$36=caml_string_of_jsbytes("*/"), + cst_Unterminated_comment$4=caml_string_of_jsbytes("Unterminated comment"), + stream$1=[0,1], + cst_Blank_input_data$4=caml_string_of_jsbytes("Blank input data"), + cst_Blank_input_data$3=caml_string_of_jsbytes("Blank input data"), + cst_Junk_after_end_of_JSON_val$1= + caml_string_of_jsbytes("Junk after end of JSON value:"), + cst_Int8_overflow$1=caml_string_of_jsbytes("Int8 overflow"), + cst_Line$1=caml_string_of_jsbytes("Line"), + cst_Root_is_not_an_object_or_a$3= + caml_string_of_jsbytes("Root is not an object or array"), + cst_true$3=caml_string_of_jsbytes("true"), + cst_false$3=caml_string_of_jsbytes("false"), + cst_null$5=caml_string_of_jsbytes("null"), + cst_b$2=caml_string_of_jsbytes("\\b"), + cst_t$2=caml_string_of_jsbytes("\\t"), + cst_n$2=caml_string_of_jsbytes("\\n"), + cst_f$2=caml_string_of_jsbytes("\\f"), + cst_r$2=caml_string_of_jsbytes("\\r"), + cst$32=caml_string_of_jsbytes('\\"'), + cst$31=caml_string_of_jsbytes("\\\\"), + cst_u00$2=caml_string_of_jsbytes("\\u00"), + cst_Null$1=caml_string_of_jsbytes("`Null"), + cst_Some$0=caml_string_of_jsbytes("(Some "), + cst$27=caml_string_of_jsbytes(")"), + cst_None$0=caml_string_of_jsbytes("None"), + cst_Unexpected_end_of_input$44= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$9=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input$45= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$46= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_escape_sequence$0= + caml_string_of_jsbytes("Invalid escape sequence"), + cst_Unexpected_end_of_input$47= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_low_surrogate_for_$0= + caml_string_of_jsbytes + ("Invalid low surrogate for code point beyond U+FFFF"), + cst_Missing_escape_sequence_re$0= + caml_string_of_jsbytes + ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), + cst_Unexpected_end_of_input$48= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_string_literal$2= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$49= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$13= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$50= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$14= + caml_string_of_jsbytes("Expected '<' but found"), + cst_Unexpected_end_of_input$51= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$15= + caml_string_of_jsbytes("Expected '>' but found"), + cst_Unexpected_end_of_input$52= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$16= + caml_string_of_jsbytes("Expected ',' but found"), + cst_Unexpected_end_of_input$53= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$14= + caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), + cst_Unexpected_end_of_input$54= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unterminated_comment$1=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_null_but_found$0= + caml_string_of_jsbytes("Expected 'null' but found"), + cst_Unexpected_end_of_input$55= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_true_or_false_but$0= + caml_string_of_jsbytes("Expected 'true' or 'false' but found"), + cst_Unexpected_end_of_input$56= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int_overflow$3=caml_string_of_jsbytes("Int overflow"), + cst_Int_overflow$4=caml_string_of_jsbytes("Int overflow"), + cst_Expected_an_integer_but_fo$0= + caml_string_of_jsbytes + ("Expected an integer but found a string that doesn't even represent an integer"), + cst_Expected_integer_but_found$0= + caml_string_of_jsbytes("Expected integer but found"), + cst_Unexpected_end_of_input$57= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$1=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int32_but_foun$0= + caml_string_of_jsbytes + ("Expected an int32 but found a string that doesn't even represent an integer"), + cst_Expected_int32_but_found$0= + caml_string_of_jsbytes("Expected int32 but found"), + cst_Unexpected_end_of_input$58= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$2=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int64_but_foun$0= + caml_string_of_jsbytes + ("Expected an int64 but found a string that doesn't even represent an integer"), + cst_Expected_int64_but_found$0= + caml_string_of_jsbytes("Expected int64 but found"), + cst_Unexpected_end_of_input$59= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Infinity$19=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$20=caml_string_of_jsbytes("Infinity"), + cst_NaN$9=caml_string_of_jsbytes("NaN"), + cst_Expected_a_number_but_foun$0= + caml_string_of_jsbytes + ("Expected a number but found a string that doesn't even represent a number"), + cst_Expected_number_but_found$0= + caml_string_of_jsbytes("Expected number but found"), + cst_Unexpected_end_of_input$60= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$17= + caml_string_of_jsbytes("Expected '\"' but found"), + cst_Unexpected_end_of_input$61= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$3= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$62= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$4= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$63= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$18= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$64= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$19= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$65= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$15= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$66= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$20= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$67= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$16= + caml_string_of_jsbytes("Expected ')' or '' but found"), + cst_Expected_or_but_found$17= + caml_string_of_jsbytes("Expected ']' or '' but found"), + cst_Expected_or_but_found$18= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$68= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$19= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Expected_or_but_found$20= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Expected_or_but_found$21= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$69= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$21= + caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$70= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$22= + caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$71= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$22= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$72= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$23= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$73= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$23= + caml_string_of_jsbytes("Expected '(' or '[' but found"), + cst_Unexpected_end_of_input$74= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$24= + caml_string_of_jsbytes("Expected '(' but found"), + cst_Unexpected_end_of_input$75= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$25= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$76= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$26= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$77= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$27= + caml_string_of_jsbytes("Expected ']' but found"), + cst_Unexpected_end_of_input$78= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$79= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$10=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$3= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$80= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$24= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$81= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$5= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$82= + caml_string_of_jsbytes("Unexpected end of input"), + cst$28=caml_string_of_jsbytes("/*"), + cst_Unexpected_end_of_input$83= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$11=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$4= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$84= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$25= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$85= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$6= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$86= + caml_string_of_jsbytes("Unexpected end of input"), + cst$29=caml_string_of_jsbytes("/*"), + cst_Expected_or_but_found$26= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$87= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$27= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$88= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$28= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$89= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$28= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$90= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$29= + caml_string_of_jsbytes("Expected '>' but found"), + cst_Unexpected_end_of_input$91= + caml_string_of_jsbytes("Unexpected end of input"), + cst$30=caml_string_of_jsbytes("*/"), + cst_Unterminated_comment$2=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_two_objects_check$0= + caml_string_of_jsbytes("Expected two objects, check inputs"), + cst_Can_t_convert_each_element$0= + caml_string_of_jsbytes("Can't convert each element of non-array type "), + cst_Expected_string_or_null_go$0= + caml_string_of_jsbytes("Expected string or null, got "), + cst_Expected_string_got$0=caml_string_of_jsbytes("Expected string, got "), + cst_Expected_array_got$0=caml_string_of_jsbytes("Expected array, got "), + cst_Expected_int_or_null_got$0= + caml_string_of_jsbytes("Expected int or null, got "), + cst_Expected_int_got$0=caml_string_of_jsbytes("Expected int, got "), + cst_Expected_float_or_null_got$0= + caml_string_of_jsbytes("Expected float or null, got "), + cst_Expected_float_got$0=caml_string_of_jsbytes("Expected float, got "), + cst_Expected_number_or_null_go$0= + caml_string_of_jsbytes("Expected number or null, got "), + cst_Expected_number_got$0=caml_string_of_jsbytes("Expected number, got "), + cst_Expected_bool_or_null_got$0= + caml_string_of_jsbytes("Expected bool or null, got "), + cst_Expected_bool_got$0=caml_string_of_jsbytes("Expected bool, got "), + cst_Expected_object_got$0=caml_string_of_jsbytes("Expected object, got "), + cst_Can_t_map_function_over_no$0= + caml_string_of_jsbytes("Can't map function over non-array type "), + cst_out_of_bounds$0=caml_string_of_jsbytes(" out of bounds"), + cst_Index$0=caml_string_of_jsbytes("Index "), + cst_of_non_array_type$0=caml_string_of_jsbytes(" of non-array type "), + cst_Can_t_get_index$0=caml_string_of_jsbytes("Can't get index "), + cst_of_non_object_type$0=caml_string_of_jsbytes("' of non-object type "), + cst_Can_t_get_member$0=caml_string_of_jsbytes("Can't get member '"), + cst_null$4=caml_string_of_jsbytes("null"), + cst_object$0=caml_string_of_jsbytes("object"), + cst_array$0=caml_string_of_jsbytes("array"), + cst_bool$0=caml_string_of_jsbytes("bool"), + cst_variant$0=caml_string_of_jsbytes("variant"), + cst_tuple$0=caml_string_of_jsbytes("tuple"), + cst_float$0=caml_string_of_jsbytes("float"), + cst_int$0=caml_string_of_jsbytes("int"), + cst_intlit$0=caml_string_of_jsbytes("intlit"), + cst_string$0=caml_string_of_jsbytes("string"), + stream$0=[0,1], + cst_Blank_input_data$2=caml_string_of_jsbytes("Blank input data"), + cst_Blank_input_data$1=caml_string_of_jsbytes("Blank input data"), + cst_Junk_after_end_of_JSON_val$0= + caml_string_of_jsbytes("Junk after end of JSON value:"), + cst_Int8_overflow$0=caml_string_of_jsbytes("Int8 overflow"), + cst_Line$0=caml_string_of_jsbytes("Line"), + cst_Root_is_not_an_object_or_a$2= + caml_string_of_jsbytes("Root is not an object or array"), + cst_NaN_value_not_allowed_in_s$7= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$15= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$16= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN_value_not_allowed_in_s$6= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$13=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$13= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$14= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN_value_not_allowed_in_s$5= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$12=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$11= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$12= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN$8=caml_string_of_jsbytes("NaN"), + cst_Infinity$17=caml_string_of_jsbytes("Infinity"), + cst_Infinity$18=caml_string_of_jsbytes("-Infinity"), + cst_0$11=caml_string_of_jsbytes(".0"), + cst_NaN$7=caml_string_of_jsbytes("NaN"), + cst_0$10=caml_string_of_jsbytes(".0"), + cst_Infinity$15=caml_string_of_jsbytes("Infinity"), + cst_Infinity$16=caml_string_of_jsbytes("-Infinity"), + cst_NaN$6=caml_string_of_jsbytes("NaN"), + cst_0$9=caml_string_of_jsbytes(".0"), + cst_Infinity$13=caml_string_of_jsbytes("Infinity"), + cst_Infinity$14=caml_string_of_jsbytes("-Infinity"), + cst_true$2=caml_string_of_jsbytes("true"), + cst_false$2=caml_string_of_jsbytes("false"), + cst_null$3=caml_string_of_jsbytes("null"), + cst_b$1=caml_string_of_jsbytes("\\b"), + cst_t$1=caml_string_of_jsbytes("\\t"), + cst_n$1=caml_string_of_jsbytes("\\n"), + cst_f$1=caml_string_of_jsbytes("\\f"), + cst_r$1=caml_string_of_jsbytes("\\r"), + cst$26=caml_string_of_jsbytes('\\"'), + cst$25=caml_string_of_jsbytes("\\\\"), + cst_u00$1=caml_string_of_jsbytes("\\u00"), + cst_Null$0=caml_string_of_jsbytes("`Null"), + cst_Invalid_token=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_token$0=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$1=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input$0= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unexpected_end_of_input$1= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_escape_sequence= + caml_string_of_jsbytes("Invalid escape sequence"), + cst_Unexpected_end_of_input$2= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_low_surrogate_for_= + caml_string_of_jsbytes + ("Invalid low surrogate for code point beyond U+FFFF"), + cst_Missing_escape_sequence_re= + caml_string_of_jsbytes + ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"), + cst_Unexpected_end_of_input$3= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_string_literal= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$4= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$5= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found=caml_string_of_jsbytes("Expected '<' but found"), + cst_Unexpected_end_of_input$6= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$0=caml_string_of_jsbytes("Expected '>' but found"), + cst_Unexpected_end_of_input$7= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$1=caml_string_of_jsbytes("Expected ',' but found"), + cst_Unexpected_end_of_input$8= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$0= + caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"), + cst_Unexpected_end_of_input$9= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Unterminated_comment=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_null_but_found= + caml_string_of_jsbytes("Expected 'null' but found"), + cst_Unexpected_end_of_input$10= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_true_or_false_but= + caml_string_of_jsbytes("Expected 'true' or 'false' but found"), + cst_Unexpected_end_of_input$11= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int_overflow$1=caml_string_of_jsbytes("Int overflow"), + cst_Int_overflow$2=caml_string_of_jsbytes("Int overflow"), + cst_Expected_an_integer_but_fo= + caml_string_of_jsbytes + ("Expected an integer but found a string that doesn't even represent an integer"), + cst_Expected_integer_but_found= + caml_string_of_jsbytes("Expected integer but found"), + cst_Unexpected_end_of_input$12= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int32_but_foun= + caml_string_of_jsbytes + ("Expected an int32 but found a string that doesn't even represent an integer"), + cst_Expected_int32_but_found= + caml_string_of_jsbytes("Expected int32 but found"), + cst_Unexpected_end_of_input$13= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Int32_overflow$0=caml_string_of_jsbytes("Int32 overflow"), + cst_Expected_an_int64_but_foun= + caml_string_of_jsbytes + ("Expected an int64 but found a string that doesn't even represent an integer"), + cst_Expected_int64_but_found= + caml_string_of_jsbytes("Expected int64 but found"), + cst_Unexpected_end_of_input$14= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Infinity$11=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$12=caml_string_of_jsbytes("Infinity"), + cst_NaN$5=caml_string_of_jsbytes("NaN"), + cst_Expected_a_number_but_foun= + caml_string_of_jsbytes + ("Expected a number but found a string that doesn't even represent a number"), + cst_Expected_number_but_found= + caml_string_of_jsbytes("Expected number but found"), + cst_Unexpected_end_of_input$15= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$2= + caml_string_of_jsbytes("Expected '\"' but found"), + cst_Unexpected_end_of_input$16= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$17= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$0= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$18= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$3=caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$19= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$4=caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$20= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$1= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$21= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$2=caml_string_of_jsbytes("Invalid token"), + cst_Expected_but_found$5=caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$22= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$2= + caml_string_of_jsbytes("Expected ')' or '' but found"), + cst_Expected_or_but_found$3= + caml_string_of_jsbytes("Expected ']' or '' but found"), + cst_Expected_or_but_found$4= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$23= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$5= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Expected_or_but_found$6= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Expected_or_but_found$7= + caml_string_of_jsbytes("Expected ',' or ')' but found"), + cst_Unexpected_end_of_input$24= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$6=caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$25= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$7=caml_string_of_jsbytes("Expected '{' but found"), + cst_Unexpected_end_of_input$26= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$8= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$27= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$8=caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$28= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$9= + caml_string_of_jsbytes("Expected '(' or '[' but found"), + cst_Unexpected_end_of_input$29= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$9=caml_string_of_jsbytes("Expected '(' but found"), + cst_Unexpected_end_of_input$30= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$10= + caml_string_of_jsbytes("Expected ')' but found"), + cst_Unexpected_end_of_input$31= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$11= + caml_string_of_jsbytes("Expected '[' but found"), + cst_Unexpected_end_of_input$32= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$12= + caml_string_of_jsbytes("Expected ']' but found"), + cst_Unexpected_end_of_input$33= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$3=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_token$4=caml_string_of_jsbytes("Invalid token"), + cst_Unexpected_end_of_input$34= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$5=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$0= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$35= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$10= + caml_string_of_jsbytes("Expected ':' or '>' but found"), + cst_Unexpected_end_of_input$36= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$1= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$37= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$6=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_token$7=caml_string_of_jsbytes("Invalid token"), + cst$22=caml_string_of_jsbytes("/*"), + cst_Unexpected_end_of_input$38= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Invalid_token$8=caml_string_of_jsbytes("Invalid token"), + cst_Invalid_string_literal$1= + caml_string_of_jsbytes("Invalid string literal"), + cst_Unexpected_end_of_input$39= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_string_or_identif$2= + caml_string_of_jsbytes("Expected string or identifier but found"), + cst_Unexpected_end_of_input$40= + caml_string_of_jsbytes("Unexpected end of input"), + cst$23=caml_string_of_jsbytes("/*"), + cst_Expected_or_but_found$11= + caml_string_of_jsbytes("Expected ',' or '}' but found"), + cst_Unexpected_end_of_input$41= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_or_but_found$12= + caml_string_of_jsbytes("Expected ',' or ']' but found"), + cst_Unexpected_end_of_input$42= + caml_string_of_jsbytes("Unexpected end of input"), + cst_Expected_but_found$13= + caml_string_of_jsbytes("Expected ':' but found"), + cst_Unexpected_end_of_input$43= + caml_string_of_jsbytes("Unexpected end of input"), + cst$24=caml_string_of_jsbytes("*/"), + cst_Unterminated_comment$0=caml_string_of_jsbytes("Unterminated comment"), + cst_Expected_two_objects_check= + caml_string_of_jsbytes("Expected two objects, check inputs"), + cst_Can_t_convert_each_element= + caml_string_of_jsbytes("Can't convert each element of non-array type "), + cst_Expected_string_or_null_go= + caml_string_of_jsbytes("Expected string or null, got "), + cst_Expected_string_got=caml_string_of_jsbytes("Expected string, got "), + cst_Expected_array_got=caml_string_of_jsbytes("Expected array, got "), + cst_Expected_int_or_null_got= + caml_string_of_jsbytes("Expected int or null, got "), + cst_Expected_int_got=caml_string_of_jsbytes("Expected int, got "), + cst_Expected_float_or_null_got= + caml_string_of_jsbytes("Expected float or null, got "), + cst_Expected_float_got=caml_string_of_jsbytes("Expected float, got "), + cst_Expected_number_or_null_go= + caml_string_of_jsbytes("Expected number or null, got "), + cst_Expected_number_got=caml_string_of_jsbytes("Expected number, got "), + cst_Expected_bool_or_null_got= + caml_string_of_jsbytes("Expected bool or null, got "), + cst_Expected_bool_got=caml_string_of_jsbytes("Expected bool, got "), + cst_Expected_object_got=caml_string_of_jsbytes("Expected object, got "), + cst_Can_t_map_function_over_no= + caml_string_of_jsbytes("Can't map function over non-array type "), + cst_out_of_bounds=caml_string_of_jsbytes(" out of bounds"), + cst_Index=caml_string_of_jsbytes("Index "), + cst_of_non_array_type=caml_string_of_jsbytes(" of non-array type "), + cst_Can_t_get_index=caml_string_of_jsbytes("Can't get index "), + cst_of_non_object_type=caml_string_of_jsbytes("' of non-object type "), + cst_Can_t_get_member=caml_string_of_jsbytes("Can't get member '"), + cst_null$2=caml_string_of_jsbytes("null"), + cst_object=caml_string_of_jsbytes("object"), + cst_array=caml_string_of_jsbytes("array"), + cst_bool=caml_string_of_jsbytes("bool"), + cst_variant=caml_string_of_jsbytes("variant"), + cst_tuple=caml_string_of_jsbytes("tuple"), + cst_float=caml_string_of_jsbytes("float"), + cst_int=caml_string_of_jsbytes("int"), + cst_intlit=caml_string_of_jsbytes("intlit"), + cst_string=caml_string_of_jsbytes("string"), + stream=[0,1], + cst_Blank_input_data$0=caml_string_of_jsbytes("Blank input data"), + cst_Blank_input_data=caml_string_of_jsbytes("Blank input data"), + cst_Junk_after_end_of_JSON_val= + caml_string_of_jsbytes("Junk after end of JSON value:"), + cst_Int8_overflow=caml_string_of_jsbytes("Int8 overflow"), + cst_Int_overflow$0=caml_string_of_jsbytes("Int overflow"), + cst_Int_overflow=caml_string_of_jsbytes("Int overflow"), + cst_Line=caml_string_of_jsbytes("Line"), + cst_Root_is_not_an_object_or_a$1= + caml_string_of_jsbytes("Root is not an object or array"), + cst_NaN_value_not_allowed_in_s$4= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$9= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$10= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN_value_not_allowed_in_s$3= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$8=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$7= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$8= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN_value_not_allowed_in_s$2= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$7=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$5= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$6= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN$4=caml_string_of_jsbytes("NaN"), + cst_Infinity$9=caml_string_of_jsbytes("Infinity"), + cst_Infinity$10=caml_string_of_jsbytes("-Infinity"), + cst_0$6=caml_string_of_jsbytes(".0"), + cst_NaN$3=caml_string_of_jsbytes("NaN"), + cst_0$5=caml_string_of_jsbytes(".0"), + cst_Infinity$7=caml_string_of_jsbytes("Infinity"), + cst_Infinity$8=caml_string_of_jsbytes("-Infinity"), + cst_NaN$2=caml_string_of_jsbytes("NaN"), + cst_0$4=caml_string_of_jsbytes(".0"), + cst_Infinity$5=caml_string_of_jsbytes("Infinity"), + cst_Infinity$6=caml_string_of_jsbytes("-Infinity"), + cst_true$1=caml_string_of_jsbytes("true"), + cst_false$1=caml_string_of_jsbytes("false"), + cst_null$1=caml_string_of_jsbytes("null"), + cst_b$0=caml_string_of_jsbytes("\\b"), + cst_t$0=caml_string_of_jsbytes("\\t"), + cst_n$0=caml_string_of_jsbytes("\\n"), + cst_f$0=caml_string_of_jsbytes("\\f"), + cst_r$0=caml_string_of_jsbytes("\\r"), + cst$21=caml_string_of_jsbytes('\\"'), + cst$20=caml_string_of_jsbytes("\\\\"), + cst_u00$0=caml_string_of_jsbytes("\\u00"), + cst_null$0=caml_string_of_jsbytes("null"), + cst$2=caml_string_of_jsbytes("}"), + cst$3=caml_string_of_jsbytes(","), + cst$4=caml_string_of_jsbytes("{"), + cst$5=caml_string_of_jsbytes("{}"), + cst$6=caml_string_of_jsbytes("]"), + cst$7=caml_string_of_jsbytes(","), + cst$8=caml_string_of_jsbytes("["), + cst$9=caml_string_of_jsbytes("[]"), + cst$10=caml_string_of_jsbytes("()"), + cst$11=caml_string_of_jsbytes(")"), + cst$12=caml_string_of_jsbytes(","), + cst$13=caml_string_of_jsbytes("("), + cst_true$0=caml_string_of_jsbytes("true"), + cst_false$0=caml_string_of_jsbytes("false"), + cst$14=caml_string_of_jsbytes(":"), + cst$15=caml_string_of_jsbytes("<"), + cst$16=caml_string_of_jsbytes(">"), + cst$17=caml_string_of_jsbytes(""), + cst$18=caml_string_of_jsbytes(">"), + cst$19=caml_string_of_jsbytes("<"), + cst_Root_is_not_an_object_or_a$0= + caml_string_of_jsbytes + ("Root is not an object or array as requested by the JSON standard"), + cst_Root_is_not_an_object_or_a= + caml_string_of_jsbytes("Root is not an object or array"), + cst_NaN_value_not_allowed_in_s$1= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$3= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$4= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN_value_not_allowed_in_s$0= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$3=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$1= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$2= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN_value_not_allowed_in_s= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), + cst_0$2=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$0= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN$1=caml_string_of_jsbytes("NaN"), + cst_Infinity$3=caml_string_of_jsbytes("Infinity"), + cst_Infinity$4=caml_string_of_jsbytes("-Infinity"), + cst_0$1=caml_string_of_jsbytes(".0"), + cst_NaN$0=caml_string_of_jsbytes("NaN"), + cst_0$0=caml_string_of_jsbytes(".0"), + cst_Infinity$1=caml_string_of_jsbytes("Infinity"), + cst_Infinity$2=caml_string_of_jsbytes("-Infinity"), + cst_NaN=caml_string_of_jsbytes("NaN"), + cst_0=caml_string_of_jsbytes(".0"), + cst_Infinity=caml_string_of_jsbytes("Infinity"), + cst_Infinity$0=caml_string_of_jsbytes("-Infinity"), + cst_true=caml_string_of_jsbytes("true"), + cst_false=caml_string_of_jsbytes("false"), + cst_null=caml_string_of_jsbytes("null"), + cst_b=caml_string_of_jsbytes("\\b"), + cst_t=caml_string_of_jsbytes("\\t"), + cst_n=caml_string_of_jsbytes("\\n"), + cst_f=caml_string_of_jsbytes("\\f"), + cst_r=caml_string_of_jsbytes("\\r"), + cst$0=caml_string_of_jsbytes('\\"'), + cst=caml_string_of_jsbytes("\\\\"), + cst_u00=caml_string_of_jsbytes("\\u00"), + version=caml_string_of_jsbytes("1.7.0"), + cst_Yojson_Json_error=caml_string_of_jsbytes("Yojson.Json_error"), + cst_Yojson_End_of_array=caml_string_of_jsbytes("Yojson.End_of_array"), + cst_Yojson_End_of_object=caml_string_of_jsbytes("Yojson.End_of_object"), + cst_Yojson_End_of_tuple=caml_string_of_jsbytes("Yojson.End_of_tuple"), + cst_Yojson_End_of_input=caml_string_of_jsbytes("Yojson.End_of_input"), + cst_Yojson_Basic_Int_overflow= + caml_string_of_jsbytes("Yojson.Basic.Int_overflow"), + ocaml_lex_tables= + [0, + caml_string_of_jsbytes + ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes + ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), + caml_string_of_jsbytes + ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes("")], + cst_Yojson_Basic_Finally=caml_string_of_jsbytes("Yojson.Basic.Finally"), + cst_Yojson_Basic_Util_Type_err= + caml_string_of_jsbytes("Yojson.Basic.Util.Type_error"), + cst_Yojson_Basic_Util_Undefine= + caml_string_of_jsbytes("Yojson.Basic.Util.Undefined"), + cst_Yojson_Safe_Int_overflow= + caml_string_of_jsbytes("Yojson.Safe.Int_overflow"), + ocaml_lex_tables$0= + [0, + caml_string_of_jsbytes + ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes + ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), + caml_string_of_jsbytes + ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes("")], + cst_Yojson_Safe_Finally=caml_string_of_jsbytes("Yojson.Safe.Finally"), + cst_Yojson_Safe_Util_Type_erro= + caml_string_of_jsbytes("Yojson.Safe.Util.Type_error"), + cst_Yojson_Safe_Util_Undefined= + caml_string_of_jsbytes("Yojson.Safe.Util.Undefined"), + cst_Yojson_Raw_Int_overflow= + caml_string_of_jsbytes("Yojson.Raw.Int_overflow"), + ocaml_lex_tables$1= + [0, + caml_string_of_jsbytes + ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes + ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"), + caml_string_of_jsbytes + ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), + caml_string_of_jsbytes + ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes(""), + caml_string_of_jsbytes("")], + cst_Yojson_Raw_Finally=caml_string_of_jsbytes("Yojson.Raw.Finally"), + Bi_io=global_data.Bi_io, + Stdlib_Array=global_data.Stdlib__Array, + Stdlib=global_data.Stdlib, + Bi_outbuf=global_data.Bi_outbuf, + Stdlib_String=global_data.Stdlib__String, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Format=global_data.Stdlib__Format, + Assert_failure=global_data.Assert_failure, + Stdlib_Bytes=global_data.Stdlib__Bytes, + Stdlib_Stream=global_data.Stdlib__Stream, + Stdlib_Printf=global_data.Stdlib__Printf, + Easy_format=global_data.Easy_format, + Stdlib_Char=global_data.Stdlib__Char, + Stdlib_Lexing=global_data.Stdlib__Lexing, + _a_=[0,951901561,0], + _b_=[0,848054398,0], + _c_=[0,848054398,0], + ___= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _S_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _G_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _H_= + [0, + [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], + caml_string_of_jsbytes("(@[")], + _I_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _J_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _E_= + [0, + [11, + caml_string_of_jsbytes("`Assoc ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Assoc (@[")], + _F_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _L_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _M_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _N_= + [0, + [11, + caml_string_of_jsbytes("`Floatlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Floatlit (@[")], + _O_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _P_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _Q_= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _R_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _T_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _U_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _V_= + [0, + [11, + caml_string_of_jsbytes("`Bool ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Bool (@[")], + _W_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _Y_= + [0, + [11, + caml_string_of_jsbytes("`Tuple ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Tuple (@[")], + _Z_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _$_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ab_= + [0, + [11, + caml_string_of_jsbytes("`Variant ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Variant (@[")], + _ac_= + [0, + [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], + caml_string_of_jsbytes("(@[")], + _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ae_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _af_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ag_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ak_= + [0, + [11, + caml_string_of_jsbytes("`Float ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Float (@[")], + _al_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _am_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _an_= + [0, + [11, + caml_string_of_jsbytes("`Int ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Int (@[")], + _ao_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _ap_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _aq_= + [0, + [11, + caml_string_of_jsbytes("`Stringlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Stringlit (@[")], + _ar_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _as_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _at_= + [0, + [11, + caml_string_of_jsbytes("`String ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`String (@[")], + _au_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _av_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ah_= + [0, + [11, + caml_string_of_jsbytes("`Intlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Intlit (@[")], + _ai_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _aj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _de_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _c8_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _cW_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _cX_= + [0, + [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], + caml_string_of_jsbytes("(@[")], + _cY_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cZ_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _c0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cU_= + [0, + [11, + caml_string_of_jsbytes("`Assoc ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Assoc (@[")], + _cV_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _c1_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _c2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c3_= + [0, + [11, + caml_string_of_jsbytes("`Floatlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Floatlit (@[")], + _c4_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _c5_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c6_= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _c7_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _c9_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _c__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c$_= + [0, + [11, + caml_string_of_jsbytes("`Bool ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Bool (@[")], + _da_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _db_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dc_= + [0, + [11, + caml_string_of_jsbytes("`Tuple ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Tuple (@[")], + _dd_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _df_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _dg_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dh_= + [0, + [11, + caml_string_of_jsbytes("`Variant ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Variant (@[")], + _di_= + [0, + [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], + caml_string_of_jsbytes("(@[")], + _dj_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _dk_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _dl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dn_= + [0, + [11, + caml_string_of_jsbytes("`Stringlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Stringlit (@[")], + _do_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _dp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dq_= + [0, + [11, + caml_string_of_jsbytes("`Intlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Intlit (@[")], + _dr_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ds_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dE_=[0,737456202,1], + _dF_=[0,737456202,0], + _dG_=[0,928231259,caml_string_of_jsbytes("NaN")], + _dH_=[0,928231259,caml_string_of_jsbytes("Infinity")], + _dI_=[0,928231259,caml_string_of_jsbytes("-Infinity")], + _dB_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], + caml_string_of_jsbytes("%s '%s%s'")], + _dA_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _dz_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], + caml_string_of_jsbytes("%s '%s'")], + _dv_= + [0, + [11, + caml_string_of_jsbytes("File "), + [2,0,[11,caml_string_of_jsbytes(", line"),0]]], + caml_string_of_jsbytes("File %s, line")], + _dw_= + [0, + [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], + caml_string_of_jsbytes("byte %i")], + _dy_= + [0, + [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], + caml_string_of_jsbytes("bytes %i-%i")], + _dx_= + [0, + [2, + 0, + [12, + 32, + [4, + 3, + 0, + 0, + [11, + caml_string_of_jsbytes(", "), + [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], + caml_string_of_jsbytes("%s %i, %s:\n%s")], + _du_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _dt_=[0,[15,0],caml_string_of_jsbytes("%a")], + _cR_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 0, + [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], + caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], + _b4_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _cg_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _b9_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _b__= + [0, + [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], + caml_string_of_jsbytes("(@[")], + _b$_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ca_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _cb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _b7_= + [0, + [11, + caml_string_of_jsbytes("`Assoc ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Assoc (@[")], + _b8_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _cc_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _cd_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ce_= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _cf_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _ch_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _ci_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cj_= + [0, + [11, + caml_string_of_jsbytes("`Bool ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Bool (@[")], + _ck_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _cl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cm_= + [0, + [11, + caml_string_of_jsbytes("`Variant ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Variant (@[")], + _cn_= + [0, + [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], + caml_string_of_jsbytes("(@[")], + _co_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cp_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _cq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cr_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _b2_= + [0, + [11, + caml_string_of_jsbytes("`Tuple ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Tuple (@[")], + _b3_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _b5_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _b6_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cs_= + [0, + [11, + caml_string_of_jsbytes("`Float ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Float (@[")], + _ct_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _cu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cv_= + [0, + [11, + caml_string_of_jsbytes("`Int ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Int (@[")], + _cw_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _cx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cy_= + [0, + [11, + caml_string_of_jsbytes("`Intlit ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Intlit (@[")], + _cz_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cB_= + [0, + [11, + caml_string_of_jsbytes("`String ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`String (@[")], + _cC_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cP_=[0,737456202,1], + _cQ_=[0,737456202,0], + _cM_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], + caml_string_of_jsbytes("%s '%s%s'")], + _cL_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _cK_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], + caml_string_of_jsbytes("%s '%s'")], + _cG_= + [0, + [11, + caml_string_of_jsbytes("File "), + [2,0,[11,caml_string_of_jsbytes(", line"),0]]], + caml_string_of_jsbytes("File %s, line")], + _cH_= + [0, + [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], + caml_string_of_jsbytes("byte %i")], + _cJ_= + [0, + [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], + caml_string_of_jsbytes("bytes %i-%i")], + _cI_= + [0, + [2, + 0, + [12, + 32, + [4, + 3, + 0, + 0, + [11, + caml_string_of_jsbytes(", "), + [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], + caml_string_of_jsbytes("%s %i, %s:\n%s")], + _cF_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _cE_=[0,[15,0],caml_string_of_jsbytes("%a")], + _b0_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _b1_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bZ_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bI_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bJ_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _bK_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _bL_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _bM_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _bN_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _bO_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _bP_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _bQ_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _bR_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _bS_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _bT_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _bU_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _bV_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _bW_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _bX_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _bY_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _bG_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _bH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bF_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bC_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 0, + [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], + caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], + _ba_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _a3_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _a4_= + [0, + [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], + caml_string_of_jsbytes("(@[")], + _a5_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _a6_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _a7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _a1_= + [0, + [11, + caml_string_of_jsbytes("`Assoc ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Assoc (@[")], + _a2_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _a8_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _a9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _a__= + [0, + [11, + caml_string_of_jsbytes("`List ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`List (@[")], + _a$_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes("<2>"),0], + caml_string_of_jsbytes("<2>")]], + [12,91,0]], + caml_string_of_jsbytes("@[<2>[")], + _bb_= + [0, + [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], + caml_string_of_jsbytes("@,]@]")], + _bc_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bd_= + [0, + [11, + caml_string_of_jsbytes("`Bool ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Bool (@[")], + _be_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _bf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bg_= + [0, + [11, + caml_string_of_jsbytes("`Float ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Float (@[")], + _bh_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _bi_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bj_= + [0, + [11, + caml_string_of_jsbytes("`Int ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`Int (@[")], + _bk_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _bl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bm_= + [0, + [11, + caml_string_of_jsbytes("`String ("), + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0]], + caml_string_of_jsbytes("`String (@[")], + _bn_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bo_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bA_=[0,737456202,1], + _bB_=[0,737456202,0], + _bx_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], + caml_string_of_jsbytes("%s '%s%s'")], + _bw_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _bv_= + [0, + [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], + caml_string_of_jsbytes("%s '%s'")], + _br_= + [0, + [11, + caml_string_of_jsbytes("File "), + [2,0,[11,caml_string_of_jsbytes(", line"),0]]], + caml_string_of_jsbytes("File %s, line")], + _bs_= + [0, + [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], + caml_string_of_jsbytes("byte %i")], + _bu_= + [0, + [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], + caml_string_of_jsbytes("bytes %i-%i")], + _bt_= + [0, + [2, + 0, + [12, + 32, + [4, + 3, + 0, + 0, + [11, + caml_string_of_jsbytes(", "), + [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], + caml_string_of_jsbytes("%s %i, %s:\n%s")], + _bq_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _bp_=[0,[15,0],caml_string_of_jsbytes("%a")], + _aZ_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _a0_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aY_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aI_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _aJ_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _aK_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _aL_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _aM_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _aN_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _aO_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _aP_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _aQ_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _aR_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _aS_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _aT_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _aU_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _aV_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _aW_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _aX_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _aF_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _aG_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aE_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aB_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 0, + [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], + caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], + _aA_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")], + _aw_=[0,[15,0],caml_string_of_jsbytes("%a")], + _C_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _D_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _B_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _k_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _l_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _m_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _n_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _o_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _p_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _q_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _r_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _s_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _t_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _u_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _v_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _w_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _x_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _y_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _z_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _A_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _i_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _j_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _h_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _e_= + [0, + [11, + caml_string_of_jsbytes("src="), + [3, + 0, + [11, + caml_string_of_jsbytes(" start="), + [4, + 3, + 0, + 0, + [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], + caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], + _d_=[0,caml_string_of_jsbytes("common.ml"),57,4]; + function biniou_of_json(param) + {if(typeof param === "number")return 948106916; + var _li_=param[1]; + if(708012133 <= _li_) + {if(726928360 === _li_) + {var l=param[2],_lj_=caml_call1(Stdlib_Array[12],l); + return [0, + 726928360, + caml_call2(Stdlib_Array[15],biniou_of_json,_lj_)]} + if(848054398 <= _li_) + {if(963043957 <= _li_) + {var + l$0=param[2], + _lk_=caml_call1(Stdlib_Array[12],l$0), + _ll_= + function(param) + {var x=param[2],s=param[1],_lu_=biniou_of_json(x); + return [0,[0,s],caml_call1(Bi_io[21],s),_lu_]}, + a=caml_call2(Stdlib_Array[15],_ll_,_lk_); + return [0,847309489,a]} + var l$1=param[2]; + if(l$1) + {var + _lm_=caml_call1(Stdlib_Array[12],l$1), + a$0=caml_call2(Stdlib_Array[15],biniou_of_json,_lm_), + _ln_=caml_check_bound(a$0,0)[1], + tag=caml_call1(Bi_io[70],_ln_); + try + {var _lp_=a$0.length - 1 - 1 | 0,_lo_=1; + if(! (_lp_ < 1)) + {var i=_lo_; + for(;;) + {var _lr_=caml_check_bound(a$0,i)[1 + i]; + if(caml_call1(Bi_io[70],_lr_) !== tag)throw Stdlib[3]; + var _ls_=i + 1 | 0; + if(_lp_ !== i){var i=_ls_;continue} + break}} + var _lq_=[0,951901561,[0,[0,tag,a$0]]]; + return _lq_} + catch(_lt_) + {_lt_ = caml_wrap_exception(_lt_); + if(_lt_ === Stdlib[3]) + return caml_call1(Stdlib[2],cst_Cannot_convert_heterogenou); + throw _lt_}} + return _a_} + if(737456202 <= _li_){var b=param[2];return [0,737456202,b]} + var match=param[2],o=match[2],s=match[1]; + if(o)var x=o[1],o$0=[0,biniou_of_json(x)];else var o$0=0; + return [0,708012133,[0,[0,s],caml_call1(Bi_io[21],s),o$0]]} + if(3654863 <= _li_) + {if(365180284 <= _li_){var f=param[2];return [0,928627642,f]} + var i$0=param[2]; + return [0,412180492,i$0]} + if(-752863768 <= _li_) + return caml_call1(Stdlib[2],cst_Cannot_convert_big_int_to_); + var s$0=param[2]; + return [0,-976970511,s$0]} + function json_of_biniou(x) + {if(typeof x === "number")return 870828711; + var _k3_=x[1]; + if(708012133 <= _k3_) + {if(847309489 <= _k3_) + {if(951901561 <= _k3_) + {if(1063160078 <= _k3_) + return caml_call1(Stdlib[2],cst_Cannot_convert_uvint_to_JS); + var _k4_=x[2]; + if(_k4_) + {var + match=_k4_[1], + a=match[2], + _k5_=caml_call2(Stdlib_Array[15],json_of_biniou,a); + return [0,848054398,caml_call1(Stdlib_Array[11],_k5_)]} + return _b_} + if(928626971 <= _k3_){var f=x[2];return [0,365180284,f]} + var + a$0=x[2], + _k6_= + function(param) + {var _lh_=param[1]; + if(_lh_) + {var x=param[3],s=_lh_[1];return [0,s,json_of_biniou(x)]} + return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel)}, + _k7_=caml_call2(Stdlib_Array[15],_k6_,a$0); + return [0,963043957,caml_call1(Stdlib_Array[11],_k7_)]} + if(737456202 <= _k3_) + {if(815034505 <= _k3_) + return caml_call1(Stdlib[2],cst_Cannot_convert_int8_to_JSO); + var b=x[2]; + return [0,737456202,b]} + if(726928360 <= _k3_) + {var a$1=x[2],_k8_=caml_call2(Stdlib_Array[15],json_of_biniou,a$1); + return [0,726928360,caml_call1(Stdlib_Array[11],_k8_)]} + var _k9_=x[2],_k__=_k9_[1]; + if(_k__) + {var _k$_=_k9_[3],_la_=_k__[1]; + if(_k$_) + {var x$0=_k$_[1]; + return [0,708012133,[0,_la_,[0,json_of_biniou(x$0)]]]} + return [0,708012133,[0,_la_,0]]} + return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_vari)} + if(-775957819 <= _k3_) + {if(412180492 <= _k3_) + {if(504440814 <= _k3_) + {var _lb_=x[2]; + if(_lb_) + {var + match$0=_lb_[1], + rows=match$0[2], + header=match$0[1], + _lc_= + function(a) + {var n=header.length - 1; + if(a.length - 1 !== n) + caml_call1(Stdlib[2],cst_Malformed_biniou_table); + var l=[0,0],_le_=n - 1 | 0; + if(! (_le_ < 0)) + {var i=_le_; + for(;;) + {var + match=caml_check_bound(header,i)[1 + i], + o=match[1], + x=caml_check_bound(a,i)[1 + i]; + if(o) + {var s=o[1],_lf_=l[1]; + l[1] = [0,[0,s,json_of_biniou(x)],_lf_]} + else + caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel$0); + var _lg_=i - 1 | 0; + if(0 !== i){var i=_lg_;continue} + break}} + return [0,963043957,l[1]]}, + _ld_=caml_call2(Stdlib_Array[15],_lc_,rows); + return [0,848054398,caml_call1(Stdlib_Array[11],_ld_)]} + return _c_} + var i=x[2]; + return [0,3654863,i]} + return 221365804 <= _k3_ + ?caml_call1(Stdlib[2],cst_Cannot_convert_num_variant) + :caml_call1(Stdlib[2],cst_Cannot_convert_shared_node)} + if(-783416530 <= _k3_) + return -783415859 <= _k3_ + ?caml_call1(Stdlib[2],cst_Cannot_convert_int64_to_JS) + :caml_call1(Stdlib[2],cst_Cannot_convert_int32_to_JS); + if(-783416972 <= _k3_) + return caml_call1(Stdlib[2],cst_Cannot_convert_int16_to_JS); + var s=x[2]; + return [0,-976970511,s]} + var Yojson_biniou=[0,biniou_of_json,json_of_biniou]; + caml_register_global(1022,Yojson_biniou,"Yojson_biniou"); + var Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)]; + function json_error(s){throw [0,Json_error,s]} + var + End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)], + End_of_object=[248,cst_Yojson_End_of_object,caml_fresh_oo_id(0)], + End_of_tuple=[248,cst_Yojson_End_of_tuple,caml_fresh_oo_id(0)], + End_of_input=[248,cst_Yojson_End_of_input,caml_fresh_oo_id(0)]; + function utf8_of_code(buf,x) + {var add=Bi_outbuf[15]; + function maxbits(n,x){return 0 === (x >>> n | 0)?1:0} + if(maxbits(7,x))return caml_call2(add,buf,caml_call1(Stdlib_Char[1],x)); + if(maxbits(11,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],192 | (x >>> 6 | 0) & 31)); + return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} + if(maxbits(16,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],224 | (x >>> 12 | 0) & 15)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); + return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} + if(maxbits(21,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],240 | (x >>> 18 | 0) & 7)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); + return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} + if(maxbits(26,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],248 | (x >>> 24 | 0) & 3)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); + return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} + if(maxbits(31,x)) + {caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],252 | (x >>> 30 | 0) & 1)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 24 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 18 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 12 | 0) & 63)); + caml_call2 + (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); + return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} + throw [0,Assert_failure,_d_]} + function utf8_of_surrogate_pair(buf,i,j) + {var high10=i - 55296 | 0,low10=j - 56320 | 0; + return utf8_of_code(buf,65536 + (high10 << 10 | low10) | 0)} + function is_object_or_array(x) + {if(typeof x !== "number") + {var _k2_=x[1],switch$0=0; + if(848054398 === _k2_ || 963043957 === _k2_)switch$0 = 1; + if(switch$0)return 1} + return 0} + var Lexer_state=[0]; + function init_lexer(buf,fname,opt,param) + {if(opt)var sth=opt[1],lnum=sth;else var lnum=1; + if(buf) + var buf$0=buf[1],buf$1=buf$0; + else + var buf$1=caml_call3(Bi_outbuf[3],0,0,256); + return [0,buf$1,lnum,0,fname]} + function hex(n) + {var _k1_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_k1_)} + function write_special(src,start,stop,ob,str) + {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); + caml_call2(Bi_outbuf[13],ob,str); + start[1] = stop + 1 | 0; + return 0} + function finish_string(src,start,ob) + {try + {var + _k0_= + caml_call4 + (Bi_outbuf[14], + ob, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + return _k0_} + catch(exc) + {exc = caml_wrap_exception(exc); + caml_call4 + (Stdlib_Printf[3], + _e_, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + throw exc}} + function write_string(ob,s) + {caml_call2(Bi_outbuf[15],ob,34); + var start=[0,0],_kY_=caml_ml_string_length(s) - 1 | 0,_kX_=0; + if(! (_kY_ < 0)) + {var i$0=_kX_; + for(;;) + {var c=caml_string_get(s,i$0); + if(92 === c) + write_special(s,start,i$0,ob,cst); + else + {var switch$0=0; + if(35 <= c) + if(127 === c)switch$0 = 1;else switch$0 = 2; + else + if(8 <= c) + {var switch$1=0; + switch(c - 8 | 0) + {case 0:write_special(s,start,i$0,ob,cst_b);break; + case 1:write_special(s,start,i$0,ob,cst_t);break; + case 2:write_special(s,start,i$0,ob,cst_n);break; + case 4:write_special(s,start,i$0,ob,cst_f);break; + case 5:write_special(s,start,i$0,ob,cst_r);break; + case 26:write_special(s,start,i$0,ob,cst$0);break; + case 24: + case 25:switch$0 = 2;switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1}} + else + switch$0 = 1; + switch(switch$0) + {case 2:break; + case 1: + caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); + var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; + caml_call5(Stdlib_Bytes[12],cst_u00,0,dst,i,4); + caml_bytes_set(dst,i + 4 | 0,hex(c >>> 4 | 0)); + caml_bytes_set(dst,i + 5 | 0,hex(c & 15)); + start[1] = i$0 + 1 | 0; + break + }} + var _kZ_=i$0 + 1 | 0; + if(_kY_ !== i$0){var i$0=_kZ_;continue} + break}} + finish_string(s,start,ob); + return caml_call2(Bi_outbuf[15],ob,34)} + function json_string_of_string(s) + {var ob=caml_call3(Bi_outbuf[3],0,0,10); + write_string(ob,s); + return caml_call1(Bi_outbuf[4],ob)} + function write_null(ob,param) + {return caml_call2(Bi_outbuf[13],ob,cst_null)} + function write_bool(ob,x) + {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)} + var + _f_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _g_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), + max_digits=caml_call2(Stdlib[17],_g_,_f_); + function write_digits(s,pos,x) + {if(0 === x)return pos; + var + d=x % 10 | 0, + pos$0=write_digits(s,pos,x / 10 | 0), + n=caml_call1(Stdlib[18],d); + caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); + return pos$0 + 1 | 0} + function write_int(ob,x) + {caml_call2(Bi_outbuf[9],ob,max_digits); + if(0 < x){ob[3] = write_digits(ob[1],ob[3],x);return 0} + if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); + var s=ob[1],pos=ob[3]; + caml_bytes_set(s,pos,45); + ob[3] = write_digits(s,pos + 1 | 0,x); + return 0} + function float_needs_period(s) + {try + {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0; + if(! (_kS_ < 0)) + {var i=_kR_; + for(;;) + {var match=caml_string_get(s,i),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + else + if(45 === match)switch$0 = 1; + if(! switch$0)throw Stdlib[3]; + var _kU_=i + 1 | 0; + if(_kS_ !== i){var i=_kU_;continue} + break}} + var _kT_=1; + return _kT_} + catch(_kV_) + {_kV_ = caml_wrap_exception(_kV_); + if(_kV_ === Stdlib[3])return 0; + throw _kV_}} + function write_float_fast(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _kP_=0. < x?cst_Infinity:cst_Infinity$0; + return caml_call2(Bi_outbuf[13],ob,_kP_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN); + var s=caml_call2(Stdlib_Printf[4],_h_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _kQ_=float_needs_period(s); + return _kQ_?caml_call2(Bi_outbuf[13],ob,cst_0):_kQ_} + function write_float(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _kN_=0. < x?cst_Infinity$1:cst_Infinity$2; + return caml_call2(Bi_outbuf[13],ob,_kN_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$0); + var + s1=caml_call2(Stdlib_Printf[4],_i_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_j_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _kO_=float_needs_period(s); + return _kO_?caml_call2(Bi_outbuf[13],ob,cst_0$0):_kO_} + function write_normal_float_prec(significant_figures,ob,x) + {var switcher=significant_figures - 1 | 0; + if(15 < switcher >>> 0) + var s=caml_call2(Stdlib_Printf[4],_k_,x); + else + switch(switcher) + {case 0:var s=caml_call2(Stdlib_Printf[4],_l_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_m_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_n_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_o_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_p_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_q_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_r_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_s_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_t_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_u_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_v_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_w_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_x_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_y_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_z_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_A_,x)} + caml_call2(Bi_outbuf[13],ob,s); + var _kM_=float_needs_period(s); + return _kM_?caml_call2(Bi_outbuf[13],ob,cst_0$1):_kM_} + function write_float_prec(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _kL_=0. < x?cst_Infinity$3:cst_Infinity$4; + return caml_call2(Bi_outbuf[13],ob,_kL_)} + return 4 <= match + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$1) + :write_normal_float_prec(significant_figures,ob,x)} + function write_std_float_fast(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _kJ_= + 0. < x + ?cst_Infinity_value_not_allowed + :cst_Infinity_value_not_allowed$0; + return json_error(_kJ_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s); + var s=caml_call2(Stdlib_Printf[4],_B_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _kK_=float_needs_period(s); + return _kK_?caml_call2(Bi_outbuf[13],ob,cst_0$2):_kK_} + function write_std_float(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _kH_= + 0. < x + ?cst_Infinity_value_not_allowed$1 + :cst_Infinity_value_not_allowed$2; + return json_error(_kH_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$0); + var + s1=caml_call2(Stdlib_Printf[4],_C_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_D_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _kI_=float_needs_period(s); + return _kI_?caml_call2(Bi_outbuf[13],ob,cst_0$3):_kI_} + function write_std_float_prec(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _kG_= + 0. < x + ?cst_Infinity_value_not_allowed$3 + :cst_Infinity_value_not_allowed$4; + return json_error(_kG_)} + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$1) + :write_normal_float_prec(significant_figures,ob,x)} + var + write_intlit=Bi_outbuf[13], + write_floatlit=Bi_outbuf[13], + write_stringlit=Bi_outbuf[13]; + function iter2(f_elt,f_sep,x,param$0) + {if(param$0) + {var l$0=param$0[2],y$0=param$0[1]; + caml_call2(f_elt,x,y$0); + var param=l$0; + for(;;) + {if(param) + {var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l; + continue} + return 0}} + return 0} + function f_sep(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function write_tuple(ob,l) + {caml_call2(Bi_outbuf[15],ob,40); + iter2(write_t,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],ob,41)} + function write_list(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2(write_t,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + function write_t(ob,x) + {if(typeof x === "number")return write_null(ob,0); + var _kF_=x[1]; + if(708012133 <= _kF_) + {if(737456202 <= _kF_) + {if(928231259 <= _kF_) + {if(963043957 <= _kF_){var l=x[2];return write_assoc(ob,l)} + var s=x[2]; + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _kF_){var l$0=x[2];return write_list(ob,l$0)} + var b=x[2]; + return write_bool(ob,b)} + if(726928360 <= _kF_){var l$1=x[2];return write_tuple(ob,l$1)} + var match=x[2],o=match[2],s$0=match[1]; + return write_variant(ob,s$0,o)} + if(-752863768 === _kF_) + {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + if(3654863 <= _kF_) + {if(365180284 <= _kF_){var f=x[2];return write_float(ob,f)} + var i=x[2]; + return write_int(ob,i)} + if(-375152890 <= _kF_) + {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)} + var s$3=x[2]; + return write_string(ob,s$3)} + function write_assoc(ob,l) + {function f_elt(ob,param) + {var x=param[2],s=param[1]; + write_string(ob,s); + caml_call2(Bi_outbuf[15],ob,58); + return write_t(ob,x)} + caml_call2(Bi_outbuf[15],ob,123); + iter2(f_elt,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],ob,125)} + function write_variant(ob,s,o) + {caml_call2(Bi_outbuf[15],ob,60); + write_string(ob,s); + if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t(ob,x)} + return caml_call2(Bi_outbuf[15],ob,62)} + function write_std_tuple(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2(write_std_json,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + function write_std_json(ob,x) + {if(typeof x === "number")return write_null(ob,0); + var _kE_=x[1]; + if(708012133 <= _kE_) + {if(737456202 <= _kE_) + {if(928231259 <= _kE_) + {if(963043957 <= _kE_) + {var + l=x[2], + f_elt= + function(ob,param) + {var x=param[2],s=param[1]; + write_string(ob,s); + caml_call2(Bi_outbuf[15],ob,58); + return write_std_json(ob,x)}; + caml_call2(Bi_outbuf[15],ob,123); + iter2(f_elt,f_sep,ob,l); + return caml_call2(Bi_outbuf[15],ob,125)} + var s=x[2]; + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _kE_) + {var l$0=x[2]; + caml_call2(Bi_outbuf[15],ob,91); + iter2(write_std_json,f_sep,ob,l$0); + return caml_call2(Bi_outbuf[15],ob,93)} + var b=x[2]; + return write_bool(ob,b)} + if(726928360 <= _kE_){var l$1=x[2];return write_std_tuple(ob,l$1)} + var match=x[2],o=match[2],s$0=match[1]; + return write_std_variant(ob,s$0,o)} + if(-752863768 === _kE_) + {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + if(3654863 <= _kE_) + {if(365180284 <= _kE_){var f=x[2];return write_std_float(ob,f)} + var i=x[2]; + return write_int(ob,i)} + if(-375152890 <= _kE_) + {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)} + var s$3=x[2]; + return write_string(ob,s$3)} + function write_std_variant(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Bi_outbuf[15],ob,91); + write_string(ob,s); + caml_call2(Bi_outbuf[15],ob,44); + write_std_json(ob,x); + return caml_call2(Bi_outbuf[15],ob,93)} + return write_string(ob,s)} + function to_outbuf(opt,ob,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + return std + ?is_object_or_array(x) + ?write_std_json(ob,x) + :json_error(cst_Root_is_not_an_object_or_a) + :write_t(ob,x)} + function to_string(buf,opt,std,x) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + else + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + to_outbuf(std,ob$0,x); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); + return s} + function to_channel(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + to_outbuf(std,ob$0,x); + return caml_call1(Bi_outbuf[6],ob$0)} + function to_output(buf,len,std,out,x) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[7],len,0,out); + to_outbuf(std,ob$0,x); + return caml_call1(Bi_outbuf[8],ob$0)} + function to_file(len,std,file,x) + {var oc=caml_call1(Stdlib[60],file); + try + {to_channel(0,len,std,oc,x); + var _kD_=caml_call1(Stdlib[76],oc); + return _kD_} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} + function stream_to_outbuf(std,ob,st) + {function _kB_(_kC_){return to_outbuf(std,ob,_kC_)} + return caml_call2(Stdlib_Stream[8],_kB_,st)} + function stream_to_string(buf,opt,std,st) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + else + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + stream_to_outbuf(std,ob$0,st); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); + return s} + function stream_to_channel(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + stream_to_outbuf(std,ob$0,st); + return caml_call1(Bi_outbuf[6],ob$0)} + function stream_to_file(len,std,file,st) + {var oc=caml_call1(Stdlib[60],file); + try + {stream_to_channel(0,len,std,oc,st); + var _kA_=caml_call1(Stdlib[76],oc); + return _kA_} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} + function sort(x) + {if(typeof x !== "number") + {var _kr_=x[1]; + if(726928361 <= _kr_) + {if(848054398 === _kr_) + {var l=x[2],_ks_=caml_call2(Stdlib_List[21],sort,l); + return [0,848054398,caml_call1(Stdlib_List[9],_ks_)]} + if(963043957 === _kr_) + {var + l$0=x[2], + _kt_= + function(param){var v=param[2],k=param[1];return [0,k,sort(v)]}, + _ku_=caml_call2(Stdlib_List[21],_kt_,l$0), + l$1=caml_call1(Stdlib_List[9],_ku_), + _kv_= + function(param,_kz_) + {var b=_kz_[1],a=param[1]; + return caml_call2(Stdlib_String[9],a,b)}; + return [0,963043957,caml_call2(Stdlib_List[57],_kv_,l$1)]}} + else + if(708012133 === _kr_) + {var _kw_=x[2],_kx_=_kw_[2]; + if(_kx_) + {var v=_kx_[1],k=_kw_[1],v$0=sort(v); + return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} + else + if(726928360 <= _kr_) + {var l$2=x[2],_ky_=caml_call2(Stdlib_List[21],sort,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_ky_)]}} + return x} + function pp(fmt,param) + {if(typeof param === "number") + return caml_call2(Stdlib_Format[13],fmt,cst_Null); + var _kk_=param[1]; + if(708012133 <= _kk_) + {if(737456202 <= _kk_) + {if(928231259 <= _kk_) + {if(963043957 <= _kk_) + {var xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_E_); + caml_call2(Stdlib_Format[129],fmt,_F_); + var + _kl_=0, + _km_= + function(sep,param) + {var value=param[2],key=param[1]; + if(sep)caml_call2(Stdlib_Format[129],fmt,_G_); + caml_call2(Stdlib_Format[129],fmt,_H_); + caml_call3(Stdlib_Format[129],fmt,_I_,key); + caml_call2(Stdlib_Format[129],fmt,_J_); + pp(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_K_); + return 1}; + caml_call3(Stdlib_List[25],_km_,_kl_,xs); + caml_call2(Stdlib_Format[129],fmt,_L_); + return caml_call2(Stdlib_Format[129],fmt,_M_)} + var x=param[2]; + caml_call2(Stdlib_Format[129],fmt,_N_); + caml_call3(Stdlib_Format[129],fmt,_O_,x); + return caml_call2(Stdlib_Format[129],fmt,_P_)} + if(848054398 <= _kk_) + {var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_Q_); + caml_call2(Stdlib_Format[129],fmt,_R_); + var + _kn_=0, + _ko_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_S_); + pp(fmt,x); + return 1}; + caml_call3(Stdlib_List[25],_ko_,_kn_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_T_); + return caml_call2(Stdlib_Format[129],fmt,_U_)} + var x$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_V_); + caml_call3(Stdlib_Format[129],fmt,_W_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_X_)} + if(726928360 <= _kk_) + {var tup=param[2]; + caml_call2(Stdlib_Format[129],fmt,_Y_); + caml_call2(Stdlib_Format[129],fmt,_Z_); + var + _kp_=0, + _kq_= + function(sep,e) + {if(sep)caml_call2(Stdlib_Format[129],fmt,___); + pp(fmt,e); + return 1}; + caml_call3(Stdlib_List[25],_kq_,_kp_,tup); + caml_call2(Stdlib_Format[129],fmt,_$_); + return caml_call2(Stdlib_Format[129],fmt,_aa_)} + var match=param[2],value=match[2],name=match[1]; + caml_call2(Stdlib_Format[129],fmt,_ab_); + caml_call2(Stdlib_Format[129],fmt,_ac_); + caml_call3(Stdlib_Format[129],fmt,_ad_,name); + caml_call2(Stdlib_Format[129],fmt,_ae_); + if(value) + {var x$1=value[1]; + caml_call2(Stdlib_Format[13],fmt,cst_Some); + pp(fmt,x$1); + caml_call2(Stdlib_Format[13],fmt,cst$1)} + else + caml_call2(Stdlib_Format[13],fmt,cst_None); + caml_call2(Stdlib_Format[129],fmt,_af_); + return caml_call2(Stdlib_Format[129],fmt,_ag_)} + if(-752863768 === _kk_) + {var x$2=param[2]; + caml_call2(Stdlib_Format[129],fmt,_ah_); + caml_call3(Stdlib_Format[129],fmt,_ai_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_aj_)} + if(3654863 <= _kk_) + {if(365180284 <= _kk_) + {var x$3=param[2]; + caml_call2(Stdlib_Format[129],fmt,_ak_); + caml_call3(Stdlib_Format[129],fmt,_al_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_am_)} + var x$4=param[2]; + caml_call2(Stdlib_Format[129],fmt,_an_); + caml_call3(Stdlib_Format[129],fmt,_ao_,x$4); + return caml_call2(Stdlib_Format[129],fmt,_ap_)} + if(-375152890 <= _kk_) + {var x$5=param[2]; + caml_call2(Stdlib_Format[129],fmt,_aq_); + caml_call3(Stdlib_Format[129],fmt,_ar_,x$5); + return caml_call2(Stdlib_Format[129],fmt,_as_)} + var x$6=param[2]; + caml_call2(Stdlib_Format[129],fmt,_at_); + caml_call3(Stdlib_Format[129],fmt,_au_,x$6); + return caml_call2(Stdlib_Format[129],fmt,_av_)} + function show(x){return caml_call3(Stdlib_Format[133],_aw_,pp,x)} + function equal(a,b) + {var a$0=a,b$0=b; + for(;;) + {if(typeof a$0 === "number") + {if(870828711 === a$0 && 870828711 === b$0)return 1} + else + {var _kd_=a$0[1]; + if(708012133 <= _kd_) + {var switch$0=0; + if(848054398 <= _kd_) + {if(928231259 === _kd_) + {if(typeof b$0 !== "number" && 928231259 === b$0[1]) + {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} + else + if(963043957 === _kd_) + {if(typeof b$0 !== "number" && 963043957 === b$0[1]) + {var + ys=b$0[2], + xs=a$0[2], + compare_keys= + function(param,_kj_) + {var key=_kj_[1],key$0=param[1]; + return caml_call2(Stdlib_String[9],key$0,key)}, + xs$0=caml_call2(Stdlib_List[57],compare_keys,xs), + ys$0=caml_call2(Stdlib_List[57],compare_keys,ys); + try + {var + _ke_= + function(param,_ki_) + {var + value=_ki_[2], + key=_ki_[1], + value$0=param[2], + key$0=param[1], + match=caml_string_equal(key$0,key); + return match?equal(value$0,value):0}, + result=caml_call3(Stdlib_List[34],_ke_,xs$0,ys$0); + return result} + catch(_kh_) + {_kh_ = caml_wrap_exception(_kh_); + if(_kh_[1] === Stdlib[6])return 0; + throw _kh_}}} + else + if + (! + (848054399 <= _kd_) + && + typeof b$0 + !== + "number" + && + 848054398 + === + b$0[1]) + {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} + else + if(726928360 === _kd_) + {if(typeof b$0 !== "number" && 726928360 === b$0[1]) + {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} + else + if(737456202 === _kd_) + {if(typeof b$0 !== "number" && 737456202 === b$0[1]) + {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}} + else + if + (! + (708012134 <= _kd_) + && + typeof b$0 + !== + "number" + && + 708012133 + === + b$0[1]) + {var + _kf_=b$0[2], + value=_kf_[2], + name=_kf_[1], + match=a$0[2], + value$0=match[2], + name$0=match[1], + match$0=caml_equal(name$0,name); + if(match$0) + {if(value$0) + {if(value) + {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}} + else + if(! value)return 1; + return 0} + return 0} + if(switch$0) + try + {var result$0=caml_call3(Stdlib_List[34],equal,xs$1,ys$1); + return result$0} + catch(_kg_) + {_kg_ = caml_wrap_exception(_kg_); + if(_kg_[1] === Stdlib[6])return 0; + throw _kg_}} + else + if(-375152890 <= _kd_) + {if(3654863 === _kd_) + {if(typeof b$0 !== "number" && 3654863 === b$0[1]) + {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} + else + if(365180284 === _kd_) + {if(typeof b$0 !== "number" && 365180284 === b$0[1]) + {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}} + else + if + (! + (-375152889 <= _kd_) + && + typeof b$0 + !== + "number" + && + -375152890 + === + b$0[1]) + {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}} + else + if(-976970511 === _kd_) + {if(typeof b$0 !== "number" && -976970511 === b$0[1]) + {var b$7=b$0[2],a$7=a$0[2];return caml_equal(a$7,b$7)}} + else + if + (-752863768 + === + _kd_ + && + typeof b$0 + !== + "number" + && + -752863768 + === + b$0[1]) + {var b$8=b$0[2],a$8=a$0[2];return caml_equal(a$8,b$8)}} + return 0}} + var + array=Easy_format[2], + record=Easy_format[2], + _ax_=Easy_format[2], + tuple= + [0, + 0, + _ax_[2], + _ax_[3], + _ax_[4], + 0, + _ax_[6], + 0, + _ax_[8], + _ax_[9], + _ax_[10], + _ax_[11], + _ax_[12], + _ax_[13], + _ax_[14]], + _ay_=Easy_format[2], + variant= + [0, + _ay_[1], + _ay_[2], + _ay_[3], + _ay_[4], + 0, + _ay_[6], + _ay_[7], + _ay_[8], + _ay_[9], + _ay_[10], + _ay_[11], + _ay_[12], + _ay_[13], + _ay_[14]]; + function _az_(std,x) + {var x$0=x; + for(;;) + {if(typeof x$0 === "number")return [0,cst_null$0,Easy_format[1]]; + var _jT_=x$0[1]; + if(726928360 <= _jT_) + {if(737456202 === _jT_) + {var + x$1=x$0[2], + _jU_=Easy_format[1], + _jV_=x$1?cst_true$0:cst_false$0; + return [0,_jV_,_jU_]} + if(! (928231259 <= _jT_)) + {if(848054398 <= _jT_) + {var _jY_=x$0[2]; + if(_jY_) + {var _jZ_=function(_kc_){return _az_(std,_kc_)}; + return [1, + [0,cst$8,cst$7,cst$6,array], + caml_call2(Stdlib_List[19],_jZ_,_jY_)]} + return [0,cst$9,Easy_format[1]]} + var l=x$0[2]; + if(std){var x$2=[0,848054398,l],x$0=x$2;continue} + if(0 === l)return [0,cst$10,Easy_format[1]]; + var _j0_=function(_kb_){return _az_(std,_kb_)}; + return [1, + [0,cst$13,cst$12,cst$11,tuple], + caml_call2(Stdlib_List[19],_j0_,l)]} + if(963043957 <= _jT_) + {var _jW_=x$0[2]; + if(_jW_) + {var + _jX_= + function(param) + {var + x=param[2], + name=param[1], + _j$_=json_string_of_string(name), + s=caml_call2(Stdlib_Printf[4],_aA_,_j$_), + _ka_=_az_(std,x); + return [2,[0,[0,s,Easy_format[1]],Easy_format[3]],_ka_]}; + return [1, + [0,cst$4,cst$3,cst$2,record], + caml_call2(Stdlib_List[19],_jX_,_jW_)]} + return [0,cst$5,Easy_format[1]]}} + else + {if(3654863 === _jT_) + {var x$3=x$0[2],_j1_=Easy_format[1]; + return [0,caml_call1(Stdlib[33],x$3),_j1_]} + if(365180284 <= _jT_) + {if(708012133 <= _jT_) + {var _j2_=x$0[2],_j3_=_j2_[2],_j4_=_j2_[1]; + if(_j3_) + {var x$4=_j3_[1]; + if(std) + {var + x$5=[0,848054398,[0,[0,-976970511,_j4_],[0,x$4,0]]], + x$0=x$5; + continue} + var + _j5_=json_string_of_string(_j4_), + _j6_=caml_call2(Stdlib[28],_j5_,cst$14), + op=caml_call2(Stdlib[28],cst$15,_j6_); + return [1,[0,op,cst$17,cst$16,variant],[0,_az_(std,x$4),0]]} + if(std){var x$6=[0,-976970511,_j4_],x$0=x$6;continue} + var + _j7_=Easy_format[1], + _j8_=json_string_of_string(_j4_), + _j9_=caml_call2(Stdlib[28],_j8_,cst$18); + return [0,caml_call2(Stdlib[28],cst$19,_j9_),_j7_]} + var x$7=x$0[2]; + if(std) + {var ob$0=caml_call3(Bi_outbuf[3],0,0,20); + write_std_float(ob$0,x$7); + var s$0=caml_call1(Bi_outbuf[4],ob$0)} + else + {var ob=caml_call3(Bi_outbuf[3],0,0,20); + write_float(ob,x$7); + var s$0=caml_call1(Bi_outbuf[4],ob)} + return [0,s$0,Easy_format[1]]} + if(! (-752863768 <= _jT_)) + {var s$1=x$0[2],_j__=Easy_format[1]; + return [0,json_string_of_string(s$1),_j__]}} + var s=x$0[2]; + return [0,s,Easy_format[1]]}} + function format(opt,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + if(std && ! is_object_or_array(x)) + return json_error(cst_Root_is_not_an_object_or_a$0); + return _az_(std,x)} + function to_string$0(std,x) + {var _jS_=format(std,x);return caml_call3(Easy_format[4][4],0,0,_jS_)} + function to_channel$0(std,oc,x) + {var _jR_=format(std,x);return caml_call4(Easy_format[4][5],0,0,oc,_jR_)} + function pretty_format(std,x){return format(std,x)} + function pretty_print(std,out,x) + {var _jQ_=pretty_format(std,x); + return caml_call2(Easy_format[4][2],out,_jQ_)} + function pretty_to_string(std,x){return to_string$0(std,x)} + function pretty_to_channel(std,oc,x){return to_channel$0(std,oc,x)} + function hex$0(n) + {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_jP_)} + function write_special$0(src,start,stop,ob,str) + {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); + caml_call2(Bi_outbuf[13],ob,str); + start[1] = stop + 1 | 0; + return 0} + function finish_string$0(src,start,ob) + {try + {var + _jO_= + caml_call4 + (Bi_outbuf[14], + ob, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + return _jO_} + catch(exc) + {exc = caml_wrap_exception(exc); + caml_call4 + (Stdlib_Printf[3], + _aB_, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + throw exc}} + function write_string$0(ob,s) + {caml_call2(Bi_outbuf[15],ob,34); + var start=[0,0],_jM_=caml_ml_string_length(s) - 1 | 0,_jL_=0; + if(! (_jM_ < 0)) + {var i$0=_jL_; + for(;;) + {var c=caml_string_get(s,i$0); + if(92 === c) + write_special$0(s,start,i$0,ob,cst$20); + else + {var switch$0=0; + if(35 <= c) + if(127 === c)switch$0 = 1;else switch$0 = 2; + else + if(8 <= c) + {var switch$1=0; + switch(c - 8 | 0) + {case 0:write_special$0(s,start,i$0,ob,cst_b$0);break; + case 1:write_special$0(s,start,i$0,ob,cst_t$0);break; + case 2:write_special$0(s,start,i$0,ob,cst_n$0);break; + case 4:write_special$0(s,start,i$0,ob,cst_f$0);break; + case 5:write_special$0(s,start,i$0,ob,cst_r$0);break; + case 26:write_special$0(s,start,i$0,ob,cst$21);break; + case 24: + case 25:switch$0 = 2;switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1}} + else + switch$0 = 1; + switch(switch$0) + {case 2:break; + case 1: + caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); + var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; + caml_call5(Stdlib_Bytes[12],cst_u00$0,0,dst,i,4); + caml_bytes_set(dst,i + 4 | 0,hex$0(c >>> 4 | 0)); + caml_bytes_set(dst,i + 5 | 0,hex$0(c & 15)); + start[1] = i$0 + 1 | 0; + break + }} + var _jN_=i$0 + 1 | 0; + if(_jM_ !== i$0){var i$0=_jN_;continue} + break}} + finish_string$0(s,start,ob); + return caml_call2(Bi_outbuf[15],ob,34)} + function write_null$0(ob,param) + {return caml_call2(Bi_outbuf[13],ob,cst_null$1)} + function write_bool$0(ob,x) + {var _jK_=x?cst_true$1:cst_false$1; + return caml_call2(Bi_outbuf[13],ob,_jK_)} + var + _aC_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _aD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), + max_digits$0=caml_call2(Stdlib[17],_aD_,_aC_); + function write_digits$0(s,pos,x) + {if(0 === x)return pos; + var + d=x % 10 | 0, + pos$0=write_digits$0(s,pos,x / 10 | 0), + n=caml_call1(Stdlib[18],d); + caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); + return pos$0 + 1 | 0} + function write_int$0(ob,x) + {caml_call2(Bi_outbuf[9],ob,max_digits$0); + if(0 < x){ob[3] = write_digits$0(ob[1],ob[3],x);return 0} + if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); + var s=ob[1],pos=ob[3]; + caml_bytes_set(s,pos,45); + ob[3] = write_digits$0(s,pos + 1 | 0,x); + return 0} + function float_needs_period$0(s) + {try + {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0; + if(! (_jG_ < 0)) + {var i=_jF_; + for(;;) + {var match=caml_string_get(s,i),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + else + if(45 === match)switch$0 = 1; + if(! switch$0)throw Stdlib[3]; + var _jI_=i + 1 | 0; + if(_jG_ !== i){var i=_jI_;continue} + break}} + var _jH_=1; + return _jH_} + catch(_jJ_) + {_jJ_ = caml_wrap_exception(_jJ_); + if(_jJ_ === Stdlib[3])return 0; + throw _jJ_}} + function write_float_fast$0(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _jD_=0. < x?cst_Infinity$5:cst_Infinity$6; + return caml_call2(Bi_outbuf[13],ob,_jD_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$2); + var s=caml_call2(Stdlib_Printf[4],_aE_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _jE_=float_needs_period$0(s); + return _jE_?caml_call2(Bi_outbuf[13],ob,cst_0$4):_jE_} + function write_float$0(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _jB_=0. < x?cst_Infinity$7:cst_Infinity$8; + return caml_call2(Bi_outbuf[13],ob,_jB_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$3); + var + s1=caml_call2(Stdlib_Printf[4],_aF_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_aG_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _jC_=float_needs_period$0(s); + return _jC_?caml_call2(Bi_outbuf[13],ob,cst_0$5):_jC_} + function write_normal_float_prec$0(significant_figures,ob,x) + {var switcher=significant_figures - 1 | 0; + if(15 < switcher >>> 0) + var s=caml_call2(Stdlib_Printf[4],_aH_,x); + else + switch(switcher) + {case 0:var s=caml_call2(Stdlib_Printf[4],_aI_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_aJ_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_aK_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_aL_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_aM_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_aN_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_aO_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_aP_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_aQ_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_aR_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_aS_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_aT_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_aU_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_aV_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_aW_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_aX_,x)} + caml_call2(Bi_outbuf[13],ob,s); + var _jA_=float_needs_period$0(s); + return _jA_?caml_call2(Bi_outbuf[13],ob,cst_0$6):_jA_} + function write_float_prec$0(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _jz_=0. < x?cst_Infinity$9:cst_Infinity$10; + return caml_call2(Bi_outbuf[13],ob,_jz_)} + return 4 <= match + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$4) + :write_normal_float_prec$0(significant_figures,ob,x)} + function write_std_float_fast$0(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _jx_= + 0. < x + ?cst_Infinity_value_not_allowed$5 + :cst_Infinity_value_not_allowed$6; + return json_error(_jx_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$2); + var s=caml_call2(Stdlib_Printf[4],_aY_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _jy_=float_needs_period$0(s); + return _jy_?caml_call2(Bi_outbuf[13],ob,cst_0$7):_jy_} + function write_std_float$0(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _jv_= + 0. < x + ?cst_Infinity_value_not_allowed$7 + :cst_Infinity_value_not_allowed$8; + return json_error(_jv_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$3); + var + s1=caml_call2(Stdlib_Printf[4],_aZ_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_a0_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _jw_=float_needs_period$0(s); + return _jw_?caml_call2(Bi_outbuf[13],ob,cst_0$8):_jw_} + function write_std_float_prec$0(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _ju_= + 0. < x + ?cst_Infinity_value_not_allowed$9 + :cst_Infinity_value_not_allowed$10; + return json_error(_ju_)} + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$4) + :write_normal_float_prec$0(significant_figures,ob,x)} + function iter2$0(f_elt,f_sep,x,param$0) + {if(param$0) + {var l$0=param$0[2],y$0=param$0[1]; + caml_call2(f_elt,x,y$0); + var param=l$0; + for(;;) + {if(param) + {var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l; + continue} + return 0}} + return 0} + function f_sep$0(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function write_list$0(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$0(write_t$0,f_sep$0,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + function write_t$0(ob,x) + {if(typeof x === "number")return write_null$0(ob,0); + var _jt_=x[1]; + if(365180284 <= _jt_) + {if(848054398 <= _jt_) + {if(963043957 <= _jt_){var l=x[2];return write_assoc$0(ob,l)} + var l$0=x[2]; + return write_list$0(ob,l$0)} + if(737456202 <= _jt_){var b=x[2];return write_bool$0(ob,b)} + var f=x[2]; + return write_float$0(ob,f)} + if(3654863 <= _jt_){var i=x[2];return write_int$0(ob,i)} + var s=x[2]; + return write_string$0(ob,s)} + function write_assoc$0(ob,l) + {function f_elt(ob,param) + {var x=param[2],s=param[1]; + write_string$0(ob,s); + caml_call2(Bi_outbuf[15],ob,58); + return write_t$0(ob,x)} + caml_call2(Bi_outbuf[15],ob,123); + iter2$0(f_elt,f_sep$0,ob,l); + return caml_call2(Bi_outbuf[15],ob,125)} + function write_std_json$0(ob,x) + {if(typeof x === "number")return write_null$0(ob,0); + var _js_=x[1]; + if(365180284 <= _js_) + {if(848054398 <= _js_) + {if(963043957 <= _js_) + {var + l=x[2], + f_elt= + function(ob,param) + {var x=param[2],s=param[1]; + write_string$0(ob,s); + caml_call2(Bi_outbuf[15],ob,58); + return write_std_json$0(ob,x)}; + caml_call2(Bi_outbuf[15],ob,123); + iter2$0(f_elt,f_sep$0,ob,l); + return caml_call2(Bi_outbuf[15],ob,125)} + var l$0=x[2]; + caml_call2(Bi_outbuf[15],ob,91); + iter2$0(write_std_json$0,f_sep$0,ob,l$0); + return caml_call2(Bi_outbuf[15],ob,93)} + if(737456202 <= _js_){var b=x[2];return write_bool$0(ob,b)} + var f=x[2]; + return write_std_float$0(ob,f)} + if(3654863 <= _js_){var i=x[2];return write_int$0(ob,i)} + var s=x[2]; + return write_string$0(ob,s)} + function to_outbuf$0(opt,ob,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + return std + ?is_object_or_array(x) + ?write_std_json$0(ob,x) + :json_error(cst_Root_is_not_an_object_or_a$1) + :write_t$0(ob,x)} + function to_string$1(buf,opt,std,x) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + else + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + to_outbuf$0(std,ob$0,x); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); + return s} + function to_channel$1(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + to_outbuf$0(std,ob$0,x); + return caml_call1(Bi_outbuf[6],ob$0)} + function to_output$0(buf,len,std,out,x) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[7],len,0,out); + to_outbuf$0(std,ob$0,x); + return caml_call1(Bi_outbuf[8],ob$0)} + function to_file$0(len,std,file,x) + {var oc=caml_call1(Stdlib[60],file); + try + {to_channel$1(0,len,std,oc,x); + var _jr_=caml_call1(Stdlib[76],oc); + return _jr_} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} + function stream_to_outbuf$0(std,ob,st) + {function _jp_(_jq_){return to_outbuf$0(std,ob,_jq_)} + return caml_call2(Stdlib_Stream[8],_jp_,st)} + function stream_to_string$0(buf,opt,std,st) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + else + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + stream_to_outbuf$0(std,ob$0,st); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); + return s} + function stream_to_channel$0(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + stream_to_outbuf$0(std,ob$0,st); + return caml_call1(Bi_outbuf[6],ob$0)} + function stream_to_file$0(len,std,file,st) + {var oc=caml_call1(Stdlib[60],file); + try + {stream_to_channel$0(0,len,std,oc,st); + var _jo_=caml_call1(Stdlib[76],oc); + return _jo_} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} + function sort$0(x) + {if(typeof x !== "number") + {var _ji_=x[1]; + if(848054398 === _ji_) + {var l=x[2],_jj_=caml_call2(Stdlib_List[21],sort$0,l); + return [0,848054398,caml_call1(Stdlib_List[9],_jj_)]} + if(963043957 === _ji_) + {var + l$0=x[2], + _jk_= + function(param){var v=param[2],k=param[1];return [0,k,sort$0(v)]}, + _jl_=caml_call2(Stdlib_List[21],_jk_,l$0), + l$1=caml_call1(Stdlib_List[9],_jl_), + _jm_= + function(param,_jn_) + {var b=_jn_[1],a=param[1]; + return caml_call2(Stdlib_String[9],a,b)}; + return [0,963043957,caml_call2(Stdlib_List[57],_jm_,l$1)]}} + return x} + function pp$0(fmt,param) + {if(typeof param === "number") + return caml_call2(Stdlib_Format[13],fmt,cst_Null$0); + var _jd_=param[1]; + if(365180284 <= _jd_) + {if(848054398 <= _jd_) + {if(963043957 <= _jd_) + {var xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_a1_); + caml_call2(Stdlib_Format[129],fmt,_a2_); + var + _je_=0, + _jf_= + function(sep,param) + {var value=param[2],key=param[1]; + if(sep)caml_call2(Stdlib_Format[129],fmt,_a3_); + caml_call2(Stdlib_Format[129],fmt,_a4_); + caml_call3(Stdlib_Format[129],fmt,_a5_,key); + caml_call2(Stdlib_Format[129],fmt,_a6_); + pp$0(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_a7_); + return 1}; + caml_call3(Stdlib_List[25],_jf_,_je_,xs); + caml_call2(Stdlib_Format[129],fmt,_a8_); + return caml_call2(Stdlib_Format[129],fmt,_a9_)} + var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_a__); + caml_call2(Stdlib_Format[129],fmt,_a$_); + var + _jg_=0, + _jh_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_ba_); + pp$0(fmt,x); + return 1}; + caml_call3(Stdlib_List[25],_jh_,_jg_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_bb_); + return caml_call2(Stdlib_Format[129],fmt,_bc_)} + if(737456202 <= _jd_) + {var x=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bd_); + caml_call3(Stdlib_Format[129],fmt,_be_,x); + return caml_call2(Stdlib_Format[129],fmt,_bf_)} + var x$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bg_); + caml_call3(Stdlib_Format[129],fmt,_bh_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_bi_)} + if(3654863 <= _jd_) + {var x$1=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bj_); + caml_call3(Stdlib_Format[129],fmt,_bk_,x$1); + return caml_call2(Stdlib_Format[129],fmt,_bl_)} + var x$2=param[2]; + caml_call2(Stdlib_Format[129],fmt,_bm_); + caml_call3(Stdlib_Format[129],fmt,_bn_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_bo_)} + function show$0(x){return caml_call3(Stdlib_Format[133],_bp_,pp$0,x)} + function equal$0(a,b) + {if(typeof a === "number") + {if(870828711 === a && 870828711 === b)return 1} + else + {var _i9_=a[1]; + if(365180285 <= _i9_) + {if(737456202 === _i9_) + {if(typeof b !== "number" && 737456202 === b[1]) + {var b$0=b[2],a$0=a[2];return caml_equal(a$0,b$0)}} + else + if(848054398 === _i9_) + {if(typeof b !== "number" && 848054398 === b[1]) + {var ys=b[2],xs=a[2]; + try + {var result=caml_call3(Stdlib_List[34],equal$0,xs,ys); + return result} + catch(_i$_) + {_i$_ = caml_wrap_exception(_i$_); + if(_i$_[1] === Stdlib[6])return 0; + throw _i$_}}} + else + if + (963043957 + === + _i9_ + && + typeof b + !== + "number" + && + 963043957 + === + b[1]) + {var + ys$0=b[2], + xs$0=a[2], + compare_keys= + function(param,_jc_) + {var key=_jc_[1],key$0=param[1]; + return caml_call2(Stdlib_String[9],key$0,key)}, + xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0), + ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0); + try + {var + _i__= + function(param,_jb_) + {var + value=_jb_[2], + key=_jb_[1], + value$0=param[2], + key$0=param[1], + match=caml_string_equal(key$0,key); + return match?equal$0(value$0,value):0}, + result$0=caml_call3(Stdlib_List[34],_i__,xs$1,ys$1); + return result$0} + catch(_ja_) + {_ja_ = caml_wrap_exception(_ja_); + if(_ja_[1] === Stdlib[6])return 0; + throw _ja_}}} + else + if(-976970511 === _i9_) + {if(typeof b !== "number" && -976970511 === b[1]) + {var b$1=b[2],a$1=a[2];return caml_equal(a$1,b$1)}} + else + if(3654863 === _i9_) + {if(typeof b !== "number" && 3654863 === b[1]) + {var b$2=b[2],a$2=a[2];return caml_equal(a$2,b$2)}} + else + if + (365180284 <= _i9_ && typeof b !== "number" && 365180284 === b[1]) + {var b$3=b[2],a$3=a[2];return caml_equal(a$3,b$3)}} + return 0} + function pretty_format$0(std,x){return format(std,x)} + function pretty_print$0(std,out,x) + {var _i8_=pretty_format$0(std,x); + return caml_call2(Easy_format[4][2],out,_i8_)} + function pretty_to_string$0(std,x){return to_string$0(std,x)} + function pretty_to_channel$0(std,oc,x){return to_channel$0(std,oc,x)} + var + from_channel=Stdlib_Lexing[2], + from_string=Stdlib_Lexing[3], + lexeme=Stdlib_Lexing[8], + sub_lexeme=Stdlib_Lexing[16], + sub_lexeme_char=Stdlib_Lexing[18]; + function hex$1(c) + {if(65 <= c) + {if(97 <= c) + {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + else + if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + else + if(! (9 < c - 48 >>> 0))return c - 48 | 0; + throw [0,Assert_failure,_bq_]} + function custom_error(descr,v,lexbuf) + {var + offs=lexbuf[4] - 1 | 0, + bol=v[3], + pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, + pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), + _i7_=v[4]; + if(_i7_) + var s=_i7_[1],file_line=caml_call2(Stdlib_Printf[4],_br_,s); + else + var file_line=cst_Line; + var + bytes= + pos1 === pos2 + ?caml_call2(Stdlib_Printf[4],_bs_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_bu_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_bt_,file_line,v[2],bytes,descr); + return json_error(msg)} + function lexer_error(descr,v,lexbuf) + {var _i6_=caml_call1(lexeme,lexbuf); + return custom_error + (caml_call3(Stdlib_Printf[4],_bv_,descr,_i6_),v,lexbuf)} + var read_junk=[0,function(param){throw [0,Assert_failure,_bw_]}]; + function long_error(descr,v,lexbuf) + {var + junk=caml_call1(lexeme,lexbuf), + extra_junk=caml_call1(read_junk[1],lexbuf); + return custom_error + (caml_call4(Stdlib_Printf[4],_bx_,descr,junk,extra_junk), + v, + lexbuf)} + var + _by_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10=(Stdlib[20] / 10 | 0) - _by_ | 0, + _bz_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10=(Stdlib[19] / 10 | 0) + _bz_ | 0, + Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)]; + function extract_positive_int(lexbuf) + {var + start=lexbuf[5], + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _i3_=stop - 1 | 0; + if(! (_i3_ < start)) + {var i=start; + for(;;) + {if(max10 <= n[1])throw Int_overflow; + var _i4_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _i4_ | 0; + var _i5_=i + 1 | 0; + if(_i3_ !== i){var i=_i5_;continue} + break}} + if(0 <= n[1])return n[1]; + throw Int_overflow} + function extract_negative_int(lexbuf) + {var + start=lexbuf[5] + 1 | 0, + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _i0_=stop - 1 | 0; + if(! (_i0_ < start)) + {var i=start; + for(;;) + {if(n[1] <= min10)throw Int_overflow; + var _i1_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _i1_ | 0; + var _i2_=i + 1 | 0; + if(_i0_ !== i){var i=_i2_;continue} + break}} + if(0 < n[1])throw Int_overflow; + return n[1]} + function newline(v,lexbuf) + {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} + function add_lexeme(buf,lexbuf) + {var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} + function read_colon(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$8,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$28,v,lexbuf)}}} + function read_object_sep(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error(cst_Expected_or_but_found$8,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$27,v,lexbuf)}}} + function read_object_end(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error(cst_Expected_or_but_found$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$21,v,lexbuf)}}} + function read_array_end(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function finish_escaped_char(v,lexbuf) + {var ocaml_lex_state=68; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(8 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var c=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5]); + return caml_call2(Bi_outbuf[15],v[1],c); + case 1:return caml_call2(Bi_outbuf[15],v[1],8); + case 2:return caml_call2(Bi_outbuf[15],v[1],12); + case 3:return caml_call2(Bi_outbuf[15],v[1],10); + case 4:return caml_call2(Bi_outbuf[15],v[1],13); + case 5:return caml_call2(Bi_outbuf[15],v[1],9); + case 6: + var + a=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 1 | 0), + b=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), + c$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), + d=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), + _iU_=hex$1(d), + _iV_=hex$1(c$0) << 4, + _iW_=hex$1(b) << 8, + x=hex$1(a) << 12 | _iW_ | _iV_ | _iU_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0: + var + a$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), + b$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), + c$1=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), + d$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 5 | 0), + _iX_=hex$1(d$0), + _iY_=hex$1(c$1) << 4, + _iZ_=hex$1(b$0) << 8, + y=hex$1(a$0) << 12 | _iZ_ | _iY_ | _iX_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error(cst_Invalid_low_surrogate_for_,v,lexbuf); + case 1: + return long_error(cst_Missing_escape_sequence_re,v,lexbuf); + default: + return custom_error(cst_Unexpected_end_of_input$3,v,lexbuf)}}} + return utf8_of_code(v[1],x); + case 7:return long_error(cst_Invalid_escape_sequence,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$2,v,lexbuf)}}} + function finish_string$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Bi_outbuf[4],v[1]); + case 1:finish_escaped_char(v,lexbuf);continue a; + case 2:add_lexeme(v[1],lexbuf);continue a; + default: + return custom_error(cst_Unexpected_end_of_input$0,v,lexbuf)}}}} + function read_ident(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2:return long_error(cst_Expected_string_or_identif,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$17,v,lexbuf)}}} + function finish_comment(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Unterminated_comment,v,lexbuf); + case 2:newline(v,lexbuf);continue a; + default:continue a}}}} + function read_space(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline(v,lexbuf);continue a; + case 1:finish_comment(v,lexbuf);continue a; + case 2:newline(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} + function read_json$2(counter,v,lexbuf) + {var _iT_=0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_read_json_rec(counter$0,v,lexbuf,_iT_)} + return caml_trampoline_return(ocaml_lex_read_json_rec,[0,v,lexbuf,_iT_])} + function ocaml_lex_read_json_rec(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(19 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return _bA_; + case 1:return _bB_; + case 2:return 870828711; + case 3:return [0,365180284,Stdlib[24]]; + case 4:return [0,365180284,Stdlib[22]]; + case 5:return [0,365180284,Stdlib[23]]; + case 6: + caml_call1(Bi_outbuf[19],v[1]); + return [0,-976970511,finish_string$1(v,lexbuf)]; + case 7: + try + {var _iJ_=[0,3654863,extract_positive_int(lexbuf)];return _iJ_} + catch(_iS_) + {_iS_ = caml_wrap_exception(_iS_); + if(_iS_ === Int_overflow) + return lexer_error(cst_Int_overflow,v,lexbuf); + throw _iS_} + case 8: + try + {var _iK_=[0,3654863,extract_negative_int(lexbuf)];return _iK_} + catch(_iR_) + {_iR_ = caml_wrap_exception(_iR_); + if(_iR_ === Int_overflow) + return lexer_error(cst_Int_overflow$0,v,lexbuf); + throw _iR_} + case 9: + return [0, + 365180284, + caml_float_of_string(caml_call1(lexeme,lexbuf))]; + case 10: + var acc=[0,0]; + try + {read_space(v,lexbuf); + read_object_end(lexbuf); + var field_name=read_ident(v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + read_space(v,lexbuf); + var _iL_=acc[1]; + acc[1] = [0,[0,field_name,read_json(v,lexbuf)],_iL_]; + for(;;) + {read_space(v,lexbuf); + read_object_sep(v,lexbuf); + read_space(v,lexbuf); + var field_name$0=read_ident(v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + read_space(v,lexbuf); + var _iM_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json(v,lexbuf)],_iM_]; + continue}} + catch(_iQ_) + {_iQ_ = caml_wrap_exception(_iQ_); + if(_iQ_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _iQ_} + case 11: + var acc$0=[0,0]; + try + {read_space(v,lexbuf); + read_array_end(lexbuf); + var _iN_=acc$0[1]; + acc$0[1] = [0,read_json(v,lexbuf),_iN_]; + for(;;) + {read_space(v,lexbuf); + read_array_sep(v,lexbuf); + read_space(v,lexbuf); + var _iO_=acc$0[1]; + acc$0[1] = [0,read_json(v,lexbuf),_iO_]; + continue}} + catch(_iP_) + {_iP_ = caml_wrap_exception(_iP_); + if(_iP_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _iP_} + case 12:return long_error(cst_Invalid_token,v,lexbuf); + case 13:return long_error(cst_Invalid_token$0,v,lexbuf); + case 14: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return read_json$2(counter$0,v,lexbuf)} + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + case 15: + finish_comment(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return read_json$2(counter$1,v,lexbuf)} + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + case 16: + newline(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return read_json$2(counter$2,v,lexbuf)} + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + case 17: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return read_json$2(counter$3,v,lexbuf)} + return caml_trampoline_return(read_json$2,[0,v,lexbuf]); + case 18:return custom_error(cst_Unexpected_end_of_input,v,lexbuf); + default:return long_error(cst_Invalid_token$1,v,lexbuf)}}} + function read_json(v,lexbuf) + {return caml_trampoline(read_json$2(0,v,lexbuf))} + function map_string(v,f,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=63; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var b=v[1],_iI_=b[3]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_iI_); + case 1:finish_escaped_char(v,lexbuf);continue a; + case 2:add_lexeme(v[1],lexbuf);continue a; + default: + return custom_error(cst_Unexpected_end_of_input$1,v,lexbuf)}}}} + function finish_stringlit(v,lexbuf) + {var ocaml_lex_state=91; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); + caml_bytes_set(s,0,34); + caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); + return caml_call1(Stdlib_Bytes[6],s); + case 1:return long_error(cst_Invalid_string_literal,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$4,v,lexbuf)}}} + function read_gt(v,lexbuf) + {var ocaml_lex_state=111; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$0,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$7,v,lexbuf)}}} + function finish_variant(v,lexbuf) + {var ocaml_lex_state=102; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var x=read_json(v,lexbuf); + read_space(v,lexbuf); + read_gt(v,lexbuf); + return [0,x]; + case 1:return 0; + case 2:return long_error(cst_Expected_or_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$5,v,lexbuf)}}} + function read_lt(v,lexbuf) + {var ocaml_lex_state=107; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$6,v,lexbuf)}}} + function read_comma(v,lexbuf) + {var ocaml_lex_state=115; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$8,v,lexbuf)}}} + function start_any_variant(v,lexbuf) + {var ocaml_lex_state=119; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return -154522342; + case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; + case 2:return -124528282; + case 3:return long_error(cst_Expected_or_but_found$0,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$9,v,lexbuf)}}} + function read_eof(lexbuf) + {var ocaml_lex_state=131; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_null(v,lexbuf) + {var ocaml_lex_state=140; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_null_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$10,v,lexbuf)}}} + function read_null_if_possible(v,lexbuf) + {var ocaml_lex_state=147; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_bool(v,lexbuf) + {var ocaml_lex_state=152; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(5 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 1; + case 1:return 0; + case 2:return 1; + case 3:return 0; + case 4:return long_error(cst_Expected_true_or_false_but,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$11,v,lexbuf)}}} + function ocaml_lex_read_int_rec(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(4 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _iC_=extract_positive_int(lexbuf);return _iC_} + catch(_iH_) + {_iH_ = caml_wrap_exception(_iH_); + if(_iH_ === Int_overflow) + return lexer_error(cst_Int_overflow$1,v,lexbuf); + throw _iH_} + case 1: + try + {var _iD_=extract_negative_int(lexbuf);return _iD_} + catch(_iG_) + {_iG_ = caml_wrap_exception(_iG_); + if(_iG_ === Int_overflow) + return lexer_error(cst_Int_overflow$2,v,lexbuf); + throw _iG_} + case 2: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$1(v,lexbuf); + try + {var _iE_=caml_int_of_string(s);return _iE_} + catch(_iF_) + {return custom_error(cst_Expected_an_integer_but_fo,v,lexbuf)} + case 3:return long_error(cst_Expected_integer_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$12,v,lexbuf)}}} + function read_int(v,lexbuf){return ocaml_lex_read_int_rec(v,lexbuf,176)} + function ocaml_lex_read_int32_rec(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(3 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _iy_=caml_int_of_string(caml_call1(lexeme,lexbuf)); + return _iy_} + catch(_iB_){return lexer_error(cst_Int32_overflow,v,lexbuf)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$1(v,lexbuf); + try + {var _iz_=caml_int_of_string(s);return _iz_} + catch(_iA_) + {return custom_error(cst_Expected_an_int32_but_foun,v,lexbuf)} + case 2:return long_error(cst_Expected_int32_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$13,v,lexbuf)}}} + function read_int32(v,lexbuf) + {return ocaml_lex_read_int32_rec(v,lexbuf,185)} + function ocaml_lex_read_int64_rec(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(3 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _iu_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); + return _iu_} + catch(_ix_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$1(v,lexbuf); + try + {var _iv_=caml_int64_of_string(s);return _iv_} + catch(_iw_) + {return custom_error(cst_Expected_an_int64_but_foun,v,lexbuf)} + case 2:return long_error(cst_Expected_int64_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$14,v,lexbuf)}}} + function read_int64(v,lexbuf) + {return ocaml_lex_read_int64_rec(v,lexbuf,192)} + function ocaml_lex_read_number_rec(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(6 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return Stdlib[24]; + case 1:return Stdlib[22]; + case 2:return Stdlib[23]; + case 3:return caml_float_of_string(caml_call1(lexeme,lexbuf)); + case 4: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$1(v,lexbuf); + try + {var _is_=caml_float_of_string(s);return _is_} + catch(_it_) + {return caml_string_notequal(s,cst_Infinity$11) + ?caml_string_notequal(s,cst_Infinity$12) + ?caml_string_notequal(s,cst_NaN$5) + ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf) + :Stdlib[24] + :Stdlib[22] + :Stdlib[23]} + case 5:return long_error(cst_Expected_number_but_found,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$15,v,lexbuf)}}} + function read_number(v,lexbuf) + {return ocaml_lex_read_number_rec(v,lexbuf,199)} + function read_string(v,lexbuf) + {var ocaml_lex_state=233; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf); + case 1:return long_error(cst_Expected_but_found$2,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$16,v,lexbuf)}}} + function map_ident(v,f,lexbuf) + {var ocaml_lex_state=242; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:caml_call1(Bi_outbuf[19],v[1]);return map_string(v,f,lexbuf); + case 1: + var len=lexbuf[6] - lexbuf[5] | 0,_ir_=lexbuf[5]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_ir_,len); + case 2:return long_error(cst_Expected_string_or_identif$0,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$18,v,lexbuf)}}} + function ocaml_lex_read_sequence_rec + (read_cell,init_acc,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,init_acc]; + try + {read_space(v,lexbuf); + read_array_end(lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + for(;;) + {read_space(v,lexbuf); + read_array_sep(v,lexbuf); + read_space(v,lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + continue}} + catch(_iq_) + {_iq_ = caml_wrap_exception(_iq_); + if(_iq_ === End_of_array)return acc[1]; + throw _iq_} + case 1:return long_error(cst_Expected_but_found$3,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$19,v,lexbuf)}}} + function read_sequence(read_cell,init_acc,v,lexbuf) + {return ocaml_lex_read_sequence_rec(read_cell,init_acc,v,lexbuf,247)} + function ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,0]; + try + {read_space(v,lexbuf); + read_array_end(lexbuf); + var _in_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_]; + for(;;) + {read_space(v,lexbuf); + read_array_sep(v,lexbuf); + read_space(v,lexbuf); + var _io_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_io_]; + continue}} + catch(_ip_) + {_ip_ = caml_wrap_exception(_ip_); + if(_ip_ === End_of_array)return acc[1]; + throw _ip_} + case 1:return long_error(cst_Expected_but_found$4,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$20,v,lexbuf)}}} + function read_list_rev(read_cell,v,lexbuf) + {return ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,251)} + function read_tuple(read_cell,init_acc,v,lexbuf) + {var ocaml_lex_state=262; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return long_error(cst_Invalid_token$2,v,lexbuf); + case 1:return long_error(cst_Expected_but_found$5,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$22,v,lexbuf)}}} + function read_tuple_end(lexbuf) + {var ocaml_lex_state=266; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_tuple; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_tuple_end2(v,std,lexbuf) + {var ocaml_lex_state=268; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + if(std)return long_error(cst_Expected_or_but_found$2,v,lexbuf); + throw End_of_tuple; + case 1: + if(std)throw End_of_tuple; + return long_error(cst_Expected_or_but_found$3,v,lexbuf); + default:return 0}}} + function read_tuple_sep(v,lexbuf) + {var ocaml_lex_state=271; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_tuple; + case 2:return long_error(cst_Expected_or_but_found$4,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$23,v,lexbuf)}}} + function read_tuple_sep2(v,std,lexbuf) + {var ocaml_lex_state=276; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1: + if(std)return long_error(cst_Expected_or_but_found$5,v,lexbuf); + throw End_of_tuple; + case 2: + if(std)throw End_of_tuple; + return long_error(cst_Expected_or_but_found$6,v,lexbuf); + case 3:return long_error(cst_Expected_or_but_found$7,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$24,v,lexbuf)}}} + function ocaml_lex_read_abstract_fields + (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,init_acc]; + try + {read_space(v,lexbuf); + read_object_end(lexbuf); + var field_name=caml_call2(read_key,v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + read_space(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); + for(;;) + {read_space(v,lexbuf); + read_object_sep(v,lexbuf); + read_space(v,lexbuf); + var field_name$0=caml_call2(read_key,v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + read_space(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); + continue}} + catch(_im_) + {_im_ = caml_wrap_exception(_im_); + if(_im_ === End_of_object)return acc[1]; + throw _im_} + case 1:return long_error(cst_Expected_but_found$6,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$25,v,lexbuf)}}} + function read_abstract_fields(read_key,read_field,init_acc,v,lexbuf) + {return ocaml_lex_read_abstract_fields + (read_key,read_field,init_acc,v,lexbuf,282)} + function read_lcurl(v,lexbuf) + {var ocaml_lex_state=286; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$7,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$26,v,lexbuf)}}} + function start_any_tuple(v,lexbuf) + {var ocaml_lex_state=301; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return 1; + case 2:return long_error(cst_Expected_or_but_found$9,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$29,v,lexbuf)}}} + function read_lpar(v,lexbuf) + {var ocaml_lex_state=306; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$9,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$30,v,lexbuf)}}} + function read_rpar(v,lexbuf) + {var ocaml_lex_state=310; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$10,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$31,v,lexbuf)}}} + function read_lbr(v,lexbuf) + {var ocaml_lex_state=314; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$11,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$32,v,lexbuf)}}} + function read_rbr(v,lexbuf) + {var ocaml_lex_state=318; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$12,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$33,v,lexbuf)}}} + function finish_skip_stringlit(v,lexbuf) + {var ocaml_lex_state=378; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Invalid_string_literal$0,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$35,v,lexbuf)}}} + function skip_ident(v,lexbuf) + {var ocaml_lex_state=394; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_skip_stringlit(v,lexbuf); + case 1:return 0; + case 2:return long_error(cst_Expected_string_or_identif$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$37,v,lexbuf)}}} + function skip_json$2(counter,v,lexbuf) + {var _il_=322; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_il_)} + return caml_trampoline_return(ocaml_lex_skip_json_rec,[0,v,lexbuf,_il_])} + function ocaml_lex_skip_json_rec(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(18 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return 0; + case 1:return 0; + case 2:return 0; + case 3:return 0; + case 4:return 0; + case 5:return 0; + case 6:return finish_skip_stringlit(v,lexbuf); + case 7:return 0; + case 8:return 0; + case 9: + try + {read_space(v,lexbuf); + read_object_end(lexbuf); + skip_ident(v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + read_space(v,lexbuf); + skip_json(v,lexbuf); + for(;;) + {read_space(v,lexbuf); + read_object_sep(v,lexbuf); + read_space(v,lexbuf); + skip_ident(v,lexbuf); + read_space(v,lexbuf); + read_colon(v,lexbuf); + read_space(v,lexbuf); + skip_json(v,lexbuf); + continue}} + catch(_ik_) + {_ik_ = caml_wrap_exception(_ik_); + if(_ik_ === End_of_object)return 0; + throw _ik_} + case 10: + try + {read_space(v,lexbuf); + read_array_end(lexbuf); + skip_json(v,lexbuf); + for(;;) + {read_space(v,lexbuf); + read_array_sep(v,lexbuf); + read_space(v,lexbuf); + skip_json(v,lexbuf); + continue}} + catch(_ij_) + {_ij_ = caml_wrap_exception(_ij_); + if(_ij_ === End_of_array)return 0; + throw _ij_} + case 11:return long_error(cst_Invalid_token$3,v,lexbuf); + case 12:return long_error(cst_Invalid_token$4,v,lexbuf); + case 13: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return skip_json$2(counter$0,v,lexbuf)} + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + case 14: + finish_comment(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return skip_json$2(counter$1,v,lexbuf)} + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + case 15: + newline(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return skip_json$2(counter$2,v,lexbuf)} + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + case 16: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return skip_json$2(counter$3,v,lexbuf)} + return caml_trampoline_return(skip_json$2,[0,v,lexbuf]); + case 17: + return custom_error(cst_Unexpected_end_of_input$34,v,lexbuf); + default:return long_error(cst_Invalid_token$5,v,lexbuf)}}} + function skip_json(v,lexbuf) + {return caml_trampoline(skip_json$2(0,v,lexbuf))} + function finish_skip_variant(v,lexbuf) + {var ocaml_lex_state=389; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + skip_json(v,lexbuf);read_space(v,lexbuf);return read_gt(v,lexbuf); + case 1:return 0; + case 2:return long_error(cst_Expected_or_but_found$10,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$36,v,lexbuf)}}} + function finish_buffer_comment(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=507; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$24); + case 1:return long_error(cst_Unterminated_comment$0,v,lexbuf); + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a; + default:add_lexeme(v[1],lexbuf);continue a}}}} + function buffer_colon(v,lexbuf) + {var ocaml_lex_state=499; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],58); + case 1:return long_error(cst_Expected_but_found$13,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$43,v,lexbuf)}}} + function buffer_array_sep(v,lexbuf) + {var ocaml_lex_state=487; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; + case 2:return long_error(cst_Expected_or_but_found$12,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$42,v,lexbuf)}}} + function buffer_array_end(v,lexbuf) + {var ocaml_lex_state=485; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_object_sep(v,lexbuf) + {var ocaml_lex_state=480; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; + case 2:return long_error(cst_Expected_or_but_found$11,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$41,v,lexbuf)}}} + function buffer_object_end(v,lexbuf) + {var ocaml_lex_state=478; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_space(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme(v[1],lexbuf);newline(v,lexbuf);continue a; + case 1: + caml_call2(Bi_outbuf[13],v[1],cst$23); + finish_buffer_comment(v,lexbuf); + continue a; + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a; + case 3:add_lexeme(v[1],lexbuf);continue a; + default:return 0}}}} + function finish_buffer_stringlit(v,lexbuf) + {var ocaml_lex_state=450; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme(v[1],lexbuf); + case 1:return long_error(cst_Invalid_string_literal$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$39,v,lexbuf)}}} + function buffer_ident(v,lexbuf) + {var ocaml_lex_state=466; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_buffer_stringlit(v,lexbuf); + case 1:return add_lexeme(v[1],lexbuf); + case 2:return long_error(cst_Expected_string_or_identif$2,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$40,v,lexbuf)}}} + function buffer_json$2(counter,v,lexbuf) + {var _ii_=399; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_ii_)} + return caml_trampoline_return + (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_ii_])} + function ocaml_lex_buffer_json_rec(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf); + if(11 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return add_lexeme(v[1],lexbuf); + case 1:return finish_buffer_stringlit(v,lexbuf); + case 2: + try + {caml_call2(Bi_outbuf[15],v[1],123); + buffer_space(v,lexbuf); + buffer_object_end(v,lexbuf); + buffer_ident(v,lexbuf); + buffer_space(v,lexbuf); + buffer_colon(v,lexbuf); + buffer_space(v,lexbuf); + buffer_json(v,lexbuf); + for(;;) + {buffer_space(v,lexbuf); + buffer_object_sep(v,lexbuf); + buffer_space(v,lexbuf); + buffer_ident(v,lexbuf); + buffer_space(v,lexbuf); + buffer_colon(v,lexbuf); + buffer_space(v,lexbuf); + buffer_json(v,lexbuf); + continue}} + catch(_ih_) + {_ih_ = caml_wrap_exception(_ih_); + if(_ih_ === End_of_object)return 0; + throw _ih_} + case 3: + try + {caml_call2(Bi_outbuf[15],v[1],91); + buffer_space(v,lexbuf); + buffer_array_end(v,lexbuf); + buffer_json(v,lexbuf); + for(;;) + {buffer_space(v,lexbuf); + buffer_array_sep(v,lexbuf); + buffer_space(v,lexbuf); + buffer_json(v,lexbuf); + continue}} + catch(_ig_) + {_ig_ = caml_wrap_exception(_ig_); + if(_ig_ === End_of_array)return 0; + throw _ig_} + case 4:return long_error(cst_Invalid_token$6,v,lexbuf); + case 5:return long_error(cst_Invalid_token$7,v,lexbuf); + case 6: + add_lexeme(v[1],lexbuf); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return buffer_json$2(counter$0,v,lexbuf)} + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + case 7: + caml_call2(Bi_outbuf[13],v[1],cst$22); + finish_buffer_comment(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return buffer_json$2(counter$1,v,lexbuf)} + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + case 8: + caml_call2(Bi_outbuf[15],v[1],10); + newline(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return buffer_json$2(counter$2,v,lexbuf)} + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + case 9: + add_lexeme(v[1],lexbuf); + if(counter < 50) + {var counter$3=counter + 1 | 0; + return buffer_json$2(counter$3,v,lexbuf)} + return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); + case 10: + return custom_error(cst_Unexpected_end_of_input$38,v,lexbuf); + default:return long_error(cst_Invalid_token$8,v,lexbuf)}}} + function buffer_json(v,lexbuf) + {return caml_trampoline(buffer_json$2(0,v,lexbuf))} + function junk(lexbuf) + {var ocaml_lex_state=513; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return caml_call1(lexeme,lexbuf); + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + read_junk[1] = junk; + function read_int8(v,lexbuf) + {var n=read_int(v,lexbuf); + if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); + return lexer_error(cst_Int8_overflow,v,lexbuf)} + function read_list(read_cell,v,lexbuf) + {var _if_=read_list_rev(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_if_)} + function read_array(read_cell,v,lexbuf) + {var l=read_list_rev(read_cell,v,lexbuf); + if(l) + {var + tl=l[2], + x=l[1], + len=caml_call1(Stdlib_List[1],l), + a=caml_make_vect(len,x), + r=[0,tl], + _ic_=len - 2 | 0; + if(! (_ic_ < 0)) + {var i=_ic_; + for(;;) + {var _id_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _id_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _ie_=i - 1 | 0; + if(0 !== i){var i=_ie_;continue} + break}} + return a} + return [0]} + function read_fields(read_field,init_acc,v) + {return function(_ib_) + {return read_abstract_fields(read_ident,read_field,init_acc,v,_ib_)}} + function from_lexbuf(v,opt,lexbuf) + {if(opt)var sth=opt[1],stream=sth;else var stream=0; + read_space(v,lexbuf); + if(read_eof(lexbuf))throw End_of_input; + var x=read_json(v,lexbuf); + if(1 - stream) + {read_space(v,lexbuf); + if(1 - read_eof(lexbuf)) + long_error(cst_Junk_after_end_of_JSON_val,v,lexbuf)} + return x} + function from_string$0(buf,fname,lnum,s) + {try + {var + lexbuf=caml_call2(from_string,0,s), + v=init_lexer(buf,fname,lnum,0), + _h$_=from_lexbuf(v,0,lexbuf); + return _h$_} + catch(_ia_) + {_ia_ = caml_wrap_exception(_ia_); + if(_ia_ === End_of_input)return json_error(cst_Blank_input_data); + throw _ia_}} + function from_channel$0(buf,fname,lnum,ic) + {try + {var + lexbuf=caml_call2(from_channel,0,ic), + v=init_lexer(buf,fname,lnum,0), + _h9_=from_lexbuf(v,0,lexbuf); + return _h9_} + catch(_h__) + {_h__ = caml_wrap_exception(_h__); + if(_h__ === End_of_input)return json_error(cst_Blank_input_data$0); + throw _h__}} + function from_file(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + try + {var x=from_channel$0(buf,fname,lnum,ic); + caml_call1(Stdlib[93],ic); + return x} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} + var Finally=[248,cst_Yojson_Basic_Finally,caml_fresh_oo_id(0)]; + function stream_from_lexbuf(v,opt,lexbuf) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + function f(i) + {try + {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_} + catch(e) + {e = caml_wrap_exception(e); + if(e === End_of_input){caml_call1(fin,0);return 0} + try + {caml_call1(fin,0)} + catch(fin_e) + {fin_e = caml_wrap_exception(fin_e);throw [0,Finally,e,fin_e]} + throw e}} + return caml_call1(Stdlib_Stream[3],f)} + function stream_from_string(buf,fname,lnum,s) + {var v=init_lexer(buf,fname,lnum,0); + return stream_from_lexbuf(v,0,caml_call2(from_string,0,s))} + function stream_from_channel(buf,fin,fname,lnum,ic) + {var lexbuf=caml_call2(from_channel,0,ic),v=init_lexer(buf,fname,lnum,0); + return stream_from_lexbuf(v,fin,lexbuf)} + function stream_from_file(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + function fin(param){return caml_call1(Stdlib[93],ic)} + var + fname$0=fname || [0,file], + lexbuf=caml_call2(from_channel,0,ic), + v=init_lexer(buf,fname$0,lnum,0); + return stream_from_lexbuf(v,[0,fin],lexbuf)} + function linestream_from_channel(buf,opt,fname,_h6_,ic) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + if(_h6_)var sth$0=_h6_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; + function f(i) + {try + {var + line=caml_call1(Stdlib[83],ic), + lnum=lnum0 + i | 0, + _h7_=[0,[0,826371656,from_string$0(buf$0,fname,[0,lnum],line)]]; + return _h7_} + catch(e) + {e = caml_wrap_exception(e); + return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} + return caml_call1(Stdlib_Stream[3],f)} + function linestream_from_file(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + function fin(param){return caml_call1(Stdlib[93],ic)} + var fname$0=fname || [0,file]; + return linestream_from_channel(buf,[0,fin],fname$0,lnum,ic)} + function prettify(std,s) + {return pretty_to_string$0(std,from_string$0(0,0,0,s))} + function compact(std,s){return to_string$1(0,0,0,from_string$0(0,0,0,s))} + function validate_json(path,value){return 0} + var Type_error=[248,cst_Yojson_Basic_Util_Type_err,caml_fresh_oo_id(0)]; + function typerr(msg,js) + {if(typeof js === "number") + var _h5_=cst_null$2; + else + var + _h4_=js[1], + _h5_= + 708012133 <= _h4_ + ?726928360 === _h4_ + ?cst_tuple + :848054398 <= _h4_ + ?963043957 <= _h4_?cst_object:cst_array + :737456202 <= _h4_?cst_bool:cst_variant + :3654863 <= _h4_ + ?365180284 <= _h4_?cst_float:cst_int + :-752863768 <= _h4_?cst_intlit:cst_string; + throw [0,Type_error,caml_call2(Stdlib[28],msg,_h5_),js]} + var Undefined=[248,cst_Yojson_Basic_Util_Undefine,caml_fresh_oo_id(0)]; + function symbol(_h3_,_h2_){return caml_call1(_h2_,_h3_)} + function assoc(name,obj) + {try + {var _h0_=caml_call2(Stdlib_List[46],name,obj);return _h0_} + catch(_h1_) + {_h1_ = caml_wrap_exception(_h1_); + if(_h1_ === Stdlib[8])return 870828711; + throw _h1_}} + function member(name,js) + {if(typeof js !== "number" && 963043957 === js[1]) + {var obj=js[2];return assoc(name,obj)} + var _hZ_=caml_call2(Stdlib[28],name,cst_of_non_object_type); + return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_hZ_),js)} + function index(i,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var + l=js[2], + len=caml_call1(Stdlib_List[1],l), + wrapped_index=0 <= i?i:len + i | 0; + if(0 <= wrapped_index && ! (len <= wrapped_index)) + return caml_call2(Stdlib_List[7],l,wrapped_index); + var + _hX_=caml_call1(Stdlib[33],i), + _hY_=caml_call2(Stdlib[28],_hX_,cst_out_of_bounds); + throw [0,Undefined,caml_call2(Stdlib[28],cst_Index,_hY_),js]} + var + _hV_=caml_call1(Stdlib[33],i), + _hW_=caml_call2(Stdlib[28],_hV_,cst_of_non_array_type); + return typerr(caml_call2(Stdlib[28],cst_Can_t_get_index,_hW_),js)} + function map(f,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]} + return typerr(cst_Can_t_map_function_over_no,js)} + function to_assoc(js) + {if(typeof js !== "number" && 963043957 === js[1]) + {var obj=js[2];return obj} + return typerr(cst_Expected_object_got,js)} + function to_option(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]} + function to_bool(js) + {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b} + return typerr(cst_Expected_bool_got,js)} + function to_bool_option(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(737456202 === js[1]){var b=js[2];return [0,b]} + return typerr(cst_Expected_bool_or_null_got,js)} + function to_number(js) + {if(typeof js !== "number") + {var _hU_=js[1]; + if(3654863 === _hU_){var i=js[2];return i} + if(365180284 === _hU_){var f=js[2];return f}} + return typerr(cst_Expected_number_got,js)} + function to_number_option(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + {var _hT_=js[1]; + if(3654863 === _hT_){var i=js[2];return [0,i]} + if(365180284 === _hT_){var f=js[2];return [0,f]}} + return typerr(cst_Expected_number_or_null_go,js)} + function to_float(js) + {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f} + return typerr(cst_Expected_float_got,js)} + function to_float_option(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(365180284 === js[1]){var f=js[2];return [0,f]} + return typerr(cst_Expected_float_or_null_got,js)} + function to_int(js) + {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i} + return typerr(cst_Expected_int_got,js)} + function to_int_option(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(3654863 === js[1]){var i=js[2];return [0,i]} + return typerr(cst_Expected_int_or_null_got,js)} + function to_list(js) + {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l} + return typerr(cst_Expected_array_got,js)} + function to_string$2(js) + {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s} + return typerr(cst_Expected_string_got,js)} + function to_string_option(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(-976970511 === js[1]){var s=js[2];return [0,s]} + return typerr(cst_Expected_string_or_null_go,js)} + function convert_each(f,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var l=js[2];return caml_call2(Stdlib_List[19],f,l)} + return typerr(cst_Can_t_convert_each_element,js)} + function filter_map(f,l$0) + {var acc=0,l=l$0; + for(;;) + {if(l) + {var tl=l[2],x=l[1],match=caml_call1(f,x); + if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue} + var l=tl; + continue} + return caml_call1(Stdlib_List[9],acc)}} + function flatten(l$0) + {var acc=0,l=l$0; + for(;;) + {if(l) + {var tl=l[2],x=l[1]; + if(typeof x !== "number" && 848054398 === x[1]) + {var + l2=x[2], + acc$0=caml_call2(Stdlib_List[12],l2,acc), + acc=acc$0, + l=tl; + continue} + var l=tl; + continue} + return caml_call1(Stdlib_List[9],acc)}} + function filter_index(i,l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 848054398 === param[1]) + {var l=param[2]; + try + {var _hR_=[0,caml_call2(Stdlib_List[7],l,i)];return _hR_} + catch(_hS_){return 0}} + return 0}, + l)} + function filter_list(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 848054398 === param[1]) + {var l=param[2];return [0,l]} + return 0}, + l)} + function filter_member(k,l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 963043957 === param[1]) + {var l=param[2]; + try + {var _hP_=[0,caml_call2(Stdlib_List[46],k,l)];return _hP_} + catch(_hQ_){return 0}} + return 0}, + l)} + function filter_assoc(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 963043957 === param[1]) + {var l=param[2];return [0,l]} + return 0}, + l)} + function filter_bool(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 737456202 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_int(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 3654863 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_float(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && 365180284 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_number(l) + {return filter_map + (function(param) + {if(typeof param !== "number") + {var _hO_=param[1]; + if(3654863 === _hO_){var x=param[2];return [0,x]} + if(365180284 === _hO_){var x$0=param[2];return [0,x$0]}} + return 0}, + l)} + function filter_string(l) + {return filter_map + (function(param) + {if(typeof param !== "number" && -976970511 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function keys(o) + {function _hM_(param){var key=param[1];return key} + var _hN_=caml_call1(Stdlib_List[19],_hM_); + return symbol(to_assoc(o),_hN_)} + function values(o) + {function _hK_(param){var value=param[2];return value} + var _hL_=caml_call1(Stdlib_List[19],_hK_); + return symbol(to_assoc(o),_hL_)} + function combine(first,second) + {if + (typeof first + !== + "number" + && + 963043957 + === + first[1] + && + typeof second + !== + "number" + && + 963043957 + === + second[1]) + {var b=second[2],a=first[2]; + return [0,963043957,caml_call2(Stdlib[37],a,b)]} + throw [0,Stdlib[6],cst_Expected_two_objects_check]} + function to_basic(x) + {if(typeof x !== "number") + {var _hD_=x[1]; + if(726928360 <= _hD_) + {if(737456202 !== _hD_) + {if(963043957 <= _hD_) + {var + l=x[2], + _hE_= + function(param) + {var v=param[2],k=param[1];return [0,k,to_basic(v)]}, + _hF_=caml_call2(Stdlib_List[21],_hE_,l); + return [0,963043957,caml_call1(Stdlib_List[9],_hF_)]} + var l$0=x[2],_hG_=caml_call2(Stdlib_List[21],to_basic,l$0); + return [0,848054398,caml_call1(Stdlib_List[9],_hG_)]}} + else + {if(-752863768 === _hD_){var s=x[2];return [0,-976970511,s]} + if(708012133 <= _hD_) + {var _hH_=x[2],_hI_=_hH_[2],_hJ_=_hH_[1]; + if(_hI_) + {var v=_hI_[1]; + return [0,848054398,[0,[0,-976970511,_hJ_],[0,to_basic(v),0]]]} + return [0,-976970511,_hJ_]}}} + return x} + function hex$2(n) + {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_hC_)} + function write_special$1(src,start,stop,ob,str) + {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); + caml_call2(Bi_outbuf[13],ob,str); + start[1] = stop + 1 | 0; + return 0} + function finish_string$2(src,start,ob) + {try + {var + _hB_= + caml_call4 + (Bi_outbuf[14], + ob, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + return _hB_} + catch(exc) + {exc = caml_wrap_exception(exc); + caml_call4 + (Stdlib_Printf[3], + _bC_, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + throw exc}} + function write_string$1(ob,s) + {caml_call2(Bi_outbuf[15],ob,34); + var start=[0,0],_hz_=caml_ml_string_length(s) - 1 | 0,_hy_=0; + if(! (_hz_ < 0)) + {var i$0=_hy_; + for(;;) + {var c=caml_string_get(s,i$0); + if(92 === c) + write_special$1(s,start,i$0,ob,cst$25); + else + {var switch$0=0; + if(35 <= c) + if(127 === c)switch$0 = 1;else switch$0 = 2; + else + if(8 <= c) + {var switch$1=0; + switch(c - 8 | 0) + {case 0:write_special$1(s,start,i$0,ob,cst_b$1);break; + case 1:write_special$1(s,start,i$0,ob,cst_t$1);break; + case 2:write_special$1(s,start,i$0,ob,cst_n$1);break; + case 4:write_special$1(s,start,i$0,ob,cst_f$1);break; + case 5:write_special$1(s,start,i$0,ob,cst_r$1);break; + case 26:write_special$1(s,start,i$0,ob,cst$26);break; + case 24: + case 25:switch$0 = 2;switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1}} + else + switch$0 = 1; + switch(switch$0) + {case 2:break; + case 1: + caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); + var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; + caml_call5(Stdlib_Bytes[12],cst_u00$1,0,dst,i,4); + caml_bytes_set(dst,i + 4 | 0,hex$2(c >>> 4 | 0)); + caml_bytes_set(dst,i + 5 | 0,hex$2(c & 15)); + start[1] = i$0 + 1 | 0; + break + }} + var _hA_=i$0 + 1 | 0; + if(_hz_ !== i$0){var i$0=_hA_;continue} + break}} + finish_string$2(s,start,ob); + return caml_call2(Bi_outbuf[15],ob,34)} + function write_null$1(ob,param) + {return caml_call2(Bi_outbuf[13],ob,cst_null$3)} + function write_bool$1(ob,x) + {var _hx_=x?cst_true$2:cst_false$2; + return caml_call2(Bi_outbuf[13],ob,_hx_)} + var + _bD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _bE_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), + max_digits$1=caml_call2(Stdlib[17],_bE_,_bD_); + function write_digits$1(s,pos,x) + {if(0 === x)return pos; + var + d=x % 10 | 0, + pos$0=write_digits$1(s,pos,x / 10 | 0), + n=caml_call1(Stdlib[18],d); + caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); + return pos$0 + 1 | 0} + function write_int$1(ob,x) + {caml_call2(Bi_outbuf[9],ob,max_digits$1); + if(0 < x){ob[3] = write_digits$1(ob[1],ob[3],x);return 0} + if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); + var s=ob[1],pos=ob[3]; + caml_bytes_set(s,pos,45); + ob[3] = write_digits$1(s,pos + 1 | 0,x); + return 0} + function float_needs_period$1(s) + {try + {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0; + if(! (_ht_ < 0)) + {var i=_hs_; + for(;;) + {var match=caml_string_get(s,i),switch$0=0; + if(48 <= match) + {if(! (58 <= match))switch$0 = 1} + else + if(45 === match)switch$0 = 1; + if(! switch$0)throw Stdlib[3]; + var _hv_=i + 1 | 0; + if(_ht_ !== i){var i=_hv_;continue} + break}} + var _hu_=1; + return _hu_} + catch(_hw_) + {_hw_ = caml_wrap_exception(_hw_); + if(_hw_ === Stdlib[3])return 0; + throw _hw_}} + function write_float_fast$1(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _hq_=0. < x?cst_Infinity$13:cst_Infinity$14; + return caml_call2(Bi_outbuf[13],ob,_hq_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$6); + var s=caml_call2(Stdlib_Printf[4],_bF_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _hr_=float_needs_period$1(s); + return _hr_?caml_call2(Bi_outbuf[13],ob,cst_0$9):_hr_} + function write_float$1(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _ho_=0. < x?cst_Infinity$15:cst_Infinity$16; + return caml_call2(Bi_outbuf[13],ob,_ho_)} + if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$7); + var + s1=caml_call2(Stdlib_Printf[4],_bG_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_bH_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _hp_=float_needs_period$1(s); + return _hp_?caml_call2(Bi_outbuf[13],ob,cst_0$10):_hp_} + function write_normal_float_prec$1(significant_figures,ob,x) + {var switcher=significant_figures - 1 | 0; + if(15 < switcher >>> 0) + var s=caml_call2(Stdlib_Printf[4],_bI_,x); + else + switch(switcher) + {case 0:var s=caml_call2(Stdlib_Printf[4],_bJ_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_bK_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_bL_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_bM_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_bN_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_bO_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_bP_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_bQ_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_bR_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_bS_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_bT_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_bU_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_bV_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_bW_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_bX_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_bY_,x)} + caml_call2(Bi_outbuf[13],ob,s); + var _hn_=float_needs_period$1(s); + return _hn_?caml_call2(Bi_outbuf[13],ob,cst_0$11):_hn_} + function write_float_prec$1(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var _hm_=0. < x?cst_Infinity$17:cst_Infinity$18; + return caml_call2(Bi_outbuf[13],ob,_hm_)} + return 4 <= match + ?caml_call2(Bi_outbuf[13],ob,cst_NaN$8) + :write_normal_float_prec$1(significant_figures,ob,x)} + function write_std_float_fast$1(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _hk_= + 0. < x + ?cst_Infinity_value_not_allowed$11 + :cst_Infinity_value_not_allowed$12; + return json_error(_hk_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$5); + var s=caml_call2(Stdlib_Printf[4],_bZ_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _hl_=float_needs_period$1(s); + return _hl_?caml_call2(Bi_outbuf[13],ob,cst_0$12):_hl_} + function write_std_float$1(ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _hi_= + 0. < x + ?cst_Infinity_value_not_allowed$13 + :cst_Infinity_value_not_allowed$14; + return json_error(_hi_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$6); + var + s1=caml_call2(Stdlib_Printf[4],_b0_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_b1_,x); + caml_call2(Bi_outbuf[13],ob,s); + var _hj_=float_needs_period$1(s); + return _hj_?caml_call2(Bi_outbuf[13],ob,cst_0$13):_hj_} + function write_std_float_prec$1(significant_figures,ob,x) + {var match=caml_classify_float(x); + if(3 === match) + {var + _hh_= + 0. < x + ?cst_Infinity_value_not_allowed$15 + :cst_Infinity_value_not_allowed$16; + return json_error(_hh_)} + return 4 <= match + ?json_error(cst_NaN_value_not_allowed_in_s$7) + :write_normal_float_prec$1(significant_figures,ob,x)} + var write_intlit$0=Bi_outbuf[13]; + function iter2$1(f_elt,f_sep,x,param$0) + {if(param$0) + {var l$0=param$0[2],y$0=param$0[1]; + caml_call2(f_elt,x,y$0); + var param=l$0; + for(;;) + {if(param) + {var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l; + continue} + return 0}} + return 0} + function f_sep$1(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function write_tuple$0(ob,l) + {caml_call2(Bi_outbuf[15],ob,40); + iter2$1(write_t$1,f_sep$1,ob,l); + return caml_call2(Bi_outbuf[15],ob,41)} + function write_list$1(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$1(write_t$1,f_sep$1,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + function write_t$1(ob,x) + {if(typeof x === "number")return write_null$1(ob,0); + var _hg_=x[1]; + if(708012133 <= _hg_) + {if(726928360 === _hg_){var l=x[2];return write_tuple$0(ob,l)} + if(848054398 <= _hg_) + {if(963043957 <= _hg_){var l$0=x[2];return write_assoc$1(ob,l$0)} + var l$1=x[2]; + return write_list$1(ob,l$1)} + if(737456202 <= _hg_){var b=x[2];return write_bool$1(ob,b)} + var match=x[2],o=match[2],s=match[1]; + return write_variant$0(ob,s,o)} + if(3654863 <= _hg_) + {if(365180284 <= _hg_){var f=x[2];return write_float$1(ob,f)} + var i=x[2]; + return write_int$1(ob,i)} + if(-752863768 <= _hg_) + {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)} + var s$1=x[2]; + return write_string$1(ob,s$1)} + function write_assoc$1(ob,l) + {function f_elt(ob,param) + {var x=param[2],s=param[1]; + write_string$1(ob,s); + caml_call2(Bi_outbuf[15],ob,58); + return write_t$1(ob,x)} + caml_call2(Bi_outbuf[15],ob,123); + iter2$1(f_elt,f_sep$1,ob,l); + return caml_call2(Bi_outbuf[15],ob,125)} + function write_variant$0(ob,s,o) + {caml_call2(Bi_outbuf[15],ob,60); + write_string$1(ob,s); + if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$1(ob,x)} + return caml_call2(Bi_outbuf[15],ob,62)} + function write_std_tuple$0(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$1(write_std_json$1,f_sep$1,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + function write_std_json$1(ob,x) + {if(typeof x === "number")return write_null$1(ob,0); + var _hf_=x[1]; + if(708012133 <= _hf_) + {if(726928360 === _hf_){var l=x[2];return write_std_tuple$0(ob,l)} + if(848054398 <= _hf_) + {if(963043957 <= _hf_) + {var + l$0=x[2], + f_elt= + function(ob,param) + {var x=param[2],s=param[1]; + write_string$1(ob,s); + caml_call2(Bi_outbuf[15],ob,58); + return write_std_json$1(ob,x)}; + caml_call2(Bi_outbuf[15],ob,123); + iter2$1(f_elt,f_sep$1,ob,l$0); + return caml_call2(Bi_outbuf[15],ob,125)} + var l$1=x[2]; + caml_call2(Bi_outbuf[15],ob,91); + iter2$1(write_std_json$1,f_sep$1,ob,l$1); + return caml_call2(Bi_outbuf[15],ob,93)} + if(737456202 <= _hf_){var b=x[2];return write_bool$1(ob,b)} + var match=x[2],o=match[2],s=match[1]; + return write_std_variant$0(ob,s,o)} + if(3654863 <= _hf_) + {if(365180284 <= _hf_){var f=x[2];return write_std_float$1(ob,f)} + var i=x[2]; + return write_int$1(ob,i)} + if(-752863768 <= _hf_) + {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)} + var s$1=x[2]; + return write_string$1(ob,s$1)} + function write_std_variant$0(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Bi_outbuf[15],ob,91); + write_string$1(ob,s); + caml_call2(Bi_outbuf[15],ob,44); + write_std_json$1(ob,x); + return caml_call2(Bi_outbuf[15],ob,93)} + return write_string$1(ob,s)} + function to_outbuf$1(opt,ob,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + return std + ?is_object_or_array(x) + ?write_std_json$1(ob,x) + :json_error(cst_Root_is_not_an_object_or_a$2) + :write_t$1(ob,x)} + function to_string$3(buf,opt,std,x) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + else + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + to_outbuf$1(std,ob$0,x); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); + return s} + function to_channel$2(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + to_outbuf$1(std,ob$0,x); + return caml_call1(Bi_outbuf[6],ob$0)} + function to_output$1(buf,len,std,out,x) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[7],len,0,out); + to_outbuf$1(std,ob$0,x); + return caml_call1(Bi_outbuf[8],ob$0)} + function to_file$1(len,std,file,x) + {var oc=caml_call1(Stdlib[60],file); + try + {to_channel$2(0,len,std,oc,x); + var _he_=caml_call1(Stdlib[76],oc); + return _he_} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} + function stream_to_outbuf$1(std,ob,st) + {function _hc_(_hd_){return to_outbuf$1(std,ob,_hd_)} + return caml_call2(Stdlib_Stream[8],_hc_,st)} + function stream_to_string$1(buf,opt,std,st) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + else + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + stream_to_outbuf$1(std,ob$0,st); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); + return s} + function stream_to_channel$1(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + stream_to_outbuf$1(std,ob$0,st); + return caml_call1(Bi_outbuf[6],ob$0)} + function stream_to_file$1(len,std,file,st) + {var oc=caml_call1(Stdlib[60],file); + try + {stream_to_channel$1(0,len,std,oc,st); + var _hb_=caml_call1(Stdlib[76],oc); + return _hb_} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} + function sort$1(x) + {if(typeof x !== "number") + {var _g4_=x[1]; + if(726928361 <= _g4_) + {if(848054398 === _g4_) + {var l=x[2],_g5_=caml_call2(Stdlib_List[21],sort$1,l); + return [0,848054398,caml_call1(Stdlib_List[9],_g5_)]} + if(963043957 === _g4_) + {var + l$0=x[2], + _g6_= + function(param) + {var v=param[2],k=param[1];return [0,k,sort$1(v)]}, + _g7_=caml_call2(Stdlib_List[21],_g6_,l$0), + l$1=caml_call1(Stdlib_List[9],_g7_), + _g8_= + function(param,_ha_) + {var b=_ha_[1],a=param[1]; + return caml_call2(Stdlib_String[9],a,b)}; + return [0,963043957,caml_call2(Stdlib_List[57],_g8_,l$1)]}} + else + if(708012133 === _g4_) + {var _g9_=x[2],_g__=_g9_[2]; + if(_g__) + {var v=_g__[1],k=_g9_[1],v$0=sort$1(v); + return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} + else + if(726928360 <= _g4_) + {var l$2=x[2],_g$_=caml_call2(Stdlib_List[21],sort$1,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_g$_)]}} + return x} + function pp$1(fmt,param) + {if(typeof param === "number") + return caml_call2(Stdlib_Format[13],fmt,cst_Null$1); + var _gX_=param[1]; + if(708012133 <= _gX_) + {if(726928360 === _gX_) + {var tup=param[2]; + caml_call2(Stdlib_Format[129],fmt,_b2_); + caml_call2(Stdlib_Format[129],fmt,_b3_); + var + _gY_=0, + _gZ_= + function(sep,e) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_b4_); + pp$1(fmt,e); + return 1}; + caml_call3(Stdlib_List[25],_gZ_,_gY_,tup); + caml_call2(Stdlib_Format[129],fmt,_b5_); + return caml_call2(Stdlib_Format[129],fmt,_b6_)} + if(848054398 <= _gX_) + {if(963043957 <= _gX_) + {var xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_b7_); + caml_call2(Stdlib_Format[129],fmt,_b8_); + var + _g0_=0, + _g1_= + function(sep,param) + {var value=param[2],key=param[1]; + if(sep)caml_call2(Stdlib_Format[129],fmt,_b9_); + caml_call2(Stdlib_Format[129],fmt,_b__); + caml_call3(Stdlib_Format[129],fmt,_b$_,key); + caml_call2(Stdlib_Format[129],fmt,_ca_); + pp$1(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_cb_); + return 1}; + caml_call3(Stdlib_List[25],_g1_,_g0_,xs); + caml_call2(Stdlib_Format[129],fmt,_cc_); + return caml_call2(Stdlib_Format[129],fmt,_cd_)} + var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_ce_); + caml_call2(Stdlib_Format[129],fmt,_cf_); + var + _g2_=0, + _g3_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_cg_); + pp$1(fmt,x); + return 1}; + caml_call3(Stdlib_List[25],_g3_,_g2_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_ch_); + return caml_call2(Stdlib_Format[129],fmt,_ci_)} + if(737456202 <= _gX_) + {var x=param[2]; + caml_call2(Stdlib_Format[129],fmt,_cj_); + caml_call3(Stdlib_Format[129],fmt,_ck_,x); + return caml_call2(Stdlib_Format[129],fmt,_cl_)} + var match=param[2],value=match[2],name=match[1]; + caml_call2(Stdlib_Format[129],fmt,_cm_); + caml_call2(Stdlib_Format[129],fmt,_cn_); + caml_call3(Stdlib_Format[129],fmt,_co_,name); + caml_call2(Stdlib_Format[129],fmt,_cp_); + if(value) + {var x$0=value[1]; + caml_call2(Stdlib_Format[13],fmt,cst_Some$0); + pp$1(fmt,x$0); + caml_call2(Stdlib_Format[13],fmt,cst$27)} + else + caml_call2(Stdlib_Format[13],fmt,cst_None$0); + caml_call2(Stdlib_Format[129],fmt,_cq_); + return caml_call2(Stdlib_Format[129],fmt,_cr_)} + if(3654863 <= _gX_) + {if(365180284 <= _gX_) + {var x$1=param[2]; + caml_call2(Stdlib_Format[129],fmt,_cs_); + caml_call3(Stdlib_Format[129],fmt,_ct_,x$1); + return caml_call2(Stdlib_Format[129],fmt,_cu_)} + var x$2=param[2]; + caml_call2(Stdlib_Format[129],fmt,_cv_); + caml_call3(Stdlib_Format[129],fmt,_cw_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_cx_)} + if(-752863768 <= _gX_) + {var x$3=param[2]; + caml_call2(Stdlib_Format[129],fmt,_cy_); + caml_call3(Stdlib_Format[129],fmt,_cz_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_cA_)} + var x$4=param[2]; + caml_call2(Stdlib_Format[129],fmt,_cB_); + caml_call3(Stdlib_Format[129],fmt,_cC_,x$4); + return caml_call2(Stdlib_Format[129],fmt,_cD_)} + function show$1(x){return caml_call3(Stdlib_Format[133],_cE_,pp$1,x)} + function equal$1(a,b) + {var a$0=a,b$0=b; + for(;;) + {if(typeof a$0 === "number") + {if(870828711 === a$0 && 870828711 === b$0)return 1} + else + {var _gQ_=a$0[1]; + if(708012133 <= _gQ_) + {var switch$0=0; + if(737456203 <= _gQ_) + {if(848054398 === _gQ_) + {if(typeof b$0 !== "number" && 848054398 === b$0[1]) + {var ys=b$0[2],xs=a$0[2];switch$0 = 1}} + else + if + (963043957 + === + _gQ_ + && + typeof b$0 + !== + "number" + && + 963043957 + === + b$0[1]) + {var + ys$0=b$0[2], + xs$0=a$0[2], + compare_keys= + function(param,_gW_) + {var key=_gW_[1],key$0=param[1]; + return caml_call2(Stdlib_String[9],key$0,key)}, + xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0), + ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0); + try + {var + _gR_= + function(param,_gV_) + {var + value=_gV_[2], + key=_gV_[1], + value$0=param[2], + key$0=param[1], + match=caml_string_equal(key$0,key); + return match?equal$1(value$0,value):0}, + result$0=caml_call3(Stdlib_List[34],_gR_,xs$1,ys$1); + return result$0} + catch(_gU_) + {_gU_ = caml_wrap_exception(_gU_); + if(_gU_[1] === Stdlib[6])return 0; + throw _gU_}}} + else + if(726928360 === _gQ_) + {if(typeof b$0 !== "number" && 726928360 === b$0[1]) + {var ys=b$0[2],xs=a$0[2];switch$0 = 1}} + else + if(708012134 <= _gQ_) + {if + (737456202 + <= + _gQ_ + && + typeof b$0 + !== + "number" + && + 737456202 + === + b$0[1]) + {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} + else + if(typeof b$0 !== "number" && 708012133 === b$0[1]) + {var + _gS_=b$0[2], + value=_gS_[2], + name=_gS_[1], + match=a$0[2], + value$0=match[2], + name$0=match[1], + match$0=caml_equal(name$0,name); + if(match$0) + {if(value$0) + {if(value) + {var b$2=value[1],a$2=value$0[1],a$0=a$2,b$0=b$2;continue}} + else + if(! value)return 1; + return 0} + return 0} + if(switch$0) + try + {var result=caml_call3(Stdlib_List[34],equal$1,xs,ys); + return result} + catch(_gT_) + {_gT_ = caml_wrap_exception(_gT_); + if(_gT_[1] === Stdlib[6])return 0; + throw _gT_}} + else + if(-752863767 <= _gQ_) + {if(3654863 === _gQ_) + {if(typeof b$0 !== "number" && 3654863 === b$0[1]) + {var b$3=b$0[2],a$3=a$0[2];return caml_equal(a$3,b$3)}} + else + if + (365180284 + === + _gQ_ + && + typeof b$0 + !== + "number" + && + 365180284 + === + b$0[1]) + {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} + else + if(-976970511 === _gQ_) + {if(typeof b$0 !== "number" && -976970511 === b$0[1]) + {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}} + else + if + (-752863768 + <= + _gQ_ + && + typeof b$0 + !== + "number" + && + -752863768 + === + b$0[1]) + {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}} + return 0}} + function pretty_format$1(std,x){return format(std,x)} + function pretty_print$1(std,out,x) + {var _gP_=pretty_format$1(std,x); + return caml_call2(Easy_format[4][2],out,_gP_)} + function pretty_to_string$1(std,x){return to_string$0(std,x)} + function pretty_to_channel$1(std,oc,x){return to_channel$0(std,oc,x)} + var + from_channel$1=Stdlib_Lexing[2], + from_string$1=Stdlib_Lexing[3], + lexeme$0=Stdlib_Lexing[8], + sub_lexeme$0=Stdlib_Lexing[16], + sub_lexeme_char$0=Stdlib_Lexing[18]; + function hex$3(c) + {if(65 <= c) + {if(97 <= c) + {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + else + if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + else + if(! (9 < c - 48 >>> 0))return c - 48 | 0; + throw [0,Assert_failure,_cF_]} + function custom_error$0(descr,v,lexbuf) + {var + offs=lexbuf[4] - 1 | 0, + bol=v[3], + pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, + pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), + _gO_=v[4]; + if(_gO_) + var s=_gO_[1],file_line=caml_call2(Stdlib_Printf[4],_cG_,s); + else + var file_line=cst_Line$0; + var + bytes= + pos1 === pos2 + ?caml_call2(Stdlib_Printf[4],_cH_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_cJ_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_cI_,file_line,v[2],bytes,descr); + return json_error(msg)} + function lexer_error$0(descr,v,lexbuf) + {var _gN_=caml_call1(lexeme$0,lexbuf); + return custom_error$0 + (caml_call3(Stdlib_Printf[4],_cK_,descr,_gN_),v,lexbuf)} + var read_junk$0=[0,function(param){throw [0,Assert_failure,_cL_]}]; + function long_error$0(descr,v,lexbuf) + {var + junk=caml_call1(lexeme$0,lexbuf), + extra_junk=caml_call1(read_junk$0[1],lexbuf); + return custom_error$0 + (caml_call4(Stdlib_Printf[4],_cM_,descr,junk,extra_junk), + v, + lexbuf)} + var + _cN_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10$0=(Stdlib[20] / 10 | 0) - _cN_ | 0, + _cO_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10$0=(Stdlib[19] / 10 | 0) + _cO_ | 0, + Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)]; + function extract_positive_int$0(lexbuf) + {var + start=lexbuf[5], + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _gK_=stop - 1 | 0; + if(! (_gK_ < start)) + {var i=start; + for(;;) + {if(max10$0 <= n[1])throw Int_overflow$0; + var _gL_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _gL_ | 0; + var _gM_=i + 1 | 0; + if(_gK_ !== i){var i=_gM_;continue} + break}} + if(0 <= n[1])return n[1]; + throw Int_overflow$0} + function extract_negative_int$0(lexbuf) + {var + start=lexbuf[5] + 1 | 0, + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _gH_=stop - 1 | 0; + if(! (_gH_ < start)) + {var i=start; + for(;;) + {if(n[1] <= min10$0)throw Int_overflow$0; + var _gI_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _gI_ | 0; + var _gJ_=i + 1 | 0; + if(_gH_ !== i){var i=_gJ_;continue} + break}} + if(0 < n[1])throw Int_overflow$0; + return n[1]} + function newline$0(v,lexbuf) + {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} + function add_lexeme$0(buf,lexbuf) + {var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} + function read_colon$0(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$23,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$73,v,lexbuf)}}} + function read_object_sep$0(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error$0(cst_Expected_or_but_found$22,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$72,v,lexbuf)}}} + function read_object_end$0(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_tuple_sep$0(v,lexbuf) + {var ocaml_lex_state=271; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_tuple; + case 2:return long_error$0(cst_Expected_or_but_found$18,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$68,v,lexbuf)}}} + function read_tuple_end$0(lexbuf) + {var ocaml_lex_state=266; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_tuple; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep$0(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error$0(cst_Expected_or_but_found$15,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$66,v,lexbuf)}}} + function read_array_end$0(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function finish_escaped_char$0(v,lexbuf) + {var ocaml_lex_state=68; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(8 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var c=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5]); + return caml_call2(Bi_outbuf[15],v[1],c); + case 1:return caml_call2(Bi_outbuf[15],v[1],8); + case 2:return caml_call2(Bi_outbuf[15],v[1],12); + case 3:return caml_call2(Bi_outbuf[15],v[1],10); + case 4:return caml_call2(Bi_outbuf[15],v[1],13); + case 5:return caml_call2(Bi_outbuf[15],v[1],9); + case 6: + var + a=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 1 | 0), + b=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), + c$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), + d=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), + _gB_=hex$3(d), + _gC_=hex$3(c$0) << 4, + _gD_=hex$3(b) << 8, + x=hex$3(a) << 12 | _gD_ | _gC_ | _gB_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0: + var + a$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), + b$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), + c$1=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), + d$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 5 | 0), + _gE_=hex$3(d$0), + _gF_=hex$3(c$1) << 4, + _gG_=hex$3(b$0) << 8, + y=hex$3(a$0) << 12 | _gG_ | _gF_ | _gE_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error$0 + (cst_Invalid_low_surrogate_for_$0,v,lexbuf); + case 1: + return long_error$0 + (cst_Missing_escape_sequence_re$0,v,lexbuf); + default: + return custom_error$0 + (cst_Unexpected_end_of_input$48,v,lexbuf)}}} + return utf8_of_code(v[1],x); + case 7:return long_error$0(cst_Invalid_escape_sequence$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$47,v,lexbuf)}}} + function finish_string$3(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Bi_outbuf[4],v[1]); + case 1:finish_escaped_char$0(v,lexbuf);continue a; + case 2:add_lexeme$0(v[1],lexbuf);continue a; + default: + return custom_error$0(cst_Unexpected_end_of_input$45,v,lexbuf)}}}} + function read_ident$0(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme$0,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2: + return long_error$0(cst_Expected_string_or_identif$3,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$62,v,lexbuf)}}} + function finish_comment$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Unterminated_comment$1,v,lexbuf); + case 2:newline$0(v,lexbuf);continue a; + default:continue a}}}} + function read_space$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline$0(v,lexbuf);continue a; + case 1:finish_comment$0(v,lexbuf);continue a; + case 2:newline$0(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} + function read_gt$0(v,lexbuf) + {var ocaml_lex_state=111; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$15,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$52,v,lexbuf)}}} + function read_json$3(counter,v,lexbuf) + {var _gA_=0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_gA_)} + return caml_trampoline_return + (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_gA_])} + function ocaml_lex_read_json_rec$0(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(19 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return _cP_; + case 1:return _cQ_; + case 2:return 870828711; + case 3:return [0,365180284,Stdlib[24]]; + case 4:return [0,365180284,Stdlib[22]]; + case 5:return [0,365180284,Stdlib[23]]; + case 6: + caml_call1(Bi_outbuf[19],v[1]); + return [0,-976970511,finish_string$3(v,lexbuf)]; + case 7: + try + {var _gn_=[0,3654863,extract_positive_int$0(lexbuf)];return _gn_} + catch(_gz_) + {_gz_ = caml_wrap_exception(_gz_); + if(_gz_ === Int_overflow$0) + return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; + throw _gz_} + case 8: + try + {var _go_=[0,3654863,extract_negative_int$0(lexbuf)];return _go_} + catch(_gy_) + {_gy_ = caml_wrap_exception(_gy_); + if(_gy_ === Int_overflow$0) + return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; + throw _gy_} + case 9: + return [0, + 365180284, + caml_float_of_string(caml_call1(lexeme$0,lexbuf))]; + case 10: + var acc=[0,0]; + try + {read_space$0(v,lexbuf); + read_object_end$0(lexbuf); + var field_name=read_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + read_space$0(v,lexbuf); + var _gp_=acc[1]; + acc[1] = [0,[0,field_name,read_json$0(v,lexbuf)],_gp_]; + for(;;) + {read_space$0(v,lexbuf); + read_object_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var field_name$0=read_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + read_space$0(v,lexbuf); + var _gq_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json$0(v,lexbuf)],_gq_]; + continue}} + catch(_gx_) + {_gx_ = caml_wrap_exception(_gx_); + if(_gx_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _gx_} + case 11: + var acc$0=[0,0]; + try + {read_space$0(v,lexbuf); + read_array_end$0(lexbuf); + var _gr_=acc$0[1]; + acc$0[1] = [0,read_json$0(v,lexbuf),_gr_]; + for(;;) + {read_space$0(v,lexbuf); + read_array_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var _gs_=acc$0[1]; + acc$0[1] = [0,read_json$0(v,lexbuf),_gs_]; + continue}} + catch(_gw_) + {_gw_ = caml_wrap_exception(_gw_); + if(_gw_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _gw_} + case 12: + var acc$1=[0,0]; + try + {read_space$0(v,lexbuf); + read_tuple_end$0(lexbuf); + var _gt_=acc$1[1]; + acc$1[1] = [0,read_json$0(v,lexbuf),_gt_]; + for(;;) + {read_space$0(v,lexbuf); + read_tuple_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var _gu_=acc$1[1]; + acc$1[1] = [0,read_json$0(v,lexbuf),_gu_]; + continue}} + catch(_gv_) + {_gv_ = caml_wrap_exception(_gv_); + if(_gv_ === End_of_tuple) + return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; + throw _gv_} + case 13: + read_space$0(v,lexbuf); + var cons=read_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + return [0,708012133,[0,cons,finish_variant$0(v,lexbuf)]]; + case 14: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return read_json$3(counter$0,v,lexbuf)} + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + case 15: + finish_comment$0(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return read_json$3(counter$1,v,lexbuf)} + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + case 16: + newline$0(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return read_json$3(counter$2,v,lexbuf)} + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + case 17: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return read_json$3(counter$3,v,lexbuf)} + return caml_trampoline_return(read_json$3,[0,v,lexbuf]); + case 18: + return custom_error$0(cst_Unexpected_end_of_input$44,v,lexbuf); + default:return long_error$0(cst_Invalid_token$9,v,lexbuf)}}} + function finish_variant$0(v,lexbuf) + {var ocaml_lex_state=102; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var x=read_json$0(v,lexbuf); + read_space$0(v,lexbuf); + read_gt$0(v,lexbuf); + return [0,x]; + case 1:return 0; + case 2:return long_error$0(cst_Expected_or_but_found$13,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$50,v,lexbuf)}}} + function read_json$0(v,lexbuf) + {return caml_trampoline(read_json$3(0,v,lexbuf))} + function map_string$0(v,f,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=63; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var b=v[1],_gm_=b[3]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_gm_); + case 1:finish_escaped_char$0(v,lexbuf);continue a; + case 2:add_lexeme$0(v[1],lexbuf);continue a; + default: + return custom_error$0(cst_Unexpected_end_of_input$46,v,lexbuf)}}}} + function finish_stringlit$0(v,lexbuf) + {var ocaml_lex_state=91; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); + caml_bytes_set(s,0,34); + caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); + return caml_call1(Stdlib_Bytes[6],s); + case 1:return long_error$0(cst_Invalid_string_literal$2,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$49,v,lexbuf)}}} + function read_lt$0(v,lexbuf) + {var ocaml_lex_state=107; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$14,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$51,v,lexbuf)}}} + function read_comma$0(v,lexbuf) + {var ocaml_lex_state=115; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$16,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$53,v,lexbuf)}}} + function start_any_variant$0(v,lexbuf) + {var ocaml_lex_state=119; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return -154522342; + case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; + case 2:return -124528282; + case 3:return long_error$0(cst_Expected_or_but_found$14,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$54,v,lexbuf)}}} + function read_eof$0(lexbuf) + {var ocaml_lex_state=131; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_null$0(v,lexbuf) + {var ocaml_lex_state=140; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_null_but_found$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$55,v,lexbuf)}}} + function read_null_if_possible$0(v,lexbuf) + {var ocaml_lex_state=147; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_bool$0(v,lexbuf) + {var ocaml_lex_state=152; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(5 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 1; + case 1:return 0; + case 2:return 1; + case 3:return 0; + case 4: + return long_error$0(cst_Expected_true_or_false_but$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$56,v,lexbuf)}}} + function ocaml_lex_read_int_rec$0(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(4 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _gg_=extract_positive_int$0(lexbuf);return _gg_} + catch(_gl_) + {_gl_ = caml_wrap_exception(_gl_); + if(_gl_ === Int_overflow$0) + return lexer_error$0(cst_Int_overflow$3,v,lexbuf); + throw _gl_} + case 1: + try + {var _gh_=extract_negative_int$0(lexbuf);return _gh_} + catch(_gk_) + {_gk_ = caml_wrap_exception(_gk_); + if(_gk_ === Int_overflow$0) + return lexer_error$0(cst_Int_overflow$4,v,lexbuf); + throw _gk_} + case 2: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$3(v,lexbuf); + try + {var _gi_=caml_int_of_string(s);return _gi_} + catch(_gj_) + {return custom_error$0(cst_Expected_an_integer_but_fo$0,v,lexbuf)} + case 3: + return long_error$0(cst_Expected_integer_but_found$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$57,v,lexbuf)}}} + function read_int$0(v,lexbuf) + {return ocaml_lex_read_int_rec$0(v,lexbuf,176)} + function ocaml_lex_read_int32_rec$0(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(3 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _gc_=caml_int_of_string(caml_call1(lexeme$0,lexbuf)); + return _gc_} + catch(_gf_){return lexer_error$0(cst_Int32_overflow$1,v,lexbuf)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$3(v,lexbuf); + try + {var _gd_=caml_int_of_string(s);return _gd_} + catch(_ge_) + {return custom_error$0(cst_Expected_an_int32_but_foun$0,v,lexbuf)} + case 2:return long_error$0(cst_Expected_int32_but_found$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$58,v,lexbuf)}}} + function read_int32$0(v,lexbuf) + {return ocaml_lex_read_int32_rec$0(v,lexbuf,185)} + function ocaml_lex_read_int64_rec$0(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(3 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _f__=caml_int64_of_string(caml_call1(lexeme$0,lexbuf)); + return _f__} + catch(_gb_){return lexer_error$0(cst_Int32_overflow$2,v,lexbuf)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$3(v,lexbuf); + try + {var _f$_=caml_int64_of_string(s);return _f$_} + catch(_ga_) + {return custom_error$0(cst_Expected_an_int64_but_foun$0,v,lexbuf)} + case 2:return long_error$0(cst_Expected_int64_but_found$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$59,v,lexbuf)}}} + function read_int64$0(v,lexbuf) + {return ocaml_lex_read_int64_rec$0(v,lexbuf,192)} + function ocaml_lex_read_number_rec$0(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(6 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return Stdlib[24]; + case 1:return Stdlib[22]; + case 2:return Stdlib[23]; + case 3:return caml_float_of_string(caml_call1(lexeme$0,lexbuf)); + case 4: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$3(v,lexbuf); + try + {var _f8_=caml_float_of_string(s);return _f8_} + catch(_f9_) + {return caml_string_notequal(s,cst_Infinity$19) + ?caml_string_notequal(s,cst_Infinity$20) + ?caml_string_notequal(s,cst_NaN$9) + ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf) + :Stdlib[24] + :Stdlib[22] + :Stdlib[23]} + case 5: + return long_error$0(cst_Expected_number_but_found$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$60,v,lexbuf)}}} + function read_number$0(v,lexbuf) + {return ocaml_lex_read_number_rec$0(v,lexbuf,199)} + function read_string$0(v,lexbuf) + {var ocaml_lex_state=233; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf); + case 1:return long_error$0(cst_Expected_but_found$17,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$61,v,lexbuf)}}} + function map_ident$0(v,f,lexbuf) + {var ocaml_lex_state=242; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return map_string$0(v,f,lexbuf); + case 1: + var len=lexbuf[6] - lexbuf[5] | 0,_f7_=lexbuf[5]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_f7_,len); + case 2: + return long_error$0(cst_Expected_string_or_identif$4,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$63,v,lexbuf)}}} + function ocaml_lex_read_sequence_rec$0 + (read_cell,init_acc,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,init_acc]; + try + {read_space$0(v,lexbuf); + read_array_end$0(lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_array_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + continue}} + catch(_f6_) + {_f6_ = caml_wrap_exception(_f6_); + if(_f6_ === End_of_array)return acc[1]; + throw _f6_} + case 1:return long_error$0(cst_Expected_but_found$18,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$64,v,lexbuf)}}} + function read_sequence$0(read_cell,init_acc,v,lexbuf) + {return ocaml_lex_read_sequence_rec$0(read_cell,init_acc,v,lexbuf,247)} + function ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,0]; + try + {read_space$0(v,lexbuf); + read_array_end$0(lexbuf); + var _f3_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f3_]; + for(;;) + {read_space$0(v,lexbuf); + read_array_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var _f4_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f4_]; + continue}} + catch(_f5_) + {_f5_ = caml_wrap_exception(_f5_); + if(_f5_ === End_of_array)return acc[1]; + throw _f5_} + case 1:return long_error$0(cst_Expected_but_found$19,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$65,v,lexbuf)}}} + function read_list_rev$0(read_cell,v,lexbuf) + {return ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,251)} + function ocaml_lex_read_tuple_rec + (read_cell,init_acc,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var pos=[0,0],acc=[0,init_acc]; + try + {read_space$0(v,lexbuf); + read_tuple_end$0(lexbuf); + acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); + pos[1]++; + for(;;) + {read_space$0(v,lexbuf); + read_tuple_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); + pos[1]++; + continue}} + catch(_f2_) + {_f2_ = caml_wrap_exception(_f2_); + if(_f2_ === End_of_tuple)return acc[1]; + throw _f2_} + case 1:return long_error$0(cst_Expected_but_found$20,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$67,v,lexbuf)}}} + function read_tuple$0(read_cell,init_acc,v,lexbuf) + {return ocaml_lex_read_tuple_rec(read_cell,init_acc,v,lexbuf,262)} + function read_tuple_end2$0(v,std,lexbuf) + {var ocaml_lex_state=268; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + if(std)return long_error$0(cst_Expected_or_but_found$16,v,lexbuf); + throw End_of_tuple; + case 1: + if(std)throw End_of_tuple; + return long_error$0(cst_Expected_or_but_found$17,v,lexbuf); + default:return 0}}} + function read_tuple_sep2$0(v,std,lexbuf) + {var ocaml_lex_state=276; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1: + if(std)return long_error$0(cst_Expected_or_but_found$19,v,lexbuf); + throw End_of_tuple; + case 2: + if(std)throw End_of_tuple; + return long_error$0(cst_Expected_or_but_found$20,v,lexbuf); + case 3:return long_error$0(cst_Expected_or_but_found$21,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$69,v,lexbuf)}}} + function ocaml_lex_read_abstract_fields$0 + (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,init_acc]; + try + {read_space$0(v,lexbuf); + read_object_end$0(lexbuf); + var field_name=caml_call2(read_key,v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + read_space$0(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_object_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + var field_name$0=caml_call2(read_key,v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + read_space$0(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); + continue}} + catch(_f1_) + {_f1_ = caml_wrap_exception(_f1_); + if(_f1_ === End_of_object)return acc[1]; + throw _f1_} + case 1:return long_error$0(cst_Expected_but_found$21,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$70,v,lexbuf)}}} + function read_abstract_fields$0(read_key,read_field,init_acc,v,lexbuf) + {return ocaml_lex_read_abstract_fields$0 + (read_key,read_field,init_acc,v,lexbuf,282)} + function read_lcurl$0(v,lexbuf) + {var ocaml_lex_state=286; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$22,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$71,v,lexbuf)}}} + function start_any_tuple$0(v,lexbuf) + {var ocaml_lex_state=301; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return 1; + case 2:return long_error$0(cst_Expected_or_but_found$23,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$74,v,lexbuf)}}} + function read_lpar$0(v,lexbuf) + {var ocaml_lex_state=306; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$24,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$75,v,lexbuf)}}} + function read_rpar$0(v,lexbuf) + {var ocaml_lex_state=310; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$25,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$76,v,lexbuf)}}} + function read_lbr$0(v,lexbuf) + {var ocaml_lex_state=314; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$26,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$77,v,lexbuf)}}} + function read_rbr$0(v,lexbuf) + {var ocaml_lex_state=318; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$27,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$78,v,lexbuf)}}} + function finish_skip_stringlit$0(v,lexbuf) + {var ocaml_lex_state=378; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Invalid_string_literal$3,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$80,v,lexbuf)}}} + function skip_ident$0(v,lexbuf) + {var ocaml_lex_state=394; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_skip_stringlit$0(v,lexbuf); + case 1:return 0; + case 2: + return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}} + function skip_json$3(counter,v,lexbuf) + {var _f0_=322; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_f0_)} + return caml_trampoline_return + (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_f0_])} + function ocaml_lex_skip_json_rec$0(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(18 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return 0; + case 1:return 0; + case 2:return 0; + case 3:return 0; + case 4:return 0; + case 5:return 0; + case 6:return finish_skip_stringlit$0(v,lexbuf); + case 7:return 0; + case 8:return 0; + case 9: + try + {read_space$0(v,lexbuf); + read_object_end$0(lexbuf); + skip_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + read_space$0(v,lexbuf); + skip_json$0(v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_object_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + skip_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + read_colon$0(v,lexbuf); + read_space$0(v,lexbuf); + skip_json$0(v,lexbuf); + continue}} + catch(_fZ_) + {_fZ_ = caml_wrap_exception(_fZ_); + if(_fZ_ === End_of_object)return 0; + throw _fZ_} + case 10: + try + {read_space$0(v,lexbuf); + read_array_end$0(lexbuf); + skip_json$0(v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_array_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + skip_json$0(v,lexbuf); + continue}} + catch(_fY_) + {_fY_ = caml_wrap_exception(_fY_); + if(_fY_ === End_of_array)return 0; + throw _fY_} + case 11: + try + {read_space$0(v,lexbuf); + read_tuple_end$0(lexbuf); + skip_json$0(v,lexbuf); + for(;;) + {read_space$0(v,lexbuf); + read_tuple_sep$0(v,lexbuf); + read_space$0(v,lexbuf); + skip_json$0(v,lexbuf); + continue}} + catch(_fX_) + {_fX_ = caml_wrap_exception(_fX_); + if(_fX_ === End_of_tuple)return 0; + throw _fX_} + case 12: + read_space$0(v,lexbuf); + skip_ident$0(v,lexbuf); + read_space$0(v,lexbuf); + return finish_skip_variant$0(v,lexbuf); + case 13: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return skip_json$3(counter$0,v,lexbuf)} + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + case 14: + finish_comment$0(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return skip_json$3(counter$1,v,lexbuf)} + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + case 15: + newline$0(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return skip_json$3(counter$2,v,lexbuf)} + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + case 16: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return skip_json$3(counter$3,v,lexbuf)} + return caml_trampoline_return(skip_json$3,[0,v,lexbuf]); + case 17: + return custom_error$0(cst_Unexpected_end_of_input$79,v,lexbuf); + default:return long_error$0(cst_Invalid_token$10,v,lexbuf)}}} + function skip_json$0(v,lexbuf) + {return caml_trampoline(skip_json$3(0,v,lexbuf))} + function finish_skip_variant$0(v,lexbuf) + {var ocaml_lex_state=389; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + skip_json$0(v,lexbuf); + read_space$0(v,lexbuf); + return read_gt$0(v,lexbuf); + case 1:return 0; + case 2:return long_error$0(cst_Expected_or_but_found$24,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$81,v,lexbuf)}}} + function finish_buffer_comment$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=507; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$30); + case 1:return long_error$0(cst_Unterminated_comment$2,v,lexbuf); + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a; + default:add_lexeme$0(v[1],lexbuf);continue a}}}} + function buffer_colon$0(v,lexbuf) + {var ocaml_lex_state=499; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],58); + case 1:return long_error$0(cst_Expected_but_found$28,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$90,v,lexbuf)}}} + function buffer_tuple_sep(v,lexbuf) + {var ocaml_lex_state=494; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple; + case 2:return long_error$0(cst_Expected_or_but_found$28,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$89,v,lexbuf)}}} + function buffer_tuple_end(v,lexbuf) + {var ocaml_lex_state=492; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_array_sep$0(v,lexbuf) + {var ocaml_lex_state=487; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; + case 2:return long_error$0(cst_Expected_or_but_found$27,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$88,v,lexbuf)}}} + function buffer_array_end$0(v,lexbuf) + {var ocaml_lex_state=485; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_object_sep$0(v,lexbuf) + {var ocaml_lex_state=480; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; + case 2:return long_error$0(cst_Expected_or_but_found$26,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$87,v,lexbuf)}}} + function buffer_object_end$0(v,lexbuf) + {var ocaml_lex_state=478; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_space$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme$0(v[1],lexbuf);newline$0(v,lexbuf);continue a; + case 1: + caml_call2(Bi_outbuf[13],v[1],cst$29); + finish_buffer_comment$0(v,lexbuf); + continue a; + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a; + case 3:add_lexeme$0(v[1],lexbuf);continue a; + default:return 0}}}} + function finish_buffer_stringlit$0(v,lexbuf) + {var ocaml_lex_state=450; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$0(v[1],lexbuf); + case 1:return long_error$0(cst_Invalid_string_literal$4,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$84,v,lexbuf)}}} + function buffer_ident$0(v,lexbuf) + {var ocaml_lex_state=466; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_buffer_stringlit$0(v,lexbuf); + case 1:return add_lexeme$0(v[1],lexbuf); + case 2: + return long_error$0(cst_Expected_string_or_identif$6,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$86,v,lexbuf)}}} + function buffer_json$3(counter,v,lexbuf) + {var _fW_=399; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_fW_)} + return caml_trampoline_return + (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_fW_])} + function ocaml_lex_buffer_json_rec$0(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf); + if(11 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return add_lexeme$0(v[1],lexbuf); + case 1:return finish_buffer_stringlit$0(v,lexbuf); + case 2: + try + {caml_call2(Bi_outbuf[15],v[1],123); + buffer_space$0(v,lexbuf); + buffer_object_end$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_colon$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_object_sep$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_colon$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + continue}} + catch(_fV_) + {_fV_ = caml_wrap_exception(_fV_); + if(_fV_ === End_of_object)return 0; + throw _fV_} + case 3: + try + {caml_call2(Bi_outbuf[15],v[1],91); + buffer_space$0(v,lexbuf); + buffer_array_end$0(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_array_sep$0(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + continue}} + catch(_fU_) + {_fU_ = caml_wrap_exception(_fU_); + if(_fU_ === End_of_array)return 0; + throw _fU_} + case 4: + try + {caml_call2(Bi_outbuf[15],v[1],40); + buffer_space$0(v,lexbuf); + buffer_tuple_end(v,lexbuf); + buffer_json$0(v,lexbuf); + for(;;) + {buffer_space$0(v,lexbuf); + buffer_tuple_sep(v,lexbuf); + buffer_space$0(v,lexbuf); + buffer_json$0(v,lexbuf); + continue}} + catch(_fT_) + {_fT_ = caml_wrap_exception(_fT_); + if(_fT_ === End_of_tuple)return 0; + throw _fT_} + case 5: + caml_call2(Bi_outbuf[15],v[1],60); + buffer_space$0(v,lexbuf); + buffer_ident$0(v,lexbuf); + buffer_space$0(v,lexbuf); + return finish_buffer_variant(v,lexbuf); + case 6: + add_lexeme$0(v[1],lexbuf); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return buffer_json$3(counter$0,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 7: + caml_call2(Bi_outbuf[13],v[1],cst$28); + finish_buffer_comment$0(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return buffer_json$3(counter$1,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 8: + caml_call2(Bi_outbuf[15],v[1],10); + newline$0(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return buffer_json$3(counter$2,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 9: + add_lexeme$0(v[1],lexbuf); + if(counter < 50) + {var counter$3=counter + 1 | 0; + return buffer_json$3(counter$3,v,lexbuf)} + return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); + case 10: + return custom_error$0(cst_Unexpected_end_of_input$83,v,lexbuf); + default:return long_error$0(cst_Invalid_token$11,v,lexbuf)}}} + function buffer_json$0(v,lexbuf) + {return caml_trampoline(buffer_json$3(0,v,lexbuf))} + function finish_buffer_variant(v,lexbuf) + {var ocaml_lex_state=461; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call2(Bi_outbuf[15],v[1],58); + buffer_json$0(v,lexbuf); + buffer_space$0(v,lexbuf); + var ocaml_lex_state$1=503; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0:return caml_call2(Bi_outbuf[15],v[1],62); + case 1:return long_error$0(cst_Expected_but_found$29,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$91,v,lexbuf)}} + case 1:return caml_call2(Bi_outbuf[15],v[1],62); + case 2:return long_error$0(cst_Expected_or_but_found$25,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}} + function junk$0(lexbuf) + {var ocaml_lex_state=513; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return caml_call1(lexeme$0,lexbuf); + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + read_junk$0[1] = junk$0; + function read_int8$0(v,lexbuf) + {var n=read_int$0(v,lexbuf); + if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); + return lexer_error$0(cst_Int8_overflow$0,v,lexbuf)} + function read_list$0(read_cell,v,lexbuf) + {var _fS_=read_list_rev$0(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_fS_)} + function read_array$0(read_cell,v,lexbuf) + {var l=read_list_rev$0(read_cell,v,lexbuf); + if(l) + {var + tl=l[2], + x=l[1], + len=caml_call1(Stdlib_List[1],l), + a=caml_make_vect(len,x), + r=[0,tl], + _fP_=len - 2 | 0; + if(! (_fP_ < 0)) + {var i=_fP_; + for(;;) + {var _fQ_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _fQ_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _fR_=i - 1 | 0; + if(0 !== i){var i=_fR_;continue} + break}} + return a} + return [0]} + function read_fields$0(read_field,init_acc,v) + {return function(_fO_) + {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_fO_)}} + function from_lexbuf$0(v,opt,lexbuf) + {if(opt)var sth=opt[1],stream=sth;else var stream=0; + read_space$0(v,lexbuf); + if(read_eof$0(lexbuf))throw End_of_input; + var x=read_json$0(v,lexbuf); + if(1 - stream) + {read_space$0(v,lexbuf); + if(1 - read_eof$0(lexbuf)) + long_error$0(cst_Junk_after_end_of_JSON_val$0,v,lexbuf)} + return x} + function from_string$2(buf,fname,lnum,s) + {try + {var + lexbuf=caml_call2(from_string$1,0,s), + v=init_lexer(buf,fname,lnum,0), + _fM_=from_lexbuf$0(v,0,lexbuf); + return _fM_} + catch(_fN_) + {_fN_ = caml_wrap_exception(_fN_); + if(_fN_ === End_of_input)return json_error(cst_Blank_input_data$1); + throw _fN_}} + function from_channel$2(buf,fname,lnum,ic) + {try + {var + lexbuf=caml_call2(from_channel$1,0,ic), + v=init_lexer(buf,fname,lnum,0), + _fK_=from_lexbuf$0(v,0,lexbuf); + return _fK_} + catch(_fL_) + {_fL_ = caml_wrap_exception(_fL_); + if(_fL_ === End_of_input)return json_error(cst_Blank_input_data$2); + throw _fL_}} + function from_file$0(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + try + {var x=from_channel$2(buf,fname,lnum,ic); + caml_call1(Stdlib[93],ic); + return x} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} + var Finally$0=[248,cst_Yojson_Safe_Finally,caml_fresh_oo_id(0)]; + function stream_from_lexbuf$0(v,opt,lexbuf) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + function f(i) + {try + {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_} + catch(e) + {e = caml_wrap_exception(e); + if(e === End_of_input){caml_call1(fin,0);return 0} + try + {caml_call1(fin,0)} + catch(fin_e) + {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$0,e,fin_e]} + throw e}} + return caml_call1(Stdlib_Stream[3],f)} + function stream_from_string$0(buf,fname,lnum,s) + {var v=init_lexer(buf,fname,lnum,0); + return stream_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))} + function stream_from_channel$0(buf,fin,fname,lnum,ic) + {var + lexbuf=caml_call2(from_channel$1,0,ic), + v=init_lexer(buf,fname,lnum,0); + return stream_from_lexbuf$0(v,fin,lexbuf)} + function stream_from_file$0(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + function fin(param){return caml_call1(Stdlib[93],ic)} + var + fname$0=fname || [0,file], + lexbuf=caml_call2(from_channel$1,0,ic), + v=init_lexer(buf,fname$0,lnum,0); + return stream_from_lexbuf$0(v,[0,fin],lexbuf)} + function linestream_from_channel$0(buf,opt,fname,_fH_,ic) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + if(_fH_)var sth$0=_fH_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; + function f(i) + {try + {var + line=caml_call1(Stdlib[83],ic), + lnum=lnum0 + i | 0, + _fI_=[0,[0,826371656,from_string$2(buf$0,fname,[0,lnum],line)]]; + return _fI_} + catch(e) + {e = caml_wrap_exception(e); + return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} + return caml_call1(Stdlib_Stream[3],f)} + function linestream_from_file$0(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + function fin(param){return caml_call1(Stdlib[93],ic)} + var fname$0=fname || [0,file]; + return linestream_from_channel$0(buf,[0,fin],fname$0,lnum,ic)} + function prettify$0(std,s) + {return pretty_to_string$1(std,from_string$2(0,0,0,s))} + function compact$0(std,s) + {return to_string$3(0,0,0,from_string$2(0,0,0,s))} + function validate_json$0(path,value){return 0} + var Type_error$0=[248,cst_Yojson_Safe_Util_Type_erro,caml_fresh_oo_id(0)]; + function typerr$0(msg,js) + {if(typeof js === "number") + var _fG_=cst_null$4; + else + var + _fF_=js[1], + _fG_= + 708012133 <= _fF_ + ?726928360 === _fF_ + ?cst_tuple$0 + :848054398 <= _fF_ + ?963043957 <= _fF_?cst_object$0:cst_array$0 + :737456202 <= _fF_?cst_bool$0:cst_variant$0 + :3654863 <= _fF_ + ?365180284 <= _fF_?cst_float$0:cst_int$0 + :-752863768 <= _fF_?cst_intlit$0:cst_string$0; + throw [0,Type_error$0,caml_call2(Stdlib[28],msg,_fG_),js]} + var Undefined$0=[248,cst_Yojson_Safe_Util_Undefined,caml_fresh_oo_id(0)]; + function symbol$0(_fE_,_fD_){return caml_call1(_fD_,_fE_)} + function assoc$0(name,obj) + {try + {var _fB_=caml_call2(Stdlib_List[46],name,obj);return _fB_} + catch(_fC_) + {_fC_ = caml_wrap_exception(_fC_); + if(_fC_ === Stdlib[8])return 870828711; + throw _fC_}} + function member$0(name,js) + {if(typeof js !== "number" && 963043957 === js[1]) + {var obj=js[2];return assoc$0(name,obj)} + var _fA_=caml_call2(Stdlib[28],name,cst_of_non_object_type$0); + return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_member$0,_fA_),js)} + function index$0(i,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var + l=js[2], + len=caml_call1(Stdlib_List[1],l), + wrapped_index=0 <= i?i:len + i | 0; + if(0 <= wrapped_index && ! (len <= wrapped_index)) + return caml_call2(Stdlib_List[7],l,wrapped_index); + var + _fy_=caml_call1(Stdlib[33],i), + _fz_=caml_call2(Stdlib[28],_fy_,cst_out_of_bounds$0); + throw [0,Undefined$0,caml_call2(Stdlib[28],cst_Index$0,_fz_),js]} + var + _fw_=caml_call1(Stdlib[33],i), + _fx_=caml_call2(Stdlib[28],_fw_,cst_of_non_array_type$0); + return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_index$0,_fx_),js)} + function map$0(f,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]} + return typerr$0(cst_Can_t_map_function_over_no$0,js)} + function to_assoc$0(js) + {if(typeof js !== "number" && 963043957 === js[1]) + {var obj=js[2];return obj} + return typerr$0(cst_Expected_object_got$0,js)} + function to_option$0(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]} + function to_bool$0(js) + {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b} + return typerr$0(cst_Expected_bool_got$0,js)} + function to_bool_option$0(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(737456202 === js[1]){var b=js[2];return [0,b]} + return typerr$0(cst_Expected_bool_or_null_got$0,js)} + function to_number$0(js) + {if(typeof js !== "number") + {var _fv_=js[1]; + if(3654863 === _fv_){var i=js[2];return i} + if(365180284 === _fv_){var f=js[2];return f}} + return typerr$0(cst_Expected_number_got$0,js)} + function to_number_option$0(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + {var _fu_=js[1]; + if(3654863 === _fu_){var i=js[2];return [0,i]} + if(365180284 === _fu_){var f=js[2];return [0,f]}} + return typerr$0(cst_Expected_number_or_null_go$0,js)} + function to_float$0(js) + {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f} + return typerr$0(cst_Expected_float_got$0,js)} + function to_float_option$0(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(365180284 === js[1]){var f=js[2];return [0,f]} + return typerr$0(cst_Expected_float_or_null_got$0,js)} + function to_int$0(js) + {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i} + return typerr$0(cst_Expected_int_got$0,js)} + function to_int_option$0(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(3654863 === js[1]){var i=js[2];return [0,i]} + return typerr$0(cst_Expected_int_or_null_got$0,js)} + function to_list$0(js) + {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l} + return typerr$0(cst_Expected_array_got$0,js)} + function to_string$4(js) + {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s} + return typerr$0(cst_Expected_string_got$0,js)} + function to_string_option$0(js) + {if(typeof js === "number") + {if(870828711 === js)return 0} + else + if(-976970511 === js[1]){var s=js[2];return [0,s]} + return typerr$0(cst_Expected_string_or_null_go$0,js)} + function convert_each$0(f,js) + {if(typeof js !== "number" && 848054398 === js[1]) + {var l=js[2];return caml_call2(Stdlib_List[19],f,l)} + return typerr$0(cst_Can_t_convert_each_element$0,js)} + function filter_map$0(f,l$0) + {var acc=0,l=l$0; + for(;;) + {if(l) + {var tl=l[2],x=l[1],match=caml_call1(f,x); + if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue} + var l=tl; + continue} + return caml_call1(Stdlib_List[9],acc)}} + function flatten$0(l$0) + {var acc=0,l=l$0; + for(;;) + {if(l) + {var tl=l[2],x=l[1]; + if(typeof x !== "number" && 848054398 === x[1]) + {var + l2=x[2], + acc$0=caml_call2(Stdlib_List[12],l2,acc), + acc=acc$0, + l=tl; + continue} + var l=tl; + continue} + return caml_call1(Stdlib_List[9],acc)}} + function filter_index$0(i,l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 848054398 === param[1]) + {var l=param[2]; + try + {var _fs_=[0,caml_call2(Stdlib_List[7],l,i)];return _fs_} + catch(_ft_){return 0}} + return 0}, + l)} + function filter_list$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 848054398 === param[1]) + {var l=param[2];return [0,l]} + return 0}, + l)} + function filter_member$0(k,l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 963043957 === param[1]) + {var l=param[2]; + try + {var _fq_=[0,caml_call2(Stdlib_List[46],k,l)];return _fq_} + catch(_fr_){return 0}} + return 0}, + l)} + function filter_assoc$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 963043957 === param[1]) + {var l=param[2];return [0,l]} + return 0}, + l)} + function filter_bool$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 737456202 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_int$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 3654863 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_float$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && 365180284 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function filter_number$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number") + {var _fp_=param[1]; + if(3654863 === _fp_){var x=param[2];return [0,x]} + if(365180284 === _fp_){var x$0=param[2];return [0,x$0]}} + return 0}, + l)} + function filter_string$0(l) + {return filter_map$0 + (function(param) + {if(typeof param !== "number" && -976970511 === param[1]) + {var x=param[2];return [0,x]} + return 0}, + l)} + function keys$0(o) + {function _fn_(param){var key=param[1];return key} + var _fo_=caml_call1(Stdlib_List[19],_fn_); + return symbol$0(to_assoc$0(o),_fo_)} + function values$0(o) + {function _fl_(param){var value=param[2];return value} + var _fm_=caml_call1(Stdlib_List[19],_fl_); + return symbol$0(to_assoc$0(o),_fm_)} + function combine$0(first,second) + {if + (typeof first + !== + "number" + && + 963043957 + === + first[1] + && + typeof second + !== + "number" + && + 963043957 + === + second[1]) + {var b=second[2],a=first[2]; + return [0,963043957,caml_call2(Stdlib[37],a,b)]} + throw [0,Stdlib[6],cst_Expected_two_objects_check$0]} + function hex$4(n) + {var _fk_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_fk_)} + function write_special$2(src,start,stop,ob,str) + {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); + caml_call2(Bi_outbuf[13],ob,str); + start[1] = stop + 1 | 0; + return 0} + function finish_string$4(src,start,ob) + {try + {var + _fj_= + caml_call4 + (Bi_outbuf[14], + ob, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + return _fj_} + catch(exc) + {exc = caml_wrap_exception(exc); + caml_call4 + (Stdlib_Printf[3], + _cR_, + src, + start[1], + caml_ml_string_length(src) - start[1] | 0); + throw exc}} + function write_string$2(ob,s) + {caml_call2(Bi_outbuf[15],ob,34); + var start=[0,0],_fh_=caml_ml_string_length(s) - 1 | 0,_fg_=0; + if(! (_fh_ < 0)) + {var i$0=_fg_; + for(;;) + {var c=caml_string_get(s,i$0); + if(92 === c) + write_special$2(s,start,i$0,ob,cst$31); + else + {var switch$0=0; + if(35 <= c) + if(127 === c)switch$0 = 1;else switch$0 = 2; + else + if(8 <= c) + {var switch$1=0; + switch(c - 8 | 0) + {case 0:write_special$2(s,start,i$0,ob,cst_b$2);break; + case 1:write_special$2(s,start,i$0,ob,cst_t$2);break; + case 2:write_special$2(s,start,i$0,ob,cst_n$2);break; + case 4:write_special$2(s,start,i$0,ob,cst_f$2);break; + case 5:write_special$2(s,start,i$0,ob,cst_r$2);break; + case 26:write_special$2(s,start,i$0,ob,cst$32);break; + case 24: + case 25:switch$0 = 2;switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1}} + else + switch$0 = 1; + switch(switch$0) + {case 2:break; + case 1: + caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); + var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; + caml_call5(Stdlib_Bytes[12],cst_u00$2,0,dst,i,4); + caml_bytes_set(dst,i + 4 | 0,hex$4(c >>> 4 | 0)); + caml_bytes_set(dst,i + 5 | 0,hex$4(c & 15)); + start[1] = i$0 + 1 | 0; + break + }} + var _fi_=i$0 + 1 | 0; + if(_fh_ !== i$0){var i$0=_fi_;continue} + break}} + finish_string$4(s,start,ob); + return caml_call2(Bi_outbuf[15],ob,34)} + function write_null$2(ob,param) + {return caml_call2(Bi_outbuf[13],ob,cst_null$5)} + function write_bool$2(ob,x) + {var _ff_=x?cst_true$3:cst_false$3; + return caml_call2(Bi_outbuf[13],ob,_ff_)} + var + _cS_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _cT_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_cT_,_cS_); + var + write_intlit$1=Bi_outbuf[13], + write_floatlit$0=Bi_outbuf[13], + write_stringlit$0=Bi_outbuf[13]; + function iter2$2(f_elt,f_sep,x,param$0) + {if(param$0) + {var l$0=param$0[2],y$0=param$0[1]; + caml_call2(f_elt,x,y$0); + var param=l$0; + for(;;) + {if(param) + {var l=param[2],y=param[1]; + caml_call1(f_sep,x); + caml_call2(f_elt,x,y); + var param=l; + continue} + return 0}} + return 0} + function f_sep$2(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function write_tuple$1(ob,l) + {caml_call2(Bi_outbuf[15],ob,40); + iter2$2(write_t$2,f_sep$2,ob,l); + return caml_call2(Bi_outbuf[15],ob,41)} + function write_list$2(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$2(write_t$2,f_sep$2,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + function write_t$2(ob,x) + {if(typeof x === "number")return write_null$2(ob,0); + var _fe_=x[1]; + if(737456202 <= _fe_) + {if(928231259 <= _fe_) + {if(963043957 <= _fe_){var l=x[2];return write_assoc$2(ob,l)} + var s=x[2]; + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _fe_){var l$0=x[2];return write_list$2(ob,l$0)} + var b=x[2]; + return write_bool$2(ob,b)} + if(708012133 <= _fe_) + {if(726928360 <= _fe_){var l$1=x[2];return write_tuple$1(ob,l$1)} + var match=x[2],o=match[2],s$0=match[1]; + return write_variant$1(ob,s$0,o)} + if(-375152890 <= _fe_) + {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + var s$2=x[2]; + return caml_call2(Bi_outbuf[13],ob,s$2)} + function write_assoc$2(ob,l) + {function f_elt(ob,param) + {var x=param[2],s=param[1]; + write_string$2(ob,s); + caml_call2(Bi_outbuf[15],ob,58); + return write_t$2(ob,x)} + caml_call2(Bi_outbuf[15],ob,123); + iter2$2(f_elt,f_sep$2,ob,l); + return caml_call2(Bi_outbuf[15],ob,125)} + function write_variant$1(ob,s,o) + {caml_call2(Bi_outbuf[15],ob,60); + write_string$2(ob,s); + if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$2(ob,x)} + return caml_call2(Bi_outbuf[15],ob,62)} + function write_std_tuple$1(ob,l) + {caml_call2(Bi_outbuf[15],ob,91); + iter2$2(write_std_json$2,f_sep$2,ob,l); + return caml_call2(Bi_outbuf[15],ob,93)} + function write_std_json$2(ob,x) + {if(typeof x === "number")return write_null$2(ob,0); + var _fd_=x[1]; + if(737456202 <= _fd_) + {if(928231259 <= _fd_) + {if(963043957 <= _fd_) + {var + l=x[2], + f_elt= + function(ob,param) + {var x=param[2],s=param[1]; + write_string$2(ob,s); + caml_call2(Bi_outbuf[15],ob,58); + return write_std_json$2(ob,x)}; + caml_call2(Bi_outbuf[15],ob,123); + iter2$2(f_elt,f_sep$2,ob,l); + return caml_call2(Bi_outbuf[15],ob,125)} + var s=x[2]; + return caml_call2(Bi_outbuf[13],ob,s)} + if(848054398 <= _fd_) + {var l$0=x[2]; + caml_call2(Bi_outbuf[15],ob,91); + iter2$2(write_std_json$2,f_sep$2,ob,l$0); + return caml_call2(Bi_outbuf[15],ob,93)} + var b=x[2]; + return write_bool$2(ob,b)} + if(708012133 <= _fd_) + {if(726928360 <= _fd_){var l$1=x[2];return write_std_tuple$1(ob,l$1)} + var match=x[2],o=match[2],s$0=match[1]; + return write_std_variant$1(ob,s$0,o)} + if(-375152890 <= _fd_) + {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + var s$2=x[2]; + return caml_call2(Bi_outbuf[13],ob,s$2)} + function write_std_variant$1(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Bi_outbuf[15],ob,91); + write_string$2(ob,s); + caml_call2(Bi_outbuf[15],ob,44); + write_std_json$2(ob,x); + return caml_call2(Bi_outbuf[15],ob,93)} + return write_string$2(ob,s)} + function to_outbuf$2(opt,ob,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + return std + ?is_object_or_array(x) + ?write_std_json$2(ob,x) + :json_error(cst_Root_is_not_an_object_or_a$3) + :write_t$2(ob,x)} + function to_string$5(buf,opt,std,x) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + else + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + to_outbuf$2(std,ob$0,x); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); + return s} + function to_channel$3(buf,len,std,oc,x) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + to_outbuf$2(std,ob$0,x); + return caml_call1(Bi_outbuf[6],ob$0)} + function to_output$2(buf,len,std,out,x) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[7],len,0,out); + to_outbuf$2(std,ob$0,x); + return caml_call1(Bi_outbuf[8],ob$0)} + function to_file$2(len,std,file,x) + {var oc=caml_call1(Stdlib[60],file); + try + {to_channel$3(0,len,std,oc,x); + var _fc_=caml_call1(Stdlib[76],oc); + return _fc_} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} + function stream_to_outbuf$2(std,ob,st) + {function _fa_(_fb_){return to_outbuf$2(std,ob,_fb_)} + return caml_call2(Stdlib_Stream[8],_fa_,st)} + function stream_to_string$2(buf,opt,std,st) + {if(opt)var sth=opt[1],len=sth;else var len=256; + if(buf) + {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + else + var ob$0=caml_call3(Bi_outbuf[3],0,0,len); + stream_to_outbuf$2(std,ob$0,st); + var s=caml_call1(Bi_outbuf[4],ob$0); + caml_call1(Bi_outbuf[19],ob$0); + return s} + function stream_to_channel$2(buf,len,std,oc,st) + {if(buf) + var ob=buf[1],ob$0=ob; + else + var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); + stream_to_outbuf$2(std,ob$0,st); + return caml_call1(Bi_outbuf[6],ob$0)} + function stream_to_file$2(len,std,file,st) + {var oc=caml_call1(Stdlib[60],file); + try + {stream_to_channel$2(0,len,std,oc,st); + var _e$_=caml_call1(Stdlib[76],oc); + return _e$_} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} + function sort$2(x) + {if(typeof x !== "number") + {var _e2_=x[1]; + if(726928361 <= _e2_) + {if(848054398 === _e2_) + {var l=x[2],_e3_=caml_call2(Stdlib_List[21],sort$2,l); + return [0,848054398,caml_call1(Stdlib_List[9],_e3_)]} + if(963043957 === _e2_) + {var + l$0=x[2], + _e4_= + function(param) + {var v=param[2],k=param[1];return [0,k,sort$2(v)]}, + _e5_=caml_call2(Stdlib_List[21],_e4_,l$0), + l$1=caml_call1(Stdlib_List[9],_e5_), + _e6_= + function(param,_e__) + {var b=_e__[1],a=param[1]; + return caml_call2(Stdlib_String[9],a,b)}; + return [0,963043957,caml_call2(Stdlib_List[57],_e6_,l$1)]}} + else + if(708012133 === _e2_) + {var _e7_=x[2],_e8_=_e7_[2]; + if(_e8_) + {var v=_e8_[1],k=_e7_[1],v$0=sort$2(v); + return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} + else + if(726928360 <= _e2_) + {var l$2=x[2],_e9_=caml_call2(Stdlib_List[21],sort$2,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_e9_)]}} + return x} + function pp$2(fmt,param) + {if(typeof param === "number") + return caml_call2(Stdlib_Format[13],fmt,cst_Null$2); + var _eV_=param[1]; + if(737456202 <= _eV_) + {if(928231259 <= _eV_) + {if(963043957 <= _eV_) + {var xs=param[2]; + caml_call2(Stdlib_Format[129],fmt,_cU_); + caml_call2(Stdlib_Format[129],fmt,_cV_); + var + _eW_=0, + _eX_= + function(sep,param) + {var value=param[2],key=param[1]; + if(sep)caml_call2(Stdlib_Format[129],fmt,_cW_); + caml_call2(Stdlib_Format[129],fmt,_cX_); + caml_call3(Stdlib_Format[129],fmt,_cY_,key); + caml_call2(Stdlib_Format[129],fmt,_cZ_); + pp$2(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_c0_); + return 1}; + caml_call3(Stdlib_List[25],_eX_,_eW_,xs); + caml_call2(Stdlib_Format[129],fmt,_c1_); + return caml_call2(Stdlib_Format[129],fmt,_c2_)} + var x=param[2]; + caml_call2(Stdlib_Format[129],fmt,_c3_); + caml_call3(Stdlib_Format[129],fmt,_c4_,x); + return caml_call2(Stdlib_Format[129],fmt,_c5_)} + if(848054398 <= _eV_) + {var xs$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_c6_); + caml_call2(Stdlib_Format[129],fmt,_c7_); + var + _eY_=0, + _eZ_= + function(sep,x) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_c8_); + pp$2(fmt,x); + return 1}; + caml_call3(Stdlib_List[25],_eZ_,_eY_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_c9_); + return caml_call2(Stdlib_Format[129],fmt,_c__)} + var x$0=param[2]; + caml_call2(Stdlib_Format[129],fmt,_c$_); + caml_call3(Stdlib_Format[129],fmt,_da_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_db_)} + if(708012133 <= _eV_) + {if(726928360 <= _eV_) + {var tup=param[2]; + caml_call2(Stdlib_Format[129],fmt,_dc_); + caml_call2(Stdlib_Format[129],fmt,_dd_); + var + _e0_=0, + _e1_= + function(sep,e) + {if(sep)caml_call2(Stdlib_Format[129],fmt,_de_); + pp$2(fmt,e); + return 1}; + caml_call3(Stdlib_List[25],_e1_,_e0_,tup); + caml_call2(Stdlib_Format[129],fmt,_df_); + return caml_call2(Stdlib_Format[129],fmt,_dg_)} + var match=param[2],value=match[2],name=match[1]; + caml_call2(Stdlib_Format[129],fmt,_dh_); + caml_call2(Stdlib_Format[129],fmt,_di_); + caml_call3(Stdlib_Format[129],fmt,_dj_,name); + caml_call2(Stdlib_Format[129],fmt,_dk_); + if(value) + {var x$1=value[1]; + caml_call2(Stdlib_Format[13],fmt,cst_Some$1); + pp$2(fmt,x$1); + caml_call2(Stdlib_Format[13],fmt,cst$33)} + else + caml_call2(Stdlib_Format[13],fmt,cst_None$1); + caml_call2(Stdlib_Format[129],fmt,_dl_); + return caml_call2(Stdlib_Format[129],fmt,_dm_)} + if(-375152890 <= _eV_) + {var x$2=param[2]; + caml_call2(Stdlib_Format[129],fmt,_dn_); + caml_call3(Stdlib_Format[129],fmt,_do_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_dp_)} + var x$3=param[2]; + caml_call2(Stdlib_Format[129],fmt,_dq_); + caml_call3(Stdlib_Format[129],fmt,_dr_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_ds_)} + function show$2(x){return caml_call3(Stdlib_Format[133],_dt_,pp$2,x)} + function equal$2(a,b) + {var a$0=a,b$0=b; + for(;;) + {if(typeof a$0 === "number") + {if(870828711 === a$0 && 870828711 === b$0)return 1} + else + {var _eO_=a$0[1],switch$0=0; + if(726928361 <= _eO_) + {if(848054399 <= _eO_) + {if(928231259 === _eO_) + {if(typeof b$0 !== "number" && 928231259 === b$0[1]) + {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} + else + if + (963043957 + === + _eO_ + && + typeof b$0 + !== + "number" + && + 963043957 + === + b$0[1]) + {var + ys=b$0[2], + xs=a$0[2], + compare_keys= + function(param,_eU_) + {var key=_eU_[1],key$0=param[1]; + return caml_call2(Stdlib_String[9],key$0,key)}, + xs$0=caml_call2(Stdlib_List[57],compare_keys,xs), + ys$0=caml_call2(Stdlib_List[57],compare_keys,ys); + try + {var + _eP_= + function(param,_eT_) + {var + value=_eT_[2], + key=_eT_[1], + value$0=param[2], + key$0=param[1], + match=caml_string_equal(key$0,key); + return match?equal$2(value$0,value):0}, + result=caml_call3(Stdlib_List[34],_eP_,xs$0,ys$0); + return result} + catch(_eS_) + {_eS_ = caml_wrap_exception(_eS_); + if(_eS_[1] === Stdlib[6])return 0; + throw _eS_}}} + else + if(737456202 === _eO_) + {if(typeof b$0 !== "number" && 737456202 === b$0[1]) + {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}} + else + if + (848054398 + <= + _eO_ + && + typeof b$0 + !== + "number" + && + 848054398 + === + b$0[1]) + {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} + else + if(-375152889 <= _eO_) + {if(708012133 === _eO_) + {if(typeof b$0 !== "number" && 708012133 === b$0[1]) + {var + _eQ_=b$0[2], + value=_eQ_[2], + name=_eQ_[1], + match=a$0[2], + value$0=match[2], + name$0=match[1], + match$0=caml_equal(name$0,name); + if(match$0) + {if(value$0) + {if(value) + {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}} + else + if(! value)return 1; + return 0} + return 0}} + else + if + (726928360 + <= + _eO_ + && + typeof b$0 + !== + "number" + && + 726928360 + === + b$0[1]) + {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} + else + if(-752863768 === _eO_) + {if(typeof b$0 !== "number" && -752863768 === b$0[1]) + {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} + else + if + (-375152890 + <= + _eO_ + && + typeof b$0 + !== + "number" + && + -375152890 + === + b$0[1]) + {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)} + if(switch$0) + try + {var result$0=caml_call3(Stdlib_List[34],equal$2,xs$1,ys$1); + return result$0} + catch(_eR_) + {_eR_ = caml_wrap_exception(_eR_); + if(_eR_[1] === Stdlib[6])return 0; + throw _eR_}} + return 0}} + function pretty_format$2(std,x){return format(std,x)} + function pretty_print$2(std,out,x) + {var _eN_=pretty_format$2(std,x); + return caml_call2(Easy_format[4][2],out,_eN_)} + function pretty_to_string$2(std,x){return to_string$0(std,x)} + function pretty_to_channel$2(std,oc,x){return to_channel$0(std,oc,x)} + var + from_channel$3=Stdlib_Lexing[2], + from_string$3=Stdlib_Lexing[3], + lexeme$1=Stdlib_Lexing[8], + sub_lexeme$1=Stdlib_Lexing[16], + sub_lexeme_char$1=Stdlib_Lexing[18]; + function hex$5(c) + {if(65 <= c) + {if(97 <= c) + {if(! (103 <= c))return (c - 97 | 0) + 10 | 0} + else + if(! (71 <= c))return (c - 65 | 0) + 10 | 0} + else + if(! (9 < c - 48 >>> 0))return c - 48 | 0; + throw [0,Assert_failure,_du_]} + function custom_error$1(descr,v,lexbuf) + {var + offs=lexbuf[4] - 1 | 0, + bol=v[3], + pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, + pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), + _eM_=v[4]; + if(_eM_) + var s=_eM_[1],file_line=caml_call2(Stdlib_Printf[4],_dv_,s); + else + var file_line=cst_Line$1; + var + bytes= + pos1 === pos2 + ?caml_call2(Stdlib_Printf[4],_dw_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_dy_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_dx_,file_line,v[2],bytes,descr); + return json_error(msg)} + function lexer_error$1(descr,v,lexbuf) + {var _eL_=caml_call1(lexeme$1,lexbuf); + return custom_error$1 + (caml_call3(Stdlib_Printf[4],_dz_,descr,_eL_),v,lexbuf)} + var read_junk$1=[0,function(param){throw [0,Assert_failure,_dA_]}]; + function long_error$1(descr,v,lexbuf) + {var + junk=caml_call1(lexeme$1,lexbuf), + extra_junk=caml_call1(read_junk$1[1],lexbuf); + return custom_error$1 + (caml_call4(Stdlib_Printf[4],_dB_,descr,junk,extra_junk), + v, + lexbuf)} + var + _dC_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10$1=(Stdlib[20] / 10 | 0) - _dC_ | 0, + _dD_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10$1=(Stdlib[19] / 10 | 0) + _dD_ | 0, + Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)]; + function extract_positive_int$1(lexbuf) + {var + start=lexbuf[5], + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _eI_=stop - 1 | 0; + if(! (_eI_ < start)) + {var i=start; + for(;;) + {if(max10$1 <= n[1])throw Int_overflow$1; + var _eJ_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _eJ_ | 0; + var _eK_=i + 1 | 0; + if(_eI_ !== i){var i=_eK_;continue} + break}} + if(0 <= n[1])return n[1]; + throw Int_overflow$1} + function make_positive_int(v,lexbuf) + {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]} + function extract_negative_int$1(lexbuf) + {var + start=lexbuf[5] + 1 | 0, + stop=lexbuf[6], + s=lexbuf[2], + n=[0,0], + _eF_=stop - 1 | 0; + if(! (_eF_ < start)) + {var i=start; + for(;;) + {if(n[1] <= min10$1)throw Int_overflow$1; + var _eG_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _eG_ | 0; + var _eH_=i + 1 | 0; + if(_eF_ !== i){var i=_eH_;continue} + break}} + if(0 < n[1])throw Int_overflow$1; + return n[1]} + function make_negative_int(v,lexbuf) + {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]} + function newline$1(v,lexbuf) + {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} + function add_lexeme$1(buf,lexbuf) + {var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} + function read_colon$1(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$39,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$121,v,lexbuf)}}} + function read_object_sep$1(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error$1(cst_Expected_or_but_found$38,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$120,v,lexbuf)}}} + function read_object_end$1(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_tuple_sep$1(v,lexbuf) + {var ocaml_lex_state=271; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_tuple; + case 2:return long_error$1(cst_Expected_or_but_found$34,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$116,v,lexbuf)}}} + function read_tuple_end$1(lexbuf) + {var ocaml_lex_state=266; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_tuple; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep$1(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error$1(cst_Expected_or_but_found$31,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$114,v,lexbuf)}}} + function read_array_end$1(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function finish_escaped_char$1(v,lexbuf) + {var ocaml_lex_state=68; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(8 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var c=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5]); + return caml_call2(Bi_outbuf[15],v[1],c); + case 1:return caml_call2(Bi_outbuf[15],v[1],8); + case 2:return caml_call2(Bi_outbuf[15],v[1],12); + case 3:return caml_call2(Bi_outbuf[15],v[1],10); + case 4:return caml_call2(Bi_outbuf[15],v[1],13); + case 5:return caml_call2(Bi_outbuf[15],v[1],9); + case 6: + var + a=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 1 | 0), + b=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), + c$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), + d=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), + _ez_=hex$5(d), + _eA_=hex$5(c$0) << 4, + _eB_=hex$5(b) << 8, + x=hex$5(a) << 12 | _eB_ | _eA_ | _ez_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0: + var + a$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), + b$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), + c$1=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), + d$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 5 | 0), + _eC_=hex$5(d$0), + _eD_=hex$5(c$1) << 4, + _eE_=hex$5(b$0) << 8, + y=hex$5(a$0) << 12 | _eE_ | _eD_ | _eC_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error$1 + (cst_Invalid_low_surrogate_for_$1,v,lexbuf); + case 1: + return long_error$1 + (cst_Missing_escape_sequence_re$1,v,lexbuf); + default: + return custom_error$1 + (cst_Unexpected_end_of_input$96,v,lexbuf)}}} + return utf8_of_code(v[1],x); + case 7:return long_error$1(cst_Invalid_escape_sequence$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$95,v,lexbuf)}}} + function finish_string$5(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Bi_outbuf[4],v[1]); + case 1:finish_escaped_char$1(v,lexbuf);continue a; + case 2:add_lexeme$1(v[1],lexbuf);continue a; + default: + return custom_error$1(cst_Unexpected_end_of_input$93,v,lexbuf)}}}} + function read_ident$1(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme$1,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2: + return long_error$1(cst_Expected_string_or_identif$7,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$110,v,lexbuf)}}} + function finish_comment$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Unterminated_comment$3,v,lexbuf); + case 2:newline$1(v,lexbuf);continue a; + default:continue a}}}} + function read_space$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline$1(v,lexbuf);continue a; + case 1:finish_comment$1(v,lexbuf);continue a; + case 2:newline$1(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} + function read_gt$1(v,lexbuf) + {var ocaml_lex_state=111; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$31,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$100,v,lexbuf)}}} + function finish_stringlit$1(v,lexbuf) + {var ocaml_lex_state=91; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); + caml_bytes_set(s,0,34); + caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); + return caml_call1(Stdlib_Bytes[6],s); + case 1:return long_error$1(cst_Invalid_string_literal$5,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$97,v,lexbuf)}}} + function read_json$4(counter,v,lexbuf) + {var _ey_=0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_read_json_rec$1(counter$0,v,lexbuf,_ey_)} + return caml_trampoline_return + (ocaml_lex_read_json_rec$1,[0,v,lexbuf,_ey_])} + function ocaml_lex_read_json_rec$1(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(19 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return _dE_; + case 1:return _dF_; + case 2:return 870828711; + case 3:return _dG_; + case 4:return _dH_; + case 5:return _dI_; + case 6:return [0,-375152890,finish_stringlit$1(v,lexbuf)]; + case 7:return make_positive_int(v,lexbuf); + case 8:return make_negative_int(v,lexbuf); + case 9:return [0,928231259,caml_call1(lexeme$1,lexbuf)]; + case 10: + var acc=[0,0]; + try + {read_space$1(v,lexbuf); + read_object_end$1(lexbuf); + var field_name=read_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + var _ep_=acc[1]; + acc[1] = [0,[0,field_name,read_json$1(v,lexbuf)],_ep_]; + for(;;) + {read_space$1(v,lexbuf); + read_object_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var field_name$0=read_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + var _eq_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json$1(v,lexbuf)],_eq_]; + continue}} + catch(_ex_) + {_ex_ = caml_wrap_exception(_ex_); + if(_ex_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _ex_} + case 11: + var acc$0=[0,0]; + try + {read_space$1(v,lexbuf); + read_array_end$1(lexbuf); + var _er_=acc$0[1]; + acc$0[1] = [0,read_json$1(v,lexbuf),_er_]; + for(;;) + {read_space$1(v,lexbuf); + read_array_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var _es_=acc$0[1]; + acc$0[1] = [0,read_json$1(v,lexbuf),_es_]; + continue}} + catch(_ew_) + {_ew_ = caml_wrap_exception(_ew_); + if(_ew_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _ew_} + case 12: + var acc$1=[0,0]; + try + {read_space$1(v,lexbuf); + read_tuple_end$1(lexbuf); + var _et_=acc$1[1]; + acc$1[1] = [0,read_json$1(v,lexbuf),_et_]; + for(;;) + {read_space$1(v,lexbuf); + read_tuple_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var _eu_=acc$1[1]; + acc$1[1] = [0,read_json$1(v,lexbuf),_eu_]; + continue}} + catch(_ev_) + {_ev_ = caml_wrap_exception(_ev_); + if(_ev_ === End_of_tuple) + return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; + throw _ev_} + case 13: + read_space$1(v,lexbuf); + var cons=read_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + return [0,708012133,[0,cons,finish_variant$1(v,lexbuf)]]; + case 14: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return read_json$4(counter$0,v,lexbuf)} + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + case 15: + finish_comment$1(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return read_json$4(counter$1,v,lexbuf)} + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + case 16: + newline$1(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return read_json$4(counter$2,v,lexbuf)} + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + case 17: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return read_json$4(counter$3,v,lexbuf)} + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + case 18: + return custom_error$1(cst_Unexpected_end_of_input$92,v,lexbuf); + default:return long_error$1(cst_Invalid_token$12,v,lexbuf)}}} + function finish_variant$1(v,lexbuf) + {var ocaml_lex_state=102; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var x=read_json$1(v,lexbuf); + read_space$1(v,lexbuf); + read_gt$1(v,lexbuf); + return [0,x]; + case 1:return 0; + case 2:return long_error$1(cst_Expected_or_but_found$29,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$98,v,lexbuf)}}} + function read_json$1(v,lexbuf) + {return caml_trampoline(read_json$4(0,v,lexbuf))} + function map_string$1(v,f,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=63; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var b=v[1],_eo_=b[3]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_eo_); + case 1:finish_escaped_char$1(v,lexbuf);continue a; + case 2:add_lexeme$1(v[1],lexbuf);continue a; + default: + return custom_error$1(cst_Unexpected_end_of_input$94,v,lexbuf)}}}} + function read_lt$1(v,lexbuf) + {var ocaml_lex_state=107; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$30,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$99,v,lexbuf)}}} + function read_comma$1(v,lexbuf) + {var ocaml_lex_state=115; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$32,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$101,v,lexbuf)}}} + function start_any_variant$1(v,lexbuf) + {var ocaml_lex_state=119; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return -154522342; + case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; + case 2:return -124528282; + case 3:return long_error$1(cst_Expected_or_but_found$30,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$102,v,lexbuf)}}} + function read_eof$1(lexbuf) + {var ocaml_lex_state=131; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_null$1(v,lexbuf) + {var ocaml_lex_state=140; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_null_but_found$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$103,v,lexbuf)}}} + function read_null_if_possible$1(v,lexbuf) + {var ocaml_lex_state=147; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return 1; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_bool$1(v,lexbuf) + {var ocaml_lex_state=152; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(5 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 1; + case 1:return 0; + case 2:return 1; + case 3:return 0; + case 4: + return long_error$1(cst_Expected_true_or_false_but$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$104,v,lexbuf)}}} + function ocaml_lex_read_int_rec$1(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(4 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _ei_=extract_positive_int$1(lexbuf);return _ei_} + catch(_en_) + {_en_ = caml_wrap_exception(_en_); + if(_en_ === Int_overflow$1) + return lexer_error$1(cst_Int_overflow$5,v,lexbuf); + throw _en_} + case 1: + try + {var _ej_=extract_negative_int$1(lexbuf);return _ej_} + catch(_em_) + {_em_ = caml_wrap_exception(_em_); + if(_em_ === Int_overflow$1) + return lexer_error$1(cst_Int_overflow$6,v,lexbuf); + throw _em_} + case 2: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$5(v,lexbuf); + try + {var _ek_=caml_int_of_string(s);return _ek_} + catch(_el_) + {return custom_error$1(cst_Expected_an_integer_but_fo$1,v,lexbuf)} + case 3: + return long_error$1(cst_Expected_integer_but_found$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$105,v,lexbuf)}}} + function read_int$1(v,lexbuf) + {return ocaml_lex_read_int_rec$1(v,lexbuf,176)} + function ocaml_lex_read_int32_rec$1(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(3 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _ee_=caml_int_of_string(caml_call1(lexeme$1,lexbuf)); + return _ee_} + catch(_eh_){return lexer_error$1(cst_Int32_overflow$3,v,lexbuf)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$5(v,lexbuf); + try + {var _ef_=caml_int_of_string(s);return _ef_} + catch(_eg_) + {return custom_error$1(cst_Expected_an_int32_but_foun$1,v,lexbuf)} + case 2:return long_error$1(cst_Expected_int32_but_found$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$106,v,lexbuf)}}} + function read_int32$1(v,lexbuf) + {return ocaml_lex_read_int32_rec$1(v,lexbuf,185)} + function ocaml_lex_read_int64_rec$1(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(3 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + try + {var _ea_=caml_int64_of_string(caml_call1(lexeme$1,lexbuf)); + return _ea_} + catch(_ed_){return lexer_error$1(cst_Int32_overflow$4,v,lexbuf)} + case 1: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$5(v,lexbuf); + try + {var _eb_=caml_int64_of_string(s);return _eb_} + catch(_ec_) + {return custom_error$1(cst_Expected_an_int64_but_foun$1,v,lexbuf)} + case 2:return long_error$1(cst_Expected_int64_but_found$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$107,v,lexbuf)}}} + function read_int64$1(v,lexbuf) + {return ocaml_lex_read_int64_rec$1(v,lexbuf,192)} + function ocaml_lex_read_number_rec$1(v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(6 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return Stdlib[24]; + case 1:return Stdlib[22]; + case 2:return Stdlib[23]; + case 3:return caml_float_of_string(caml_call1(lexeme$1,lexbuf)); + case 4: + caml_call1(Bi_outbuf[19],v[1]); + var s=finish_string$5(v,lexbuf); + try + {var _d__=caml_float_of_string(s);return _d__} + catch(_d$_) + {return caml_string_notequal(s,cst_Infinity$21) + ?caml_string_notequal(s,cst_Infinity$22) + ?caml_string_notequal(s,cst_NaN$10) + ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf) + :Stdlib[24] + :Stdlib[22] + :Stdlib[23]} + case 5: + return long_error$1(cst_Expected_number_but_found$1,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$108,v,lexbuf)}}} + function read_number$1(v,lexbuf) + {return ocaml_lex_read_number_rec$1(v,lexbuf,199)} + function read_string$1(v,lexbuf) + {var ocaml_lex_state=233; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf); + case 1:return long_error$1(cst_Expected_but_found$33,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$109,v,lexbuf)}}} + function map_ident$1(v,f,lexbuf) + {var ocaml_lex_state=242; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Bi_outbuf[19],v[1]);return map_string$1(v,f,lexbuf); + case 1: + var len=lexbuf[6] - lexbuf[5] | 0,_d9_=lexbuf[5]; + return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_d9_,len); + case 2: + return long_error$1(cst_Expected_string_or_identif$8,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$111,v,lexbuf)}}} + function ocaml_lex_read_sequence_rec$1 + (read_cell,init_acc,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,init_acc]; + try + {read_space$1(v,lexbuf); + read_array_end$1(lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_array_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); + continue}} + catch(_d8_) + {_d8_ = caml_wrap_exception(_d8_); + if(_d8_ === End_of_array)return acc[1]; + throw _d8_} + case 1:return long_error$1(cst_Expected_but_found$34,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$112,v,lexbuf)}}} + function read_sequence$1(read_cell,init_acc,v,lexbuf) + {return ocaml_lex_read_sequence_rec$1(read_cell,init_acc,v,lexbuf,247)} + function ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,0]; + try + {read_space$1(v,lexbuf); + read_array_end$1(lexbuf); + var _d5_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d5_]; + for(;;) + {read_space$1(v,lexbuf); + read_array_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var _d6_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d6_]; + continue}} + catch(_d7_) + {_d7_ = caml_wrap_exception(_d7_); + if(_d7_ === End_of_array)return acc[1]; + throw _d7_} + case 1:return long_error$1(cst_Expected_but_found$35,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$113,v,lexbuf)}}} + function read_list_rev$1(read_cell,v,lexbuf) + {return ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,251)} + function ocaml_lex_read_tuple_rec$0 + (read_cell,init_acc,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var pos=[0,0],acc=[0,init_acc]; + try + {read_space$1(v,lexbuf); + read_tuple_end$1(lexbuf); + acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); + pos[1]++; + for(;;) + {read_space$1(v,lexbuf); + read_tuple_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); + pos[1]++; + continue}} + catch(_d4_) + {_d4_ = caml_wrap_exception(_d4_); + if(_d4_ === End_of_tuple)return acc[1]; + throw _d4_} + case 1:return long_error$1(cst_Expected_but_found$36,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$115,v,lexbuf)}}} + function read_tuple$1(read_cell,init_acc,v,lexbuf) + {return ocaml_lex_read_tuple_rec$0(read_cell,init_acc,v,lexbuf,262)} + function read_tuple_end2$1(v,std,lexbuf) + {var ocaml_lex_state=268; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + if(std)return long_error$1(cst_Expected_or_but_found$32,v,lexbuf); + throw End_of_tuple; + case 1: + if(std)throw End_of_tuple; + return long_error$1(cst_Expected_or_but_found$33,v,lexbuf); + default:return 0}}} + function read_tuple_sep2$1(v,std,lexbuf) + {var ocaml_lex_state=276; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1: + if(std)return long_error$1(cst_Expected_or_but_found$35,v,lexbuf); + throw End_of_tuple; + case 2: + if(std)throw End_of_tuple; + return long_error$1(cst_Expected_or_but_found$36,v,lexbuf); + case 3:return long_error$1(cst_Expected_or_but_found$37,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$117,v,lexbuf)}}} + function ocaml_lex_read_abstract_fields$1 + (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(2 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0: + var acc=[0,init_acc]; + try + {read_space$1(v,lexbuf); + read_object_end$1(lexbuf); + var field_name=caml_call2(read_key,v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_object_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var field_name$0=caml_call2(read_key,v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); + continue}} + catch(_d3_) + {_d3_ = caml_wrap_exception(_d3_); + if(_d3_ === End_of_object)return acc[1]; + throw _d3_} + case 1:return long_error$1(cst_Expected_but_found$37,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$118,v,lexbuf)}}} + function read_abstract_fields$1(read_key,read_field,init_acc,v,lexbuf) + {return ocaml_lex_read_abstract_fields$1 + (read_key,read_field,init_acc,v,lexbuf,282)} + function read_lcurl$1(v,lexbuf) + {var ocaml_lex_state=286; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$38,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$119,v,lexbuf)}}} + function start_any_tuple$1(v,lexbuf) + {var ocaml_lex_state=301; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return 1; + case 2:return long_error$1(cst_Expected_or_but_found$39,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$122,v,lexbuf)}}} + function read_lpar$1(v,lexbuf) + {var ocaml_lex_state=306; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$40,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$123,v,lexbuf)}}} + function read_rpar$1(v,lexbuf) + {var ocaml_lex_state=310; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$41,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$124,v,lexbuf)}}} + function read_lbr$1(v,lexbuf) + {var ocaml_lex_state=314; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$42,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$125,v,lexbuf)}}} + function read_rbr$1(v,lexbuf) + {var ocaml_lex_state=318; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$43,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$126,v,lexbuf)}}} + function finish_skip_stringlit$1(v,lexbuf) + {var ocaml_lex_state=378; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Invalid_string_literal$6,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$128,v,lexbuf)}}} + function skip_ident$1(v,lexbuf) + {var ocaml_lex_state=394; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_skip_stringlit$1(v,lexbuf); + case 1:return 0; + case 2: + return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}} + function skip_json$4(counter,v,lexbuf) + {var _d2_=322; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_d2_)} + return caml_trampoline_return + (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_d2_])} + function ocaml_lex_skip_json_rec$1(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(18 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return 0; + case 1:return 0; + case 2:return 0; + case 3:return 0; + case 4:return 0; + case 5:return 0; + case 6:return finish_skip_stringlit$1(v,lexbuf); + case 7:return 0; + case 8:return 0; + case 9: + try + {read_space$1(v,lexbuf); + read_object_end$1(lexbuf); + skip_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + skip_json$1(v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_object_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + skip_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + skip_json$1(v,lexbuf); + continue}} + catch(_d1_) + {_d1_ = caml_wrap_exception(_d1_); + if(_d1_ === End_of_object)return 0; + throw _d1_} + case 10: + try + {read_space$1(v,lexbuf); + read_array_end$1(lexbuf); + skip_json$1(v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_array_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + skip_json$1(v,lexbuf); + continue}} + catch(_d0_) + {_d0_ = caml_wrap_exception(_d0_); + if(_d0_ === End_of_array)return 0; + throw _d0_} + case 11: + try + {read_space$1(v,lexbuf); + read_tuple_end$1(lexbuf); + skip_json$1(v,lexbuf); + for(;;) + {read_space$1(v,lexbuf); + read_tuple_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + skip_json$1(v,lexbuf); + continue}} + catch(_dZ_) + {_dZ_ = caml_wrap_exception(_dZ_); + if(_dZ_ === End_of_tuple)return 0; + throw _dZ_} + case 12: + read_space$1(v,lexbuf); + skip_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + return finish_skip_variant$1(v,lexbuf); + case 13: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return skip_json$4(counter$0,v,lexbuf)} + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + case 14: + finish_comment$1(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return skip_json$4(counter$1,v,lexbuf)} + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + case 15: + newline$1(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return skip_json$4(counter$2,v,lexbuf)} + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + case 16: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return skip_json$4(counter$3,v,lexbuf)} + return caml_trampoline_return(skip_json$4,[0,v,lexbuf]); + case 17: + return custom_error$1(cst_Unexpected_end_of_input$127,v,lexbuf); + default:return long_error$1(cst_Invalid_token$13,v,lexbuf)}}} + function skip_json$1(v,lexbuf) + {return caml_trampoline(skip_json$4(0,v,lexbuf))} + function finish_skip_variant$1(v,lexbuf) + {var ocaml_lex_state=389; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + skip_json$1(v,lexbuf); + read_space$1(v,lexbuf); + return read_gt$1(v,lexbuf); + case 1:return 0; + case 2:return long_error$1(cst_Expected_or_but_found$40,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$129,v,lexbuf)}}} + function finish_buffer_comment$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=507; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$36); + case 1:return long_error$1(cst_Unterminated_comment$4,v,lexbuf); + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a; + default:add_lexeme$1(v[1],lexbuf);continue a}}}} + function buffer_colon$1(v,lexbuf) + {var ocaml_lex_state=499; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],58); + case 1:return long_error$1(cst_Expected_but_found$44,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$138,v,lexbuf)}}} + function buffer_tuple_sep$0(v,lexbuf) + {var ocaml_lex_state=494; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple; + case 2:return long_error$1(cst_Expected_or_but_found$44,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$137,v,lexbuf)}}} + function buffer_tuple_end$0(v,lexbuf) + {var ocaml_lex_state=492; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_array_sep$1(v,lexbuf) + {var ocaml_lex_state=487; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; + case 2:return long_error$1(cst_Expected_or_but_found$43,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$136,v,lexbuf)}}} + function buffer_array_end$1(v,lexbuf) + {var ocaml_lex_state=485; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_object_sep$1(v,lexbuf) + {var ocaml_lex_state=480; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Bi_outbuf[15],v[1],44); + case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; + case 2:return long_error$1(cst_Expected_or_but_found$42,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$135,v,lexbuf)}}} + function buffer_object_end$1(v,lexbuf) + {var ocaml_lex_state=478; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_space$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme$1(v[1],lexbuf);newline$1(v,lexbuf);continue a; + case 1: + caml_call2(Bi_outbuf[13],v[1],cst$35); + finish_buffer_comment$1(v,lexbuf); + continue a; + case 2: + caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a; + case 3:add_lexeme$1(v[1],lexbuf);continue a; + default:return 0}}}} + function finish_buffer_stringlit$1(v,lexbuf) + {var ocaml_lex_state=450; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$1(v[1],lexbuf); + case 1:return long_error$1(cst_Invalid_string_literal$7,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$132,v,lexbuf)}}} + function buffer_ident$1(v,lexbuf) + {var ocaml_lex_state=466; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_buffer_stringlit$1(v,lexbuf); + case 1:return add_lexeme$1(v[1],lexbuf); + case 2: + return long_error$1(cst_Expected_string_or_identif$10,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$134,v,lexbuf)}}} + function buffer_json$4(counter,v,lexbuf) + {var _dY_=399; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_dY_)} + return caml_trampoline_return + (ocaml_lex_buffer_json_rec$1,[0,v,lexbuf,_dY_])} + function ocaml_lex_buffer_json_rec$1(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; + for(;;) + {var + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(11 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return add_lexeme$1(v[1],lexbuf); + case 1:return finish_buffer_stringlit$1(v,lexbuf); + case 2: + try + {caml_call2(Bi_outbuf[15],v[1],123); + buffer_space$1(v,lexbuf); + buffer_object_end$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_colon$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_object_sep$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_colon$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_dX_) + {_dX_ = caml_wrap_exception(_dX_); + if(_dX_ === End_of_object)return 0; + throw _dX_} + case 3: + try + {caml_call2(Bi_outbuf[15],v[1],91); + buffer_space$1(v,lexbuf); + buffer_array_end$1(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_array_sep$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_dW_) + {_dW_ = caml_wrap_exception(_dW_); + if(_dW_ === End_of_array)return 0; + throw _dW_} + case 4: + try + {caml_call2(Bi_outbuf[15],v[1],40); + buffer_space$1(v,lexbuf); + buffer_tuple_end$0(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_tuple_sep$0(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_dV_) + {_dV_ = caml_wrap_exception(_dV_); + if(_dV_ === End_of_tuple)return 0; + throw _dV_} + case 5: + caml_call2(Bi_outbuf[15],v[1],60); + buffer_space$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + return finish_buffer_variant$0(v,lexbuf); + case 6: + add_lexeme$1(v[1],lexbuf); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return buffer_json$4(counter$0,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 7: + caml_call2(Bi_outbuf[13],v[1],cst$34); + finish_buffer_comment$1(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return buffer_json$4(counter$1,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 8: + caml_call2(Bi_outbuf[15],v[1],10); + newline$1(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return buffer_json$4(counter$2,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 9: + add_lexeme$1(v[1],lexbuf); + if(counter < 50) + {var counter$3=counter + 1 | 0; + return buffer_json$4(counter$3,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 10: + return custom_error$1(cst_Unexpected_end_of_input$131,v,lexbuf); + default:return long_error$1(cst_Invalid_token$14,v,lexbuf)}}} + function buffer_json$1(v,lexbuf) + {return caml_trampoline(buffer_json$4(0,v,lexbuf))} + function finish_buffer_variant$0(v,lexbuf) + {var ocaml_lex_state=461; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call2(Bi_outbuf[15],v[1],58); + buffer_json$1(v,lexbuf); + buffer_space$1(v,lexbuf); + var ocaml_lex_state$1=503; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0:return caml_call2(Bi_outbuf[15],v[1],62); + case 1:return long_error$1(cst_Expected_but_found$45,v,lexbuf); + default: + return custom_error$1 + (cst_Unexpected_end_of_input$139,v,lexbuf)}} + case 1:return caml_call2(Bi_outbuf[15],v[1],62); + case 2:return long_error$1(cst_Expected_or_but_found$41,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}} + function junk$1(lexbuf) + {var ocaml_lex_state=513; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)return caml_call1(lexeme$1,lexbuf); + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + read_junk$1[1] = junk$1; + function read_int8$1(v,lexbuf) + {var n=read_int$1(v,lexbuf); + if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); + return lexer_error$1(cst_Int8_overflow$1,v,lexbuf)} + function read_list$1(read_cell,v,lexbuf) + {var _dU_=read_list_rev$1(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_dU_)} + function read_array$1(read_cell,v,lexbuf) + {var l=read_list_rev$1(read_cell,v,lexbuf); + if(l) + {var + tl=l[2], + x=l[1], + len=caml_call1(Stdlib_List[1],l), + a=caml_make_vect(len,x), + r=[0,tl], + _dR_=len - 2 | 0; + if(! (_dR_ < 0)) + {var i=_dR_; + for(;;) + {var _dS_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _dS_; + r[1] = caml_call1(Stdlib_List[6],r[1]); + var _dT_=i - 1 | 0; + if(0 !== i){var i=_dT_;continue} + break}} + return a} + return [0]} + function read_fields$1(read_field,init_acc,v) + {return function(_dQ_) + {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_dQ_)}} + function from_lexbuf$1(v,opt,lexbuf) + {if(opt)var sth=opt[1],stream=sth;else var stream=0; + read_space$1(v,lexbuf); + if(read_eof$1(lexbuf))throw End_of_input; + var x=read_json$1(v,lexbuf); + if(1 - stream) + {read_space$1(v,lexbuf); + if(1 - read_eof$1(lexbuf)) + long_error$1(cst_Junk_after_end_of_JSON_val$1,v,lexbuf)} + return x} + function from_string$4(buf,fname,lnum,s) + {try + {var + lexbuf=caml_call2(from_string$3,0,s), + v=init_lexer(buf,fname,lnum,0), + _dO_=from_lexbuf$1(v,0,lexbuf); + return _dO_} + catch(_dP_) + {_dP_ = caml_wrap_exception(_dP_); + if(_dP_ === End_of_input)return json_error(cst_Blank_input_data$3); + throw _dP_}} + function from_channel$4(buf,fname,lnum,ic) + {try + {var + lexbuf=caml_call2(from_channel$3,0,ic), + v=init_lexer(buf,fname,lnum,0), + _dM_=from_lexbuf$1(v,0,lexbuf); + return _dM_} + catch(_dN_) + {_dN_ = caml_wrap_exception(_dN_); + if(_dN_ === End_of_input)return json_error(cst_Blank_input_data$4); + throw _dN_}} + function from_file$1(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + try + {var x=from_channel$4(buf,fname,lnum,ic); + caml_call1(Stdlib[93],ic); + return x} + catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} + var Finally$1=[248,cst_Yojson_Raw_Finally,caml_fresh_oo_id(0)]; + function stream_from_lexbuf$1(v,opt,lexbuf) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + function f(i) + {try + {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_} + catch(e) + {e = caml_wrap_exception(e); + if(e === End_of_input){caml_call1(fin,0);return 0} + try + {caml_call1(fin,0)} + catch(fin_e) + {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$1,e,fin_e]} + throw e}} + return caml_call1(Stdlib_Stream[3],f)} + function stream_from_string$1(buf,fname,lnum,s) + {var v=init_lexer(buf,fname,lnum,0); + return stream_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))} + function stream_from_channel$1(buf,fin,fname,lnum,ic) + {var + lexbuf=caml_call2(from_channel$3,0,ic), + v=init_lexer(buf,fname,lnum,0); + return stream_from_lexbuf$1(v,fin,lexbuf)} + function stream_from_file$1(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + function fin(param){return caml_call1(Stdlib[93],ic)} + var + fname$0=fname || [0,file], + lexbuf=caml_call2(from_channel$3,0,ic), + v=init_lexer(buf,fname$0,lnum,0); + return stream_from_lexbuf$1(v,[0,fin],lexbuf)} + function linestream_from_channel$1(buf,opt,fname,_dJ_,ic) + {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; + if(_dJ_)var sth$0=_dJ_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; + function f(i) + {try + {var + line=caml_call1(Stdlib[83],ic), + lnum=lnum0 + i | 0, + _dK_=[0,[0,826371656,from_string$4(buf$0,fname,[0,lnum],line)]]; + return _dK_} + catch(e) + {e = caml_wrap_exception(e); + return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} + return caml_call1(Stdlib_Stream[3],f)} + function linestream_from_file$1(buf,fname,lnum,file) + {var ic=caml_call1(Stdlib[79],file); + function fin(param){return caml_call1(Stdlib[93],ic)} + var fname$0=fname || [0,file]; + return linestream_from_channel$1(buf,[0,fin],fname$0,lnum,ic)} + function prettify$1(std,s) + {return pretty_to_string$2(std,from_string$4(0,0,0,s))} + function compact$1(std,s) + {return to_string$5(0,0,0,from_string$4(0,0,0,s))} + function validate_json$1(path,value){return 0} + var + Yojson= + [0, + version, + Json_error, + json_error, + Lexer_state, + init_lexer, + End_of_array, + End_of_object, + End_of_tuple, + End_of_input, + [0, + to_string$1, + to_channel$1, + to_output$0, + to_file$0, + to_outbuf$0, + stream_to_string$0, + stream_to_channel$0, + stream_to_file$0, + stream_to_outbuf$0, + write_t$0, + sort$0, + write_null$0, + write_bool$0, + write_int$0, + write_float$0, + write_std_float$0, + write_float_fast$0, + write_std_float_fast$0, + write_float_prec$0, + write_std_float_prec$0, + write_string$0, + write_assoc$0, + write_list$0, + write_t$0, + write_std_json$0, + pp$0, + show$0, + equal$0, + pretty_format$0, + pretty_print$0, + pretty_to_string$0, + pretty_to_channel$0, + prettify, + compact, + Finally, + from_string$0, + from_channel$0, + from_file, + init_lexer, + from_lexbuf, + stream_from_string, + stream_from_channel, + stream_from_file, + stream_from_lexbuf, + linestream_from_channel, + linestream_from_file, + read_json, + finish_string$1, + read_string, + read_ident, + map_string, + map_ident, + start_any_variant, + finish_variant, + finish_skip_variant, + read_lt, + read_gt, + read_comma, + finish_stringlit, + finish_skip_stringlit, + finish_escaped_char, + finish_comment, + read_space, + read_eof, + read_null, + read_null_if_possible, + read_bool, + read_int, + read_int8, + read_int32, + read_int64, + read_number, + skip_ident, + read_sequence, + read_list, + read_list_rev, + read_array_end, + read_array_sep, + read_array, + read_tuple, + start_any_tuple, + read_lpar, + read_rpar, + read_tuple_end, + read_tuple_end2, + read_tuple_sep, + read_tuple_sep2, + read_lbr, + read_rbr, + read_fields, + read_abstract_fields, + read_lcurl, + read_object_end, + read_object_sep, + read_colon, + read_json, + skip_json, + buffer_json, + validate_json, + [0, + Type_error, + Undefined, + symbol, + keys, + values, + combine, + member, + index, + map, + to_assoc, + to_option, + to_bool, + to_bool_option, + to_number, + to_number_option, + to_float, + to_float_option, + to_int, + to_int_option, + to_list, + to_string$2, + to_string_option, + convert_each, + filter_map, + flatten, + filter_index, + filter_list, + filter_member, + filter_assoc, + filter_bool, + filter_int, + filter_float, + filter_number, + filter_string]], + [0, + pp$1, + show$1, + equal$1, + to_basic, + to_string$3, + to_channel$2, + to_output$1, + to_file$1, + to_outbuf$1, + stream_to_string$1, + stream_to_channel$1, + stream_to_file$1, + stream_to_outbuf$1, + write_t$1, + sort$1, + write_null$1, + write_bool$1, + write_int$1, + write_float$1, + write_std_float$1, + write_float_fast$1, + write_std_float_fast$1, + write_float_prec$1, + write_std_float_prec$1, + write_string$1, + write_intlit$0, + write_assoc$1, + write_list$1, + write_tuple$0, + write_std_tuple$0, + write_variant$0, + write_std_variant$0, + write_t$1, + write_std_json$1, + pretty_format$1, + pretty_print$1, + pretty_to_string$1, + pretty_to_channel$1, + prettify$0, + compact$0, + Finally$0, + from_string$2, + from_channel$2, + from_file$0, + init_lexer, + from_lexbuf$0, + stream_from_string$0, + stream_from_channel$0, + stream_from_file$0, + stream_from_lexbuf$0, + linestream_from_channel$0, + linestream_from_file$0, + read_json$0, + finish_string$3, + read_string$0, + read_ident$0, + map_string$0, + map_ident$0, + start_any_variant$0, + finish_variant$0, + finish_skip_variant$0, + read_lt$0, + read_gt$0, + read_comma$0, + finish_stringlit$0, + finish_skip_stringlit$0, + finish_escaped_char$0, + finish_comment$0, + read_space$0, + read_eof$0, + read_null$0, + read_null_if_possible$0, + read_bool$0, + read_int$0, + read_int8$0, + read_int32$0, + read_int64$0, + read_number$0, + skip_ident$0, + read_sequence$0, + read_list$0, + read_list_rev$0, + read_array_end$0, + read_array_sep$0, + read_array$0, + read_tuple$0, + start_any_tuple$0, + read_lpar$0, + read_rpar$0, + read_tuple_end$0, + read_tuple_end2$0, + read_tuple_sep$0, + read_tuple_sep2$0, + read_lbr$0, + read_rbr$0, + read_fields$0, + read_abstract_fields$0, + read_lcurl$0, + read_object_end$0, + read_object_sep$0, + read_colon$0, + read_json$0, + skip_json$0, + buffer_json$0, + validate_json$0, + [0, + Type_error$0, + Undefined$0, + symbol$0, + keys$0, + values$0, + combine$0, + member$0, + index$0, + map$0, + to_assoc$0, + to_option$0, + to_bool$0, + to_bool_option$0, + to_number$0, + to_number_option$0, + to_float$0, + to_float_option$0, + to_int$0, + to_int_option$0, + to_list$0, + to_string$4, + to_string_option$0, + convert_each$0, + filter_map$0, + flatten$0, + filter_index$0, + filter_list$0, + filter_member$0, + filter_assoc$0, + filter_bool$0, + filter_int$0, + filter_float$0, + filter_number$0, + filter_string$0]], + [0, + pp$2, + show$2, + equal$2, + to_string$5, + to_channel$3, + to_output$2, + to_file$2, + to_outbuf$2, + stream_to_string$2, + stream_to_channel$2, + stream_to_file$2, + stream_to_outbuf$2, + write_t$2, + sort$2, + write_null$2, + write_bool$2, + write_intlit$1, + write_floatlit$0, + write_stringlit$0, + write_assoc$2, + write_list$2, + write_tuple$1, + write_std_tuple$1, + write_variant$1, + write_std_variant$1, + write_t$2, + write_std_json$2, + pretty_format$2, + pretty_print$2, + pretty_to_string$2, + pretty_to_channel$2, + prettify$1, + compact$1, + Finally$1, + from_string$4, + from_channel$4, + from_file$1, + init_lexer, + from_lexbuf$1, + stream_from_string$1, + stream_from_channel$1, + stream_from_file$1, + stream_from_lexbuf$1, + linestream_from_channel$1, + linestream_from_file$1, + read_json$1, + finish_string$5, + read_string$1, + read_ident$1, + map_string$1, + map_ident$1, + start_any_variant$1, + finish_variant$1, + finish_skip_variant$1, + read_lt$1, + read_gt$1, + read_comma$1, + finish_stringlit$1, + finish_skip_stringlit$1, + finish_escaped_char$1, + finish_comment$1, + read_space$1, + read_eof$1, + read_null$1, + read_null_if_possible$1, + read_bool$1, + read_int$1, + read_int8$1, + read_int32$1, + read_int64$1, + read_number$1, + skip_ident$1, + read_sequence$1, + read_list$1, + read_list_rev$1, + read_array_end$1, + read_array_sep$1, + read_array$1, + read_tuple$1, + start_any_tuple$1, + read_lpar$1, + read_rpar$1, + read_tuple_end$1, + read_tuple_end2$1, + read_tuple_sep$1, + read_tuple_sep2$1, + read_lbr$1, + read_rbr$1, + read_fields$1, + read_abstract_fields$1, + read_lcurl$1, + read_object_end$1, + read_object_sep$1, + read_colon$1, + read_json$1, + skip_json$1, + buffer_json$1, + validate_json$1], + pp, + show, + equal, + to_string, + to_channel, + to_output, + to_file, + to_outbuf, + stream_to_string, + stream_to_channel, + stream_to_file, + stream_to_outbuf, + write_t, + sort, + write_null, + write_bool, + write_int, + write_float, + write_std_float, + write_float_fast, + write_std_float_fast, + write_float_prec, + write_std_float_prec, + write_string, + write_intlit, + write_floatlit, + write_stringlit, + write_assoc, + write_list, + write_tuple, + write_std_tuple, + write_variant, + write_std_variant, + write_t, + write_std_json, + pretty_format, + pretty_print, + pretty_to_string, + pretty_to_channel]; + caml_register_global(1035,Yojson,"Yojson"); + return} + (globalThis)); + + +//# 1 "../../.js/ppx_yojson_conv_lib/ppx_yojson_conv_lib.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_check_bound=runtime.caml_check_bound, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_int_of_string=runtime.caml_int_of_string, + caml_register_global=runtime.caml_register_global, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + var + global_data=runtime.caml_get_global_data(), + cst_fun_of_yojson_cannot_conve= + caml_string_of_jsbytes("fun_of_yojson: cannot convert function values"), + cst_opaque_of_yojson_cannot_co= + caml_string_of_jsbytes("opaque_of_yojson: cannot convert opaque values"), + cst_hashtbl_of_yojson_tuple_li= + caml_string_of_jsbytes("hashtbl_of_yojson: tuple list needed"), + cst_hashtbl_of_yojson_list_nee= + caml_string_of_jsbytes("hashtbl_of_yojson: list needed"), + cst_array_of_yojson_list_neede= + caml_string_of_jsbytes("array_of_yojson: list needed"), + cst_list_of_yojson_list_needed= + caml_string_of_jsbytes("list_of_yojson: list needed"), + cst_triple_of_yojson_invalid_f= + caml_string_of_jsbytes("triple_of_yojson: invalid format"), + cst_pair_of_yojson_invalid_for= + caml_string_of_jsbytes("pair_of_yojson: invalid format"), + cst_nativeint_of_yojson_intege= + caml_string_of_jsbytes("nativeint_of_yojson: integer needed"), + cst_int64_of_yojson_integer_ne= + caml_string_of_jsbytes("int64_of_yojson: integer needed"), + cst_int32_of_yojson_integer_ne= + caml_string_of_jsbytes("int32_of_yojson: integer needed"), + cst_float_of_yojson_float_need= + caml_string_of_jsbytes("float_of_yojson: float needed"), + cst_int_of_yojson_integer_need= + caml_string_of_jsbytes("int_of_yojson: integer needed"), + cst_char_of_yojson_string_must= + caml_string_of_jsbytes + ("char_of_yojson: string must contain one character only"), + cst_char_of_yojson_string_of_s= + caml_string_of_jsbytes("char_of_yojson: string of size one needed"), + cst_bytes_of_yojson_string_nee= + caml_string_of_jsbytes("bytes_of_yojson: string needed"), + cst_string_of_yojson_string_ne= + caml_string_of_jsbytes("string_of_yojson: string needed"), + cst_bool_of_yojson_true_false_= + caml_string_of_jsbytes("bool_of_yojson: true/false needed"), + cst_unit_of_yojson_Null_needed= + caml_string_of_jsbytes("unit_of_yojson: `Null needed"), + cst_Ppx_yojson_conv_lib_Yojson= + caml_string_of_jsbytes + ("Ppx_yojson_conv_lib__Yojson_conv.Of_yojson_error"), + cst$0=caml_string_of_jsbytes(" "), + cst_of_yojson_trying_to_conver= + caml_string_of_jsbytes("_of_yojson: trying to convert an empty type"), + cst_of_yojson_the_empty_list_i= + caml_string_of_jsbytes + ("_of_yojson: the empty list is an invalid polymorphic variant"), + cst_of_yojson_a_nested_list_is= + caml_string_of_jsbytes + ("_of_yojson: a nested list is an invalid polymorphic variant"), + cst_of_yojson_polymorphic_vari$0= + caml_string_of_jsbytes + ("_of_yojson: polymorphic variant tag takes an argument"), + cst_of_yojson_polymorphic_vari= + caml_string_of_jsbytes + ("_of_yojson: polymorphic variant does not take arguments"), + cst_of_yojson_no_matching_vari= + caml_string_of_jsbytes("_of_yojson: no matching variant found"), + cst_of_yojson_cannot_convert_v= + caml_string_of_jsbytes + ("_of_yojson: cannot convert values of types resulting from polymorphic record fields"), + cst_of_yojson_list_instead_of_= + caml_string_of_jsbytes + ("_of_yojson: list instead of atom for record expected"), + cst_extra_fields=caml_string_of_jsbytes("extra fields"), + cst_duplicate_fields=caml_string_of_jsbytes("duplicate fields"), + cst=caml_string_of_jsbytes(" "), + cst_of_yojson_unexpected_varia= + caml_string_of_jsbytes("_of_yojson: unexpected variant constructor"), + cst_of_yojson_expected_a_varia$0= + caml_string_of_jsbytes + ("_of_yojson: expected a variant type, saw an empty list"), + cst_of_yojson_expected_a_varia= + caml_string_of_jsbytes + ("_of_yojson: expected a variant type, saw a nested list"), + cst_of_yojson_this_constructor$0= + caml_string_of_jsbytes + ("_of_yojson: this constructor requires arguments"), + cst_of_yojson_this_constructor= + caml_string_of_jsbytes + ("_of_yojson: this constructor does not take arguments"), + cst_Ppx_yojson_conv_lib_Yojson$0= + caml_string_of_jsbytes + ("Ppx_yojson_conv_lib__Yojson_conv_error.No_variant_match"), + Stdlib_MoreLabels=global_data.Stdlib__MoreLabels, + Stdlib_ListLabels=global_data.Stdlib__ListLabels, + Stdlib_Lazy=global_data.Stdlib__Lazy, + Stdlib_BytesLabels=global_data.Stdlib__BytesLabels, + Stdlib=global_data.Stdlib, + CamlinternalLazy=global_data.CamlinternalLazy, + Stdlib_Nativeint=global_data.Stdlib__Nativeint, + Stdlib_Int64=global_data.Stdlib__Int64, + Stdlib_Int32=global_data.Stdlib__Int32, + Stdlib_StringLabels=global_data.Stdlib__StringLabels, + Stdlib_Printf=global_data.Stdlib__Printf, + Ppx_yojson_conv_lib=[0]; + caml_register_global(45,Ppx_yojson_conv_lib,"Ppx_yojson_conv_lib__"); + var Ppx_yojson_conv_lib_Yojsonable=[0]; + caml_register_global + (46, + Ppx_yojson_conv_lib_Yojsonable, + "Ppx_yojson_conv_lib__Yojsonable_intf"); + var + _b_=[0,-976970511,caml_string_of_jsbytes("")], + _a_=[0,-976970511,caml_string_of_jsbytes("")], + _g_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes("_of_yojson: polymorphic variant tag "), + [3, + 0, + [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]], + caml_string_of_jsbytes + ("%s_of_yojson: polymorphic variant tag %S has incorrect number of arguments")], + _f_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes + ("_of_yojson: the following record elements were undefined: "), + [2,0,0]]], + caml_string_of_jsbytes + ("%s_of_yojson: the following record elements were undefined: %s")], + _e_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes("_of_yojson: "), + [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]], + caml_string_of_jsbytes("%s_of_yojson: %s: %s")], + _d_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes("_of_yojson: sum tag "), + [3, + 0, + [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]], + caml_string_of_jsbytes + ("%s_of_yojson: sum tag %S has incorrect number of arguments")], + _c_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes("_of_yojson: tuple of size "), + [4,0,0,0,[11,caml_string_of_jsbytes(" expected"),0]]]], + caml_string_of_jsbytes("%s_of_yojson: tuple of size %d expected")]; + function yojson_of_unit(param){return 870828711} + function yojson_of_bool(b){return [0,737456202,b]} + function yojson_of_string(str){return [0,-976970511,str]} + function yojson_of_bytes(bytes) + {return [0,-976970511,caml_call1(Stdlib_BytesLabels[6],bytes)]} + function yojson_of_char(c) + {return [0,-976970511,caml_call2(Stdlib_StringLabels[1],1,c)]} + function yojson_of_int(n){return [0,3654863,n]} + function yojson_of_float(n){return [0,365180284,n]} + function yojson_of_int32(n) + {return [0,-752863768,caml_call1(Stdlib_Int32[14],n)]} + function yojson_of_int64(n) + {return [0,-752863768,caml_call1(Stdlib_Int64[14],n)]} + function yojson_of_nativeint(n) + {return [0,-752863768,caml_call1(Stdlib_Nativeint[15],n)]} + function yojson_of_ref(yojson_of_a,rf) + {return caml_call1(yojson_of_a,rf[1])} + function yojson_of_lazy_t(yojson_of_a,lv) + {var + _I_=runtime.caml_obj_tag(lv), + _J_=250 === _I_?lv[1]:246 === _I_?caml_call1(CamlinternalLazy[2],lv):lv; + return caml_call1(yojson_of_a,_J_)} + function yojson_of_option(yojson_of_a,param) + {if(param){var x=param[1];return caml_call1(yojson_of_a,x)} + return 870828711} + function yojson_of_pair(yojson_of_a,yojson_of_b,param) + {var b=param[2],a=param[1],_H_=[0,caml_call1(yojson_of_b,b),0]; + return [0,848054398,[0,caml_call1(yojson_of_a,a),_H_]]} + function yojson_of_triple(yojson_of_a,yojson_of_b,yojson_of_c,param) + {var + c=param[3], + b=param[2], + a=param[1], + _F_=[0,caml_call1(yojson_of_c,c),0], + _G_=[0,caml_call1(yojson_of_b,b),_F_]; + return [0,848054398,[0,caml_call1(yojson_of_a,a),_G_]]} + function yojson_of_list(yojson_of_a,lst) + {var _E_=caml_call2(Stdlib_ListLabels[21],yojson_of_a,lst); + return [0,848054398,caml_call1(Stdlib_ListLabels[9],_E_)]} + function yojson_of_array(yojson_of_a,ar) + {var lst_ref=[0,0],_B_=ar.length - 1 - 1 | 0; + if(! (_B_ < 0)) + {var i=_B_; + for(;;) + {var _C_=lst_ref[1]; + lst_ref[1] + = + [0,caml_call1(yojson_of_a,caml_check_bound(ar,i)[1 + i]),_C_]; + var _D_=i - 1 | 0; + if(0 !== i){var i=_D_;continue} + break}} + return [0,848054398,lst_ref[1]]} + function yojson_of_hashtbl(yojson_of_key,yojson_of_val,htbl) + {function coll(k,v,acc) + {var _A_=[0,caml_call1(yojson_of_val,v),0]; + return [0,[0,848054398,[0,caml_call1(yojson_of_key,k),_A_]],acc]} + return [0,848054398,caml_call3(Stdlib_MoreLabels[1][14],coll,htbl,0)]} + function yojson_of_opaque(param){return _a_} + function yojson_of_fun(param){return _b_} + var + Of_yojson_error=[248,cst_Ppx_yojson_conv_lib_Yojson,caml_fresh_oo_id(0)], + record_check_extra_fields=[0,1]; + function of_yojson_error_exn(exc,yojson) + {throw [0,Of_yojson_error,exc,yojson]} + function of_yojson_error(what,yojson) + {throw [0,Of_yojson_error,[0,Stdlib[7],what],yojson]} + function unit_of_yojson(yojson) + {return 870828711 === yojson + ?0 + :of_yojson_error(cst_unit_of_yojson_Null_needed,yojson)} + function bool_of_yojson(yojson) + {if(typeof yojson !== "number" && 737456202 === yojson[1]) + {var v=yojson[2];return v} + return of_yojson_error(cst_bool_of_yojson_true_false_,yojson)} + function string_of_yojson(yojson) + {if(typeof yojson !== "number" && -976970511 === yojson[1]) + {var str=yojson[2];return str} + return of_yojson_error(cst_string_of_yojson_string_ne,yojson)} + function bytes_of_yojson(yojson) + {if(typeof yojson !== "number" && -976970511 === yojson[1]) + {var str=yojson[2];return caml_call1(Stdlib_BytesLabels[5],str)} + return of_yojson_error(cst_bytes_of_yojson_string_nee,yojson)} + function char_of_yojson(yojson) + {if(typeof yojson !== "number" && -976970511 === yojson[1]) + {var str=yojson[2]; + if(1 !== runtime.caml_ml_string_length(str)) + of_yojson_error(cst_char_of_yojson_string_must,yojson); + return runtime.caml_string_get(str,0)} + return of_yojson_error(cst_char_of_yojson_string_of_s,yojson)} + function int_of_yojson(yojson) + {if(typeof yojson !== "number" && 3654863 === yojson[1]) + {var v=yojson[2];return v} + return of_yojson_error(cst_int_of_yojson_integer_need,yojson)} + function float_of_yojson(yojson) + {if(typeof yojson !== "number") + {var _z_=yojson[1]; + if(-752863768 === _z_) + {var str=yojson[2];return runtime.caml_float_of_string(str)} + if(3654863 === _z_){var i=yojson[2];return i} + if(365180284 === _z_){var v=yojson[2];return v}} + return of_yojson_error(cst_float_of_yojson_float_need,yojson)} + function int32_of_yojson(yojson) + {if(typeof yojson !== "number") + {var _y_=yojson[1]; + if(-752863768 === _y_) + {var str=yojson[2];return caml_int_of_string(str)} + if(3654863 === _y_){var v=yojson[2];return v}} + return of_yojson_error(cst_int32_of_yojson_integer_ne,yojson)} + function int64_of_yojson(yojson) + {if(typeof yojson !== "number") + {var _x_=yojson[1]; + if(-752863768 === _x_) + {var str=yojson[2];return runtime.caml_int64_of_string(str)} + if(3654863 === _x_) + {var v=yojson[2];return runtime.caml_int64_of_int32(v)}} + return of_yojson_error(cst_int64_of_yojson_integer_ne,yojson)} + function nativeint_of_yojson(yojson) + {if(typeof yojson !== "number") + {var _w_=yojson[1]; + if(-752863768 === _w_) + {var str=yojson[2];return caml_int_of_string(str)} + if(3654863 === _w_){var v=yojson[2];return v}} + return of_yojson_error(cst_nativeint_of_yojson_intege,yojson)} + function ref_of_yojson(a_of_yojson,yojson) + {return [0,caml_call1(a_of_yojson,yojson)]} + function lazy_t_of_yojson(a_of_yojson,yojson) + {var _v_=caml_call1(a_of_yojson,yojson); + return caml_call1(Stdlib_Lazy[4],_v_)} + function option_of_yojson(a_of_yojson,yojson) + {return 870828711 === yojson?0:[0,caml_call1(a_of_yojson,yojson)]} + function pair_of_yojson(a_of_yojson,b_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var _t_=yojson[2]; + if(_t_) + {var _u_=_t_[2]; + if(_u_ && ! _u_[2]) + {var + b_yojson=_u_[1], + a_yojson=_t_[1], + a=caml_call1(a_of_yojson,a_yojson), + b=caml_call1(b_of_yojson,b_yojson); + return [0,a,b]}}} + return of_yojson_error(cst_pair_of_yojson_invalid_for,yojson)} + function triple_of_yojson(a_of_yojson,b_of_yojson,c_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var _q_=yojson[2]; + if(_q_) + {var _r_=_q_[2]; + if(_r_) + {var _s_=_r_[2]; + if(_s_ && ! _s_[2]) + {var + c_yojson=_s_[1], + b_yojson=_r_[1], + a_yojson=_q_[1], + a=caml_call1(a_of_yojson,a_yojson), + b=caml_call1(b_of_yojson,b_yojson), + c=caml_call1(c_of_yojson,c_yojson); + return [0,a,b,c]}}}} + return of_yojson_error(cst_triple_of_yojson_invalid_f,yojson)} + function list_of_yojson(a_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var + lst=yojson[2], + rev_lst=caml_call2(Stdlib_ListLabels[21],a_of_yojson,lst); + return caml_call1(Stdlib_ListLabels[9],rev_lst)} + return of_yojson_error(cst_list_of_yojson_list_needed,yojson)} + function array_of_yojson(a_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var _o_=yojson[2]; + if(_o_) + {var + t=_o_[2], + h=_o_[1], + len=caml_call1(Stdlib_ListLabels[1],t) + 1 | 0, + res=runtime.caml_make_vect(len,caml_call1(a_of_yojson,h)), + i=1, + param=t; + for(;;) + {if(param) + {var t$0=param[2],h$0=param[1],_p_=caml_call1(a_of_yojson,h$0); + caml_check_bound(res,i)[1 + i] = _p_; + var i$0=i + 1 | 0,i=i$0,param=t$0; + continue} + return res}} + return [0]} + return of_yojson_error(cst_array_of_yojson_list_neede,yojson)} + function hashtbl_of_yojson(key_of_yojson,val_of_yojson,yojson) + {if(typeof yojson !== "number" && 848054398 === yojson[1]) + {var + lst=yojson[2], + htbl=caml_call2(Stdlib_MoreLabels[1][1],0,0), + act= + function(param) + {if(typeof param !== "number" && 848054398 === param[1]) + {var _k_=param[2]; + if(_k_) + {var _l_=_k_[2]; + if(_l_ && ! _l_[2]) + {var + v_yojson=_l_[1], + k_yojson=_k_[1], + _m_=caml_call1(val_of_yojson,v_yojson), + _n_=caml_call1(key_of_yojson,k_yojson); + return caml_call3(Stdlib_MoreLabels[1][5],htbl,_n_,_m_)}}} + return of_yojson_error(cst_hashtbl_of_yojson_tuple_li,yojson)}; + caml_call2(Stdlib_ListLabels[17],act,lst); + return htbl} + return of_yojson_error(cst_hashtbl_of_yojson_list_nee,yojson)} + function opaque_of_yojson(yojson) + {return of_yojson_error(cst_opaque_of_yojson_cannot_co,yojson)} + function fun_of_yojson(yojson) + {return of_yojson_error(cst_fun_of_yojson_cannot_conve,yojson)} + var + Ppx_yojson_conv_lib_Yojson_con= + [0, + yojson_of_unit, + yojson_of_bool, + yojson_of_string, + yojson_of_bytes, + yojson_of_char, + yojson_of_int, + yojson_of_float, + yojson_of_int32, + yojson_of_int64, + yojson_of_nativeint, + yojson_of_ref, + yojson_of_lazy_t, + yojson_of_option, + yojson_of_pair, + yojson_of_triple, + yojson_of_list, + yojson_of_array, + yojson_of_hashtbl, + yojson_of_opaque, + yojson_of_fun, + Of_yojson_error, + record_check_extra_fields, + of_yojson_error, + of_yojson_error_exn, + unit_of_yojson, + bool_of_yojson, + string_of_yojson, + bytes_of_yojson, + char_of_yojson, + int_of_yojson, + float_of_yojson, + int32_of_yojson, + int64_of_yojson, + nativeint_of_yojson, + ref_of_yojson, + lazy_t_of_yojson, + option_of_yojson, + pair_of_yojson, + triple_of_yojson, + list_of_yojson, + array_of_yojson, + hashtbl_of_yojson, + opaque_of_yojson, + fun_of_yojson, + [0, + yojson_of_unit, + yojson_of_bool, + yojson_of_string, + yojson_of_bytes, + yojson_of_char, + yojson_of_int, + yojson_of_float, + yojson_of_int32, + yojson_of_int64, + yojson_of_nativeint, + yojson_of_ref, + yojson_of_lazy_t, + yojson_of_option, + yojson_of_list, + yojson_of_array, + yojson_of_hashtbl, + unit_of_yojson, + bool_of_yojson, + string_of_yojson, + bytes_of_yojson, + char_of_yojson, + int_of_yojson, + float_of_yojson, + int32_of_yojson, + int64_of_yojson, + nativeint_of_yojson, + ref_of_yojson, + lazy_t_of_yojson, + option_of_yojson, + list_of_yojson, + array_of_yojson, + hashtbl_of_yojson]]; + caml_register_global + (57,Ppx_yojson_conv_lib_Yojson_con,"Ppx_yojson_conv_lib__Yojson_conv"); + var sprintf=Stdlib_Printf[4]; + function tuple_of_size_n_expected(loc,n,yojson) + {return of_yojson_error(caml_call3(sprintf,_c_,loc,n),yojson)} + function stag_no_args(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_this_constructor), + yojson)} + function stag_incorrect_n_args(loc,tag,yojson) + {var msg=caml_call3(sprintf,_d_,loc,tag); + return of_yojson_error(msg,yojson)} + function stag_takes_args(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_this_constructor$0), + yojson)} + function nested_list_invalid_sum(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_expected_a_varia), + yojson)} + function empty_list_invalid_sum(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_expected_a_varia$0), + yojson)} + function unexpected_stag(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_unexpected_varia), + yojson)} + function record_superfluous_fields(what,loc,rev_fld_names,yojson) + {var + _j_=caml_call1(Stdlib_ListLabels[9],rev_fld_names), + fld_names_str=caml_call2(Stdlib_StringLabels[6],cst,_j_), + msg=caml_call4(sprintf,_e_,loc,what,fld_names_str); + return of_yojson_error(msg,yojson)} + function record_duplicate_fields(loc,rev_fld_names,yojson) + {return record_superfluous_fields + (cst_duplicate_fields,loc,rev_fld_names,yojson)} + function record_extra_fields(loc,rev_fld_names,yojson) + {return record_superfluous_fields + (cst_extra_fields,loc,rev_fld_names,yojson)} + function record_get_undefined_loop(fields,param) + {var fields$0=fields,param$0=param; + for(;;) + {if(param$0) + {var _h_=param$0[1]; + if(_h_[1]) + {var + param$1=param$0[2], + field=_h_[2], + fields$1=[0,field,fields$0], + fields$0=fields$1, + param$0=param$1; + continue} + var param$2=param$0[2],param$0=param$2; + continue} + var _i_=caml_call1(Stdlib_ListLabels[9],fields$0); + return caml_call2(Stdlib_StringLabels[6],cst$0,_i_)}} + function record_undefined_elements(loc,yojson,lst) + {var + undefined$0=record_get_undefined_loop(0,lst), + msg=caml_call3(sprintf,_f_,loc,undefined$0); + return of_yojson_error(msg,yojson)} + function record_list_instead_atom(loc,yojson) + {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_list_instead_of_); + return of_yojson_error(msg,yojson)} + function record_poly_field_value(loc,yojson) + {var msg=caml_call2(Stdlib[28],loc,cst_of_yojson_cannot_convert_v); + return of_yojson_error(msg,yojson)} + var + No_variant_match= + [248,cst_Ppx_yojson_conv_lib_Yojson$0,caml_fresh_oo_id(0)]; + function no_variant_match(param){throw No_variant_match} + function no_matching_variant_found(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_no_matching_vari), + yojson)} + function ptag_no_args(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari), + yojson)} + function ptag_incorrect_n_args(loc,cnstr,yojson) + {var msg=caml_call3(sprintf,_g_,loc,cnstr); + return of_yojson_error(msg,yojson)} + function ptag_takes_args(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_polymorphic_vari$0), + yojson)} + function nested_list_invalid_poly_var(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_a_nested_list_is), + yojson)} + function empty_list_invalid_poly_var(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_the_empty_list_i), + yojson)} + function empty_type(loc,yojson) + {return of_yojson_error + (caml_call2(Stdlib[28],loc,cst_of_yojson_trying_to_conver), + yojson)} + var + Ppx_yojson_conv_lib_Yojson_con$0= + [0, + sprintf, + tuple_of_size_n_expected, + stag_no_args, + stag_incorrect_n_args, + stag_takes_args, + nested_list_invalid_sum, + empty_list_invalid_sum, + unexpected_stag, + record_superfluous_fields, + record_duplicate_fields, + record_extra_fields, + record_get_undefined_loop, + record_undefined_elements, + record_list_instead_atom, + record_poly_field_value, + No_variant_match, + no_variant_match, + no_matching_variant_found, + ptag_no_args, + ptag_incorrect_n_args, + ptag_takes_args, + nested_list_invalid_poly_var, + empty_list_invalid_poly_var, + empty_type]; + caml_register_global + (59, + Ppx_yojson_conv_lib_Yojson_con$0, + "Ppx_yojson_conv_lib__Yojson_conv_error"); + var Option=[0]; + function symbol(x){return x[1]} + var Ppx_yojson_conv_lib$0=[0,Option,symbol]; + caml_register_global(60,Ppx_yojson_conv_lib$0,"Ppx_yojson_conv_lib"); + return} + (globalThis)); + + +//# 1 "../../runtimes/ocaml/.runtime_ocaml.objs/runtime_ocaml.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_check_bound=runtime.caml_check_bound, + caml_equal=runtime.caml_equal, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_register_global=runtime.caml_register_global, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + function caml_call5(f,a0,a1,a2,a3,a4) + {return f.length == 5 + ?f(a0,a1,a2,a3,a4) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} + function caml_call6(f,a0,a1,a2,a3,a4,a5) + {return f.length == 6 + ?f(a0,a1,a2,a3,a4,a5) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])} + function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) + {return f.length == 7 + ?f(a0,a1,a2,a3,a4,a5,a6) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} + function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8) + {return f.length == 9 + ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])} + var + global_data=runtime.caml_get_global_data(), + cst$3=caml_string_of_jsbytes("."), + cst$4=caml_string_of_jsbytes("."), + partial= + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [17, + [0,caml_string_of_jsbytes("@;<1 -2>"),1,-2], + [12,93,[17,0,[12,32,[17,0,0]]]]]]]]]], + cst$5=caml_string_of_jsbytes("."), + cst$6=caml_string_of_jsbytes("; "), + cst$7=caml_string_of_jsbytes("."), + partial$0=[11,caml_string_of_jsbytes(""),0], + partial$1= + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15, + [12, + 93, + [17, + 0, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]], + partial$2=[0,caml_string_of_jsbytes("@ "),1,0], + partial$3= + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [12, + 44, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [11, + caml_string_of_jsbytes("output:"), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [12, + 44, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [11,caml_string_of_jsbytes("body:"),[17,partial$2,partial$1]]]]]]]]]]], + cst$8=caml_string_of_jsbytes("."), + partial$4=[11,caml_string_of_jsbytes(""),0], + partial$5= + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [12, + 93, + [17, + 0, + [17,0,[17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[12,125,0]]]]]]]]]], + partial$6= + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + partial$7= + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15, + [17, + 0, + [11, + caml_string_of_jsbytes("],"), + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [11, + caml_string_of_jsbytes("body:"), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [18,partial$6,partial$5]]]]]]]]]]], + cst_unreachable_due_to_the_is_= + caml_string_of_jsbytes("unreachable due to the [is_subscope_call] test"), + cst_unreachable_due_to_the_is_$0= + caml_string_of_jsbytes + ("unreachable due to the [is_subscope_input_var_def] test"), + cst$14=caml_string_of_jsbytes("]"), + cst$15=caml_string_of_jsbytes("["), + cst_expected_variable_definiti= + caml_string_of_jsbytes + (" ]): expected variable definition (function output), found: "), + cst$16=caml_string_of_jsbytes(", "), + cst_Invalid_function_call= + caml_string_of_jsbytes("Invalid function call ([ "), + cst_expected_variable_definiti$0= + caml_string_of_jsbytes + (" ]): expected variable definition (function output), found: end of tokens"), + cst$17=caml_string_of_jsbytes(", "), + cst_Invalid_function_call$0= + caml_string_of_jsbytes("Invalid function call ([ "), + cst_Unexpected_event=caml_string_of_jsbytes("Unexpected event: "), + cst_Missing_function_output_va= + caml_string_of_jsbytes("Missing function output variable definition."), + cst_Invalid_start_of_function_= + caml_string_of_jsbytes("Invalid start of function call."), + cst_input=caml_string_of_jsbytes("input"), + cst_output$0=caml_string_of_jsbytes("output"), + cst$9=caml_string_of_jsbytes(" ])"), + cst$10=caml_string_of_jsbytes(", "), + cst$11=caml_string_of_jsbytes(" ])"), + cst$12=caml_string_of_jsbytes(", "), + cst$13=caml_string_of_jsbytes(", "), + partial$8=[12,41,0], + cst_body=caml_string_of_jsbytes("body"), + cst_inputs=caml_string_of_jsbytes("inputs"), + cst_name=caml_string_of_jsbytes("name"), + cst_fun_calls=caml_string_of_jsbytes("fun_calls"), + cst_value=caml_string_of_jsbytes("value"), + cst_name$0=caml_string_of_jsbytes("name"), + cst_pos=caml_string_of_jsbytes("pos"), + cst_output=caml_string_of_jsbytes("output"), + cst_body$0=caml_string_of_jsbytes("body"), + cst_fun_inputs=caml_string_of_jsbytes("fun_inputs"), + cst_fun_name=caml_string_of_jsbytes("fun_name"), + cst=caml_string_of_jsbytes("\xe2\x80\xa6"), + cst$2=caml_string_of_jsbytes(""), + cst$1=caml_string_of_jsbytes("-"), + cst$0=caml_string_of_jsbytes(""), + cst_law_headings=caml_string_of_jsbytes("law_headings"), + cst_end_column=caml_string_of_jsbytes("end_column"), + cst_end_line=caml_string_of_jsbytes("end_line"), + cst_start_column=caml_string_of_jsbytes("start_column"), + cst_start_line=caml_string_of_jsbytes("start_line"), + cst_filename=caml_string_of_jsbytes("filename"), + cst_Runtime_ocaml_Runtime_Empt= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.EmptyError"), + cst_Runtime_ocaml_Runtime_Asse= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.AssertionFailed"), + cst_Runtime_ocaml_Runtime_Conf= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.ConflictError"), + cst_Runtime_ocaml_Runtime_Unco= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.UncomparableDurations"), + cst_Runtime_ocaml_Runtime_Indi= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.IndivisibleDurations"), + cst_Runtime_ocaml_Runtime_Impo= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.ImpossibleDate"), + cst_Runtime_ocaml_Runtime_NoVa= + caml_string_of_jsbytes("Runtime_ocaml.Runtime.NoValueProvided"), + Stdlib_String=global_data.Stdlib__String, + Stdlib_Format=global_data.Stdlib__Format, + Stdlib_Array=global_data.Stdlib__Array, + Stdlib_Option=global_data.Stdlib__Option, + Stdlib=global_data.Stdlib, + Dates_calc_Dates=global_data.Dates_calc__Dates, + Q=global_data.Q, + Z=global_data.Z, + Stdlib_List=global_data.Stdlib__List, + Assert_failure=global_data.Assert_failure, + Stdlib_ListLabels=global_data.Stdlib__ListLabels, + Stdlib_Printf=global_data.Stdlib__Printf, + Yojson=global_data.Yojson, + Ppx_yojson_conv_lib_Yojson_con= + global_data.Ppx_yojson_conv_lib__Yojson_conv, + Stdlib_Map=global_data.Stdlib__Map, + Runtime_ocaml=[0]; + caml_register_global(115,Runtime_ocaml,"Runtime_ocaml"); + var + _u_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [11, + caml_string_of_jsbytes("@ %s:@ %a@]")], + _v_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(" line "), + [4,0,0,0,[11,caml_string_of_jsbytes(" to "),[4,0,0,0,0]]]]], + caml_string_of_jsbytes("%s line %d to %d")], + _w_= + [0, + [11,caml_string_of_jsbytes("no_pos"),0], + caml_string_of_jsbytes("no_pos")], + _x_= + [0, + [17,[0,caml_string_of_jsbytes("@ "),1,0],0], + caml_string_of_jsbytes("@ ")], + _y_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(",@ ")], + _z_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [11, + caml_string_of_jsbytes(""), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [2, + 0, + [11, + caml_string_of_jsbytes(": "), + [15, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [11, + caml_string_of_jsbytes("computed from"), + [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,58,partial]]]]]]]]]], + caml_string_of_jsbytes + ("@[@ %s: %a@ computed from@ :@ @[[@ %a@;<1 -2>]@] @]")], + _M_= + [0, + [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes(";@ ")], + _K_= + [0, + [12,44,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]], + caml_string_of_jsbytes(",@,")], + _J_= + [0, + [2,0,[11,caml_string_of_jsbytes(": "),[15,0]]], + caml_string_of_jsbytes("%s: %a")], + _A_=[0,[11,caml_string_of_jsbytes("()"),0],caml_string_of_jsbytes("()")], + _B_= + [0,[11,caml_string_of_jsbytes("fun"),0],caml_string_of_jsbytes("fun")], + _C_=[0,[9,0,0],caml_string_of_jsbytes("%b")], + _D_= + [0, + [2,0,[11,caml_string_of_jsbytes("\xe2\x82\xac"),0]], + caml_string_of_jsbytes("%s\xe2\x82\xac")], + _E_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _F_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _G_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _H_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _I_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _L_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2, + 0, + [11, + caml_string_of_jsbytes(" = {"), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,[17,0,0]]]]]]]], + caml_string_of_jsbytes("@[%s = {@ %a@;<1 -2>}@]")], + _N_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [15, + [17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,[17,0,0]]]]]]], + caml_string_of_jsbytes("@[[@ %a@;<1 -2>]@]")], + _O_=[0,[15,0],caml_string_of_jsbytes("%a")], + _P_=[0,[15,0],caml_string_of_jsbytes("%a")], + _Q_=[0,0], + _R_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [11, + caml_string_of_jsbytes(""), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [2, + 0, + [11, + caml_string_of_jsbytes(" :="), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [12, + 123, + [18, + [1,[0,partial$0,caml_string_of_jsbytes("")]], + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [11,caml_string_of_jsbytes("input:"),partial$3]]]]]]]]]], + caml_string_of_jsbytes + ("@[@ %s :=@ {@[@ input:@ %a,@ output:@ %a,@ body:@ [@,%a]@]@,@]@,}")], + _S_=[0,0], + _T_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [11, + caml_string_of_jsbytes(""), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [2, + 0, + [11, + caml_string_of_jsbytes(" :="), + [17, + [0,caml_string_of_jsbytes("@ "),1,0], + [12, + 123, + [18, + [1,[0,partial$4,caml_string_of_jsbytes("")]], + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [11,caml_string_of_jsbytes("inputs:"),partial$7]]]]]]]]]], + caml_string_of_jsbytes + ("@[@ %s :=@ {@[@,inputs:@ @[[@,%a@]],@,body:@ @[[@ %a@ ]@]@]@]@,}")], + _U_= + [0, + [17,[0,caml_string_of_jsbytes("@ "),1,0],0], + caml_string_of_jsbytes("@ ")], + _V_=[0,[17,4,0],caml_string_of_jsbytes("@.")], + _X_=[0,0,caml_string_of_jsbytes("")], + _W_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _ae_=[0,0], + _af_=[0,0], + _ag_=[0,0], + _ab_=[0,0,0], + _ac_=[0,caml_string_of_jsbytes("runtimes/ocaml/runtime.ml"),512,19], + _ad_= + [0, + [11, + caml_string_of_jsbytes("An error occurred while parsing raw events: "), + [2,0,[12,10,0]]], + caml_string_of_jsbytes + ("An error occurred while parsing raw events: %s\n")], + _Z_= + [0, + [11,caml_string_of_jsbytes("BeginCall([ "),0], + caml_string_of_jsbytes("BeginCall([ ")], + ___= + [0, + [11,caml_string_of_jsbytes("EndCall([ "),0], + caml_string_of_jsbytes("EndCall([ ")], + _$_= + [0, + [11, + caml_string_of_jsbytes("VariableDefinition([ "), + [2,0,[11,caml_string_of_jsbytes(" ], "),[2,0,[12,41,0]]]]], + caml_string_of_jsbytes("VariableDefinition([ %s ], %s)")], + _aa_= + [0, + [11, + caml_string_of_jsbytes("DecisionTaken("), + [2, + 0, + [12, + 58, + [4, + 0, + 0, + 0, + [12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,partial$8]]]]]]]]]], + caml_string_of_jsbytes("DecisionTaken(%s:%d.%d-%d.%d)")], + _r_=[0,-976970511,caml_string_of_jsbytes("VarComputation")], + _s_=[0,-976970511,caml_string_of_jsbytes("FunCall")], + _t_=[0,-976970511,caml_string_of_jsbytes("SubScopeCall")], + _g_=[0,848054398,[0,[0,-976970511,caml_string_of_jsbytes("Unit")],0]], + _h_= + [0, + 848054398, + [0,[0,-976970511,caml_string_of_jsbytes("Unembeddable")],0]], + _i_=[0,-976970511,caml_string_of_jsbytes("Bool")], + _j_=[0,-976970511,caml_string_of_jsbytes("Money")], + _k_=[0,-976970511,caml_string_of_jsbytes("Integer")], + _l_=[0,-976970511,caml_string_of_jsbytes("Decimal")], + _m_=[0,-976970511,caml_string_of_jsbytes("Date")], + _n_=[0,-976970511,caml_string_of_jsbytes("Duration")], + _o_=[0,-976970511,caml_string_of_jsbytes("Enum")], + _p_=[0,-976970511,caml_string_of_jsbytes("Struct")], + _q_=[0,-976970511,caml_string_of_jsbytes("Array")], + _f_=[0,[15,0],caml_string_of_jsbytes("%a")], + _e_=[0,[15,0],caml_string_of_jsbytes("%a")], + _c_=[0,[15,0],caml_string_of_jsbytes("%a")], + _b_=[0,-1014801911,0], + _d_= + [0,[2,0,[15,[12,46,[15,[2,0,0]]]]],caml_string_of_jsbytes("%s%a.%a%s")], + _a_=[0,[8,[0,0,0],0,[0,2],0],caml_string_of_jsbytes("%.2f")]; + function yojson_of_source_position(param) + {var + v_law_headings=param[6], + v_end_column=param[5], + v_end_line=param[4], + v_start_column=param[3], + v_start_line=param[2], + v_filename=param[1], + arg= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + Ppx_yojson_conv_lib_Yojson_con[45][3], + v_law_headings), + bnds=[0,[0,cst_law_headings,arg],0], + arg$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_column), + bnds$0=[0,[0,cst_end_column,arg$0],bnds], + arg$1=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_end_line), + bnds$1=[0,[0,cst_end_line,arg$1],bnds$0], + arg$2=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_column), + bnds$2=[0,[0,cst_start_column,arg$2],bnds$1], + arg$3=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][6],v_start_line), + bnds$3=[0,[0,cst_start_line,arg$3],bnds$2], + arg$4=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v_filename), + bnds$4=[0,[0,cst_filename,arg$4],bnds$3]; + return [0,963043957,bnds$4]} + var + EmptyError=[248,cst_Runtime_ocaml_Runtime_Empt,caml_fresh_oo_id(0)], + AssertionFailed=[248,cst_Runtime_ocaml_Runtime_Asse,caml_fresh_oo_id(0)], + ConflictError=[248,cst_Runtime_ocaml_Runtime_Conf,caml_fresh_oo_id(0)], + UncomparableDurations= + [248,cst_Runtime_ocaml_Runtime_Unco,caml_fresh_oo_id(0)], + IndivisibleDurations= + [248,cst_Runtime_ocaml_Runtime_Indi,caml_fresh_oo_id(0)], + ImpossibleDate=[248,cst_Runtime_ocaml_Runtime_Impo,caml_fresh_oo_id(0)], + NoValueProvided=[248,cst_Runtime_ocaml_Runtime_NoVa,caml_fresh_oo_id(0)]; + function money_of_cents_string(cents){return caml_call1(Z[5],cents)} + function money_of_units_int(units){return caml_call2(Z[54],units,100)} + function money_of_cents_integer(cents){return cents} + function money_to_float(m){return caml_call1(Z[30],m) / 100.} + function money_of_decimal(d) + {var _cM_=caml_call1(Q[9],100),_cN_=caml_call2(Q[40],d,_cM_); + return caml_call1(Q[29],_cN_)} + function money_to_string(m) + {var + _cI_=caml_call1(Q[9],100), + _cJ_=caml_call1(Q[8],m), + _cK_=caml_call2(Q[55],_cJ_,_cI_), + _cL_=caml_call1(Q[35],_cK_); + return caml_call2(Stdlib_Format[133],_a_,_cL_)} + function money_to_cents(m){return m} + function money_round(m) + {var match=runtime.ml_z_div_rem(m,100),cents=match[2],units=match[1]; + if(runtime.caml_lessthan(caml_call1(Z[10],cents),50)) + return caml_call2(Z[54],units,100); + var _cG_=runtime.ml_z_sign(units),_cH_=caml_call2(Z[52],units,_cG_); + return caml_call2(Z[54],_cH_,100)} + function decimal_of_string(d){return caml_call1(Q[15],d)} + function decimal_to_float(d){return caml_call1(Q[35],d)} + function decimal_of_float(d){return caml_call1(Q[14],d)} + function decimal_of_integer(d){return caml_call1(Q[8],d)} + function decimal_to_string(max_prec_digits,i) + {var + sign=caml_call1(Q[20],i), + _ct_=caml_call1(Q[16],i), + n=caml_call1(Z[10],_ct_), + _cu_=caml_call1(Q[17],i), + d=caml_call1(Z[10],_cu_), + int_part=caml_call2(Z[18],n,d), + n$0=[0,caml_call2(Z[19],n,d)], + digits=[0,0]; + function leading_zeroes(digits) + {function _cF_(digit,num_leading_zeroes) + {if(3455931 <= num_leading_zeroes[1])return num_leading_zeroes; + var i=num_leading_zeroes[2]; + return caml_equal(digit,Z[2]) + ?[0,-1014801911,i + 1 | 0] + :[0,3455931,i]} + var match=caml_call3(Stdlib_List[26],_cF_,digits,_b_); + if(3455931 <= match[1]){var i=match[2];return i} + var i$0=match[2]; + return i$0} + for(;;) + {if(runtime.caml_notequal(n$0[1],Z[2])) + {var _cv_=leading_zeroes(digits[1]); + if + ((caml_call1(Stdlib_List[1],digits[1]) - _cv_ | 0) + < + max_prec_digits) + {n$0[1] = caml_call2(Z[14],n$0[1],10); + var _cw_=digits[1]; + digits[1] = [0,caml_call2(Z[18],n$0[1],d),_cw_]; + n$0[1] = caml_call2(Z[19],n$0[1],d); + continue}} + var + _cx_=leading_zeroes(digits[1]), + _cy_= + (caml_call1(Stdlib_List[1],digits[1]) - _cx_ | 0) + === + max_prec_digits + ?cst + :cst$2, + _cz_=caml_call1(Stdlib_List[9],digits[1]), + _cA_= + function(fmt,digit) + {return caml_call4(Stdlib_Format[129],fmt,_c_,Z[36],digit)}, + _cB_=[0,function(fmt,param){return 0}], + _cC_=caml_call2(Stdlib_Format[123],_cB_,_cA_), + _cD_=Z[36], + _cE_=0 <= sign?cst$0:cst$1; + return caml_call7 + (Stdlib_Format[133],_d_,_cE_,_cD_,int_part,_cC_,_cz_,_cy_)}} + function decimal_round(q) + {var + n=caml_call1(Q[16],q), + d=caml_call1(Q[17],q), + _cq_=caml_call2(Z[54],2,d), + _cr_=caml_call2(Z[54],2,n), + _cs_=runtime.ml_z_fdiv(caml_call2(Z[52],_cr_,d),_cq_); + return caml_call1(Q[8],_cs_)} + function decimal_of_money(m) + {var _co_=caml_call1(Q[9],100),_cp_=caml_call1(Q[8],m); + return caml_call2(Q[42],_cp_,_co_)} + function integer_of_string(s){return caml_call1(Z[5],s)} + function integer_to_string(i){return caml_call1(Z[31],i)} + function integer_to_int(i){return caml_call1(Z[29],i)} + function integer_of_int(i){return i} + function integer_exponentiation(i,e){return runtime.ml_z_pow(i,e)} + var integer_log2=Z[47]; + function year_of_date(d) + {var match=caml_call1(Dates_calc_Dates[7],d),y=match[1];return y} + function month_number_of_date(d) + {var match=caml_call1(Dates_calc_Dates[7],d),m=match[2];return m} + function is_leap_year(y) + {var y$0=caml_call1(Z[29],y);return caml_call1(Dates_calc_Dates[11],y$0)} + function day_of_month_of_date(d) + {var match=caml_call1(Dates_calc_Dates[7],d),d$0=match[3];return d$0} + function date_of_numbers(year,month,day) + {try + {var _cm_=caml_call3(Dates_calc_Dates[3],year,month,day);return _cm_} + catch(_cn_){throw ImpossibleDate}} + function date_to_string(d) + {return caml_call3(Stdlib_Format[133],_e_,Dates_calc_Dates[8],d)} + var + first_day_of_month=Dates_calc_Dates[9], + last_day_of_month=Dates_calc_Dates[10]; + function duration_of_numbers(year,month,day) + {return caml_call3(Dates_calc_Dates[12],year,month,day)} + function duration_to_string(d) + {return caml_call3(Stdlib_Format[133],_f_,Dates_calc_Dates[17],d)} + function duration_to_years_months_days(d) + {return caml_call1(Dates_calc_Dates[19],d)} + function yojson_of_runtime_value(param) + {if(typeof param === "number") + return 0 === param?_g_:_h_; + else + switch(param[0]) + {case 0: + var + v0$4=param[1], + v0$5=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][2],v0$4); + return [0,848054398,[0,_i_,[0,v0$5,0]]]; + case 1: + var v0$6=param[1],v0=[0,365180284,money_to_float(v0$6)]; + return [0,848054398,[0,_j_,[0,v0,0]]]; + case 2: + var v0$7=param[1],v0$0=[0,3654863,integer_to_int(v0$7)]; + return [0,848054398,[0,_k_,[0,v0$0,0]]]; + case 3: + var v0$8=param[1],v0$1=[0,365180284,decimal_to_float(v0$8)]; + return [0,848054398,[0,_l_,[0,v0$1,0]]]; + case 4: + var v0$9=param[1],v0$2=[0,-976970511,date_to_string(v0$9)]; + return [0,848054398,[0,_m_,[0,v0$2,0]]]; + case 5: + var v0$10=param[1],v0$3=[0,-976970511,duration_to_string(v0$10)]; + return [0,848054398,[0,_n_,[0,v0$3,0]]]; + case 6: + var + v1=param[2], + v0$11=param[1], + v0$12= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + Ppx_yojson_conv_lib_Yojson_con[45][3], + v0$11), + v1$0=v1[2], + v0$13=v1[1], + v0$14=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0$13), + v1$1=yojson_of_runtime_value(v1$0), + v1$2=[0,848054398,[0,v0$14,[0,v1$1,0]]]; + return [0,848054398,[0,_o_,[0,v0$12,[0,v1$2,0]]]]; + case 7: + var + v1$3=param[2], + v0$15=param[1], + v0$16= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + Ppx_yojson_conv_lib_Yojson_con[45][3], + v0$15), + _cl_= + function(param) + {var + v1=param[2], + v0=param[1], + v0$0=caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][3],v0), + v1$0=yojson_of_runtime_value(v1); + return [0,848054398,[0,v0$0,[0,v1$0,0]]]}, + v1$4=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][14],_cl_,v1$3); + return [0,848054398,[0,_p_,[0,v0$16,[0,v1$4,0]]]]; + default: + var + v0$17=param[1], + v0$18= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][15], + yojson_of_runtime_value, + v0$17); + return [0,848054398,[0,_q_,[0,v0$18,0]]]}} + function unembeddable(param){return 1} + function embed_unit(param){return 0} + function embed_bool(x){return [0,x]} + function embed_money(x){return [1,x]} + function embed_integer(x){return [2,x]} + function embed_decimal(x){return [3,x]} + function embed_date(x){return [4,x]} + function embed_duration(x){return [5,x]} + function embed_array(f,x){return [8,caml_call2(Stdlib_Array[15],f,x)]} + function yojson_of_information(v) + {return caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + Ppx_yojson_conv_lib_Yojson_con[45][3], + v)} + function yojson_of_var_def(param) + {var + v_fun_calls=param[4], + v_value=param[3], + v_name=param[2], + v_pos=param[1], + _ck_= + caml_call1(Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_fun_call), + arg=caml_call2(Ppx_yojson_conv_lib_Yojson_con[45][13],_ck_,v_fun_calls), + bnds=[0,[0,cst_fun_calls,arg],0], + arg$0=yojson_of_runtime_value(v_value), + bnds$0=[0,[0,cst_value,arg$0],bnds], + arg$1=yojson_of_information(v_name), + bnds$1=[0,[0,cst_name$0,arg$1],bnds$0], + arg$2= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][13], + yojson_of_source_position, + v_pos), + bnds$2=[0,[0,cst_pos,arg$2],bnds$1]; + return [0,963043957,bnds$2]} + function yojson_of_fun_call(param) + {var + v_output=param[4], + v_body=param[3], + v_fun_inputs=param[2], + v_fun_name=param[1], + arg=yojson_of_var_def(v_output), + bnds=[0,[0,cst_output,arg],0], + arg$0= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body), + bnds$0=[0,[0,cst_body$0,arg$0],bnds], + arg$1= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + yojson_of_var_def, + v_fun_inputs), + bnds$1=[0,[0,cst_fun_inputs,arg$1],bnds$0], + arg$2=yojson_of_information(v_fun_name), + bnds$2=[0,[0,cst_fun_name,arg$2],bnds$1]; + return [0,963043957,bnds$2]} + function yojson_of_event(param) + {switch(param[0]) + {case 0: + var v0=param[1],v0$0=yojson_of_var_def(v0); + return [0,848054398,[0,_r_,[0,v0$0,0]]]; + case 1: + var v0$1=param[1],v0$2=yojson_of_fun_call(v0$1); + return [0,848054398,[0,_s_,[0,v0$2,0]]]; + default: + var + v_body=param[3], + v_inputs=param[2], + v_name=param[1], + arg= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body), + bnds=[0,[0,cst_body,arg],0], + arg$0= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + yojson_of_var_def, + v_inputs), + bnds$0=[0,[0,cst_inputs,arg$0],bnds], + arg$1=yojson_of_information(v_name), + bnds$1=[0,[0,cst_name,arg$1],bnds$0]; + return [0,848054398,[0,_t_,[0,[0,963043957,bnds$1],0]]]}} + var log_ref=[0,0]; + function reset_log(param){log_ref[1] = 0;return 0} + function retrieve_log(param){return caml_call1(Stdlib_List[9],log_ref[1])} + function log_begin_call(info,f) + {log_ref[1] = [0,[0,info],log_ref[1]];return f} + function log_end_call(info,x) + {log_ref[1] = [0,[1,info],log_ref[1]];return x} + function log_variable_definition(info,embed,x) + {var _cj_=log_ref[1]; + log_ref[1] = [0,[2,info,caml_call1(embed,x)],_cj_]; + return x} + function log_decision_taken(pos,x) + {if(x)log_ref[1] = [0,[3,pos],log_ref[1]];return x} + function pp_events(opt,ppf,events) + {if(opt)var sth=opt[1],is_first_call=sth;else var is_first_call=1; + function format_var_def(ppf,var$0) + {var _ch_=var$0[3],_ci_=caml_call2(Stdlib_String[6],cst$3,var$0[2]); + return caml_call7 + (Stdlib_Format[129], + ppf, + _u_, + format_pos_opt, + var$0[1], + _ci_, + format_value, + _ch_)} + function format_pos_opt(ppf,param) + {if(param) + {var pos=param[1]; + return caml_call5(Stdlib_Format[129],ppf,_v_,pos[1],pos[2],pos[4])} + return caml_call2(Stdlib_Format[129],ppf,_w_)} + function format_var_defs(ppf) + {var + _cg_= + [0, + function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_x_)}]; + return caml_call3(Stdlib_Format[123],_cg_,format_var_def,ppf)} + function format_var_def_with_fun_calls(ppf,var_with_fun) + {var _b$_=var_with_fun[4]; + if(_b$_) + {var _ca_=_b$_[1]; + if(_ca_) + {var + _cb_= + function(ppf,fun_call){return format_event(ppf,[1,fun_call])}, + _cc_= + [0, + function(ppf,param) + {return caml_call2(Stdlib_Format[129],ppf,_y_)}], + _cd_=caml_call2(Stdlib_Format[123],_cc_,_cb_), + _ce_=var_with_fun[3], + _cf_=caml_call2(Stdlib_String[6],cst$4,var_with_fun[2]); + return caml_call7 + (Stdlib_Format[129], + ppf, + _z_, + _cf_, + format_value, + _ce_, + _cd_, + _ca_)}} + return format_var_def(ppf,var_with_fun)} + function format_value(ppf,param) + {if(typeof param === "number") + return 0 === param + ?caml_call2(Stdlib_Format[129],ppf,_A_) + :caml_call2(Stdlib_Format[129],ppf,_B_); + else + switch(param[0]) + {case 0: + var x=param[1];return caml_call3(Stdlib_Format[129],ppf,_C_,x); + case 1: + var x$0=param[1],_bZ_=money_to_string(x$0); + return caml_call3(Stdlib_Format[129],ppf,_D_,_bZ_); + case 2: + var x$1=param[1],_b0_=integer_to_int(x$1); + return caml_call3(Stdlib_Format[129],ppf,_E_,_b0_); + case 3: + var x$2=param[1],_b1_=decimal_to_string(10,x$2); + return caml_call3(Stdlib_Format[129],ppf,_F_,_b1_); + case 4: + var x$3=param[1],_b2_=date_to_string(x$3); + return caml_call3(Stdlib_Format[129],ppf,_G_,_b2_); + case 5: + var x$4=param[1],_b3_=duration_to_string(x$4); + return caml_call3(Stdlib_Format[129],ppf,_H_,_b3_); + case 6: + var match=param[2],name=match[1]; + return caml_call3(Stdlib_Format[129],ppf,_I_,name); + case 7: + var + attrs=param[2], + name$0=param[1], + _b4_= + function(fmt,param) + {var value=param[2],name=param[1]; + return caml_call5 + (Stdlib_Format[129],fmt,_J_,name,format_value,value)}, + _b5_= + [0, + function(ppf,param) + {return caml_call2(Stdlib_Format[129],ppf,_K_)}], + _b6_=caml_call2(Stdlib_Format[123],_b5_,_b4_), + _b7_=caml_call2(Stdlib_String[6],cst$5,name$0); + return caml_call5(Stdlib_Format[129],ppf,_L_,_b7_,_b6_,attrs); + default: + var + elts=param[1], + _b8_=caml_call1(Stdlib_Array[11],elts), + _b9_= + [0, + function(ppf,param) + {return caml_call2(Stdlib_Format[129],ppf,_M_)}], + _b__=caml_call2(Stdlib_Format[123],_b9_,format_value); + return caml_call4(Stdlib_Format[129],ppf,_N_,_b__,_b8_)}} + function format_event(ppf,param) + {switch(param[0]) + {case 0: + var var_def_with_fun=param[1]; + return caml_call1(Stdlib_Option[11],var_def_with_fun[4]) + ?caml_call4 + (Stdlib_Format[129], + ppf, + _O_, + format_var_def_with_fun_calls, + var_def_with_fun) + :caml_call4 + (Stdlib_Format[129],ppf,_P_,format_var_def,var_def_with_fun); + case 1: + var + match=param[1], + output=match[4], + body=match[3], + fun_inputs=match[2], + fun_name=match[1], + _bP_=function(_bV_,_bW_){return pp_events(_Q_,_bV_,_bW_)}, + _bQ_= + [0, + function(fmt,param) + {return caml_call2(Stdlib_Format[13],fmt,cst$6)}], + _bR_=caml_call2(Stdlib_Format[123],_bQ_,format_var_def), + _bS_=caml_call2(Stdlib_String[6],cst$7,fun_name); + return caml_call9 + (Stdlib_Format[129], + ppf, + _R_, + _bS_, + _bR_, + fun_inputs, + format_var_def_with_fun_calls, + output, + _bP_, + body); + default: + var + body$0=param[3], + inputs=param[2], + name=param[1], + _bT_=function(_bX_,_bY_){return pp_events(_S_,_bX_,_bY_)}, + _bU_=caml_call2(Stdlib_String[6],cst$8,name); + return caml_call7 + (Stdlib_Format[129], + ppf, + _T_, + _bU_, + format_var_defs, + inputs, + _bT_, + body$0)}} + var + _bL_= + [0,function(ppf,param){return caml_call2(Stdlib_Format[129],ppf,_U_)}], + _bM_=caml_call2(Stdlib_Format[123],_bL_,format_event), + _bN_=is_first_call?_V_:_X_, + _bO_=caml_call2(Stdlib[98],_W_,_bN_); + return caml_call4(Stdlib_Format[129],ppf,_bO_,_bM_,events)} + var + StringMap=caml_call1(Stdlib_Map[1],[0,Stdlib_String[9]]), + empty=StringMap[1], + empty_ctx=[0,empty,0,0], + _Y_=0; + function raw_event_to_string(param) + {switch(param[0]) + {case 0: + var + name=param[1], + _bC_=caml_call2(Stdlib_String[6],cst$10,name), + _bD_=caml_call2(Stdlib[28],_bC_,cst$9), + _bE_=caml_call1(Stdlib_Printf[4],_Z_); + return caml_call2(Stdlib[28],_bE_,_bD_); + case 1: + var + name$0=param[1], + _bF_=caml_call2(Stdlib_String[6],cst$12,name$0), + _bG_=caml_call2(Stdlib[28],_bF_,cst$11), + _bH_=caml_call1(Stdlib_Printf[4],___); + return caml_call2(Stdlib[28],_bH_,_bG_); + case 2: + var + value=param[2], + name$1=param[1], + _bI_=yojson_of_runtime_value(value), + _bJ_=caml_call4(Yojson[11][5],0,0,0,_bI_), + _bK_=caml_call2(Stdlib_String[6],cst$13,name$1); + return caml_call3(Stdlib_Printf[4],_$_,_bK_,_bJ_); + default: + var pos=param[1]; + return caml_call6 + (Stdlib_Printf[4],_aa_,pos[1],pos[2],pos[3],pos[4],pos[5])}} + function take_while(p,l) + {if(l) + {var t=l[2],h=l[1]; + if(caml_call1(p,h)) + {var match=take_while(p,t),rest=match[2],t$0=match[1]; + return [0,[0,h,t$0],rest]} + return [0,0,l]} + return _ab_} + function parse_raw_events(raw_events) + {var nb_raw_events=caml_call1(Stdlib_List[1],raw_events); + function is_function_call(infos) + {return 2 === caml_call1(Stdlib_List[1],infos)?1:0} + function is_var_def(name) + {return 2 === caml_call1(Stdlib_List[1],name)?1:0} + function parse_fun_call(events) + {var + match= + take_while + (function(param) + {if(2 === param[0]) + {var + name=param[1], + _bA_=3 === caml_call1(Stdlib_List[1],name)?1:0; + if(_bA_) + {var _bB_=caml_call2(Stdlib_List[7],name,2); + return caml_call2(Stdlib_String[10],cst_input,_bB_)} + return _bA_} + return 0}, + events), + _bw_=match[2]; + if(_bw_) + {var _bx_=_bw_[1]; + if(0 === _bx_[0]) + {var rest=_bw_[2],infos=_bx_[1],inputs=match[1]; + if(is_function_call(infos)) + {var + _by_= + function(param) + {if(2 === param[0]) + {var value=param[2],name=param[1];return [0,0,name,value,0]} + throw [0,Assert_failure,_ac_]}, + fun_inputs=caml_call2(Stdlib_ListLabels[19],_by_,inputs), + body_ctx=parse_events([0,empty,0,rest]), + body_rev=caml_call1(Stdlib_List[9],body_ctx[2]), + output=caml_call1(Stdlib_List[5],body_rev), + _bz_=caml_call1(Stdlib_List[6],body_rev), + body=caml_call1(Stdlib_List[9],_bz_), + rest$0=body_ctx[3]; + if(0 === output[0]) + var var_def=output[1],output$0=var_def; + else + var + output$0= + caml_call1(Stdlib[2],cst_Missing_function_output_va); + return [0,rest$0,[0,infos,fun_inputs,body,output$0]]}}} + return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} + function parse_events(ctx) + {var ctx$0=ctx; + a: + for(;;) + {var _aX_=ctx$0[3]; + if(_aX_) + {var _aY_=_aX_[1]; + switch(_aY_[0]) + {case 0: + var rest=_aX_[2],infos=_aY_[1]; + if(3 === caml_call1(Stdlib_List[1],infos)) + {if(infos) + {var _aZ_=infos[2]; + if(_aZ_) + {var _a0_=_aZ_[2]; + if(_a0_ && ! _a0_[2]) + {var + var_name=_aZ_[1], + body_ctx=parse_events([0,empty,_Y_,rest]), + match$0=caml_call2(StringMap[29],var_name,ctx$0[1]); + if(match$0) + var ls$0=match$0[1],inputs=ls$0; + else + var inputs=0; + var + ctx$1= + [0, + ctx$0[1], + [0,[2,infos,inputs,body_ctx[2]],ctx$0[2]], + body_ctx[3]], + ctx$0=ctx$1; + continue}}} + return caml_call1(Stdlib[2],cst_unreachable_due_to_the_is_)} + break; + case 1: + var rest$0=_aX_[2],_a3_=caml_call1(Stdlib_List[9],ctx$0[2]); + return [0,ctx$0[1],_a3_,rest$0]; + case 2: + var rest$1=_aX_[2],name=_aY_[1]; + if(is_var_def(name)) + {var ctx$2=[0,ctx$0[1],ctx$0[2],rest$1],ctx$0=ctx$2;continue} + if(rest$1) + {var _a4_=rest$1[1]; + if(0 === _a4_[0]) + {var infos$0=_a4_[1]; + if(is_function_call(infos$0)) + {var + match$1=parse_fun_call(ctx$0[3]), + fun_call=match$1[2], + rest$2=match$1[1], + ctx$3=[0,ctx$0[1],[0,[1,fun_call],ctx$0[2]],rest$2], + ctx$0=ctx$3; + continue}}} + break; + default: + var _a5_=_aX_[2]; + if(_a5_) + {var _a6_=_a5_[1]; + if(2 === _a6_[0]) + {var + rest$3=_a5_[2], + value=_a6_[2], + name$0=_a6_[1], + pos=_aY_[1], + _aV_=2 === caml_call1(Stdlib_List[1],name$0)?1:0; + if(_aV_) + var + _aW_=caml_call2(Stdlib_List[7],name$0,1), + _a7_=caml_call2(Stdlib_String[14],_aW_,46); + else + var _a7_=_aV_; + if(_a7_) + {if(name$0) + {var _a8_=name$0[2]; + if(_a8_ && ! _a8_[2]) + {var + var_dot_subscope_var_name=_a8_[1], + _a9_= + caml_call2(Stdlib_String[16],46,var_dot_subscope_var_name), + name$1=caml_call2(Stdlib_List[7],_a9_,0), + _a$_=ctx$0[1], + v=[0,[0,pos],name$0,value,0], + _a__=ctx$0[2], + match=caml_call2(StringMap[29],name$1,_a$_); + if(match) + var + ls=match[1], + _bv_=caml_call3(StringMap[4],name$1,[0,v,ls],_a$_); + else + var _bv_=caml_call3(StringMap[4],name$1,[0,v,0],_a$_); + var ctx$4=[0,_bv_,_a__,rest$3],ctx$0=ctx$4; + continue}} + return caml_call1 + (Stdlib[2],cst_unreachable_due_to_the_is_$0)} + var switch$0=0; + if(is_var_def(name$0)) + switch$0 = 1; + else + {var + _aT_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, + _aU_= + _aT_ + ?runtime.caml_string_equal + (cst_output$0,caml_call2(Stdlib_List[7],name$0,2)) + :_aT_; + if(_aU_) + switch$0 = 1; + else + if(rest$3) + {var _ba_=rest$3[1]; + if(0 === _ba_[0]) + {var infos$1=_ba_[1]; + if(is_function_call(infos$1)) + {var + raw_events$0=caml_call1(Stdlib_List[6],ctx$0[3]), + fun_calls=0, + rest$4=raw_events$0; + for(;;) + {var + match$2= + take_while + (function(param){return 2 === param[0]?1:0},rest$4), + _bb_=match$2[2]; + if(_bb_) + {var _bc_=_bb_[1]; + if(0 === _bc_[0]) + {var infos$2=_bc_[1]; + if(is_function_call(infos$2)) + {var + match$3=parse_fun_call(rest$4), + fun_call$0=match$3[2], + raw_events=match$3[1], + fun_calls$0=[0,fun_call$0,fun_calls], + fun_calls=fun_calls$0, + rest$4=raw_events; + continue}}} + var fun_calls$1=caml_call1(Stdlib_List[9],fun_calls); + if(rest$4) + {var _bd_=rest$4[1]; + if(2 === _bd_[0]) + var + rest$6=rest$4[2], + value$0=_bd_[2], + name$2=_bd_[1], + var_comp=[0,[0,[0,pos],name$2,value$0,[0,fun_calls$1]]], + rest$5=rest$6; + else + var + _be_= + (nb_raw_events - caml_call1(Stdlib_List[1],rest$4) | 0) + + + 1 + | + 0, + _bf_=caml_call1(Stdlib[33],_be_), + _bg_=caml_call2(Stdlib[28],_bf_,cst$14), + _bh_=caml_call2(Stdlib[28],cst$15,_bg_), + _bi_=raw_event_to_string(_bd_), + _bj_=caml_call2(Stdlib[28],_bi_,_bh_), + _bk_= + caml_call2(Stdlib[28],cst_expected_variable_definiti,_bj_), + _bl_=caml_call2(Stdlib_String[6],cst$16,infos$1), + _bm_=caml_call2(Stdlib[28],_bl_,_bk_), + _bn_=caml_call2(Stdlib[28],cst_Invalid_function_call,_bm_), + _bo_=caml_call1(Stdlib[2],_bn_), + var_comp=_bo_[2], + rest$5=_bo_[1]} + else + var + _bp_=caml_call2(Stdlib_String[6],cst$17,infos$1), + _bq_= + caml_call2(Stdlib[28],_bp_,cst_expected_variable_definiti$0), + _br_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_bq_), + _bs_=caml_call1(Stdlib[2],_br_), + var_comp=_bs_[2], + rest$5=_bs_[1]; + var + ctx$6=[0,ctx$0[1],[0,var_comp,ctx$0[2]],rest$5], + ctx$0=ctx$6; + continue a}}}}} + if(switch$0) + {var + ctx$5= + [0, + ctx$0[1], + [0,[0,[0,[0,pos],name$0,value,0]],ctx$0[2]], + rest$3], + ctx$0=ctx$5; + continue}}}} + var + _a1_=raw_event_to_string(_aY_), + _a2_=caml_call2(Stdlib[28],cst_Unexpected_event,_a1_); + return caml_call1(Stdlib[2],_a2_)} + var _bt_=ctx$0[3],_bu_=caml_call1(Stdlib_List[9],ctx$0[2]); + return [0,ctx$0[1],_bu_,_bt_]}} + try + {var _aS_=parse_events([0,empty,_Y_,raw_events]),ctx=_aS_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] !== Stdlib[7])throw exn; + var msg=exn[2]; + caml_call2(Stdlib_Printf[3],_ad_,msg); + var ctx=empty_ctx} + return ctx[2]} + function handle_default(pos,exceptions,just,cons) + {var _aO_=0; + function _aP_(acc,except) + {try + {var _aQ_=[0,caml_call1(except,0)],new_val=_aQ_} + catch(_aR_) + {_aR_ = caml_wrap_exception(_aR_); + if(_aR_ !== EmptyError)throw _aR_; + var new_val=0} + if(acc){if(new_val)throw [0,ConflictError,pos];return acc} + return new_val} + var except=caml_call3(Stdlib_Array[17],_aP_,_aO_,exceptions); + if(except){var x=except[1];return x} + if(caml_call1(just,0))return caml_call1(cons,0); + throw EmptyError} + function handle_default_opt(pos,exceptions,just,cons) + {function _aN_(acc,except) + {if(0 === acc[0])return except; + if(0 === except[0])return acc; + throw [0,ConflictError,pos]} + var except=caml_call3(Stdlib_Array[17],_aN_,_ae_,exceptions); + if(0 === except[0]) + {if(0 === just[0])return _af_;var b=just[1];return b?cons:_ag_} + return except} + function no_input(param){throw EmptyError} + function compare_periods(p1,p2) + {try + {var + p1_days=caml_call1(Dates_calc_Dates[18],p1), + p2_days=caml_call1(Dates_calc_Dates[18],p2), + _aL_=runtime.caml_int_compare(p1_days,p2_days); + return _aL_} + catch(_aM_) + {_aM_ = caml_wrap_exception(_aM_); + if(_aM_ === Dates_calc_Dates[2])throw UncomparableDurations; + throw _aM_}} + function equal_periods(p1,p2) + {try + {var + _aI_=caml_call2(Dates_calc_Dates[15],p1,p2), + _aJ_=0 === caml_call1(Dates_calc_Dates[18],_aI_)?1:0; + return _aJ_} + catch(_aK_) + {_aK_ = caml_wrap_exception(_aK_); + if(_aK_ === Dates_calc_Dates[2])throw UncomparableDurations; + throw _aK_}} + function o_not(_aH_){return 1 - _aH_} + function o_length(a){return a.length - 1} + function o_minus_int(i1){return caml_call2(Z[13],Z[2],i1)} + function o_minus_rat(i1){return caml_call2(Q[39],Q[2],i1)} + function o_minus_mon(m1){return caml_call2(Z[13],Z[2],m1)} + var o_minus_dur=Dates_calc_Dates[13]; + function o_and(_aF_,_aE_){var _aG_=_aF_?_aE_:_aF_;return _aG_} + function o_or(_aC_,_aB_){var _aD_=_aC_ || _aB_;return _aD_} + function o_xor(_aA_,_az_){return _aA_ !== _az_?1:0} + var o_eq=caml_equal,o_map=Stdlib_Array[15]; + function o_reduce(f,dft,a) + {var len=a.length - 1; + if(0 === len)return dft; + var r=[0,caml_check_bound(a,0)[1]],_aw_=len - 1 | 0,_av_=1; + if(! (_aw_ < 1)) + {var i=_av_; + for(;;) + {var _ax_=caml_check_bound(a,i)[1 + i]; + r[1] = caml_call2(f,r[1],_ax_); + var _ay_=i + 1 | 0; + if(_aw_ !== i){var i=_ay_;continue} + break}} + return r[1]} + var o_concat=Stdlib_Array[5]; + function o_filter(f,a) + {var + _at_=caml_call1(Stdlib_Array[11],a), + _au_=caml_call2(Stdlib_List[41],f,_at_); + return caml_call1(Stdlib_Array[12],_au_)} + function o_add_int_int(i1,i2){return caml_call2(Z[12],i1,i2)} + function o_add_rat_rat(i1,i2){return caml_call2(Q[38],i1,i2)} + function o_add_mon_mon(m1,m2){return caml_call2(Z[12],m1,m2)} + function o_add_dat_dur(da,du) + {return caml_call3(Dates_calc_Dates[4],0,da,du)} + var o_add_dur_dur=Dates_calc_Dates[14]; + function o_sub_int_int(i1,i2){return caml_call2(Z[13],i1,i2)} + function o_sub_rat_rat(i1,i2){return caml_call2(Q[39],i1,i2)} + function o_sub_mon_mon(m1,m2){return caml_call2(Z[13],m1,m2)} + var o_sub_dat_dat=Dates_calc_Dates[5]; + function o_sub_dat_dur(dat,dur) + {var _as_=caml_call1(Dates_calc_Dates[13],dur); + return caml_call3(Dates_calc_Dates[4],0,dat,_as_)} + var o_sub_dur_dur=Dates_calc_Dates[15]; + function o_mult_int_int(i1,i2){return caml_call2(Z[14],i1,i2)} + function o_mult_rat_rat(i1,i2){return caml_call2(Q[40],i1,i2)} + function o_mult_mon_rat(i1,i2) + {var + i1_abs=caml_call1(Z[10],i1), + i2_abs=caml_call1(Q[37],i2), + _an_=caml_call1(Q[20],i2), + sign_int=runtime.caml_mul(runtime.ml_z_sign(i1),_an_), + _ao_=caml_call1(Q[8],i1_abs), + rat_result=caml_call2(Q[40],_ao_,i2_abs), + _ap_=caml_call1(Q[17],rat_result), + match=runtime.ml_z_div_rem(caml_call1(Q[16],rat_result),_ap_), + remainder=match[2], + res=match[1], + _aq_=caml_call1(Q[17],rat_result); + if(runtime.caml_greaterequal(caml_call2(Z[54],2,remainder),_aq_)) + {var _ar_=caml_call2(Z[12],res,1); + return caml_call2(Z[54],_ar_,sign_int)} + return caml_call2(Z[54],res,sign_int)} + function o_mult_dur_int(d,m) + {var _am_=caml_call1(Z[29],m); + return caml_call2(Dates_calc_Dates[16],d,_am_)} + function o_div_int_int(i1,i2) + {if(caml_equal(Z[2],i2))throw Stdlib[13]; + var _ak_=caml_call1(Q[8],i2),_al_=caml_call1(Q[8],i1); + return caml_call2(Q[42],_al_,_ak_)} + function o_div_rat_rat(i1,i2) + {if(caml_equal(Q[2],i2))throw Stdlib[13];return caml_call2(Q[42],i1,i2)} + function o_div_mon_mon(m1,m2) + {if(caml_equal(Z[2],m2))throw Stdlib[13]; + var _ai_=caml_call1(Q[8],m2),_aj_=caml_call1(Q[8],m1); + return caml_call2(Q[42],_aj_,_ai_)} + function o_div_mon_rat(m1,r1) + {if(caml_equal(Q[2],r1))throw Stdlib[13]; + return o_mult_mon_rat(m1,caml_call1(Q[41],r1))} + function o_div_dur_dur(d1,d2) + {try + {var + i2=caml_call1(Dates_calc_Dates[18],d2), + i1=caml_call1(Dates_calc_Dates[18],d1)} + catch(_ah_) + {_ah_ = caml_wrap_exception(_ah_); + if(_ah_ === Dates_calc_Dates[2])throw IndivisibleDurations; + throw _ah_} + return o_div_int_int(i1,i2)} + function o_lt_int_int(i1,i2){return runtime.ml_z_compare(i1,i2) < 0?1:0} + function o_lt_rat_rat(i1,i2){return caml_call2(Q[21],i1,i2) < 0?1:0} + function o_lt_mon_mon(m1,m2){return runtime.ml_z_compare(m1,m2) < 0?1:0} + function o_lt_dur_dur(d1,d2){return compare_periods(d1,d2) < 0?1:0} + function o_lt_dat_dat(d1,d2) + {return caml_call2(Dates_calc_Dates[6],d1,d2) < 0?1:0} + function o_lte_int_int(i1,i2){return runtime.ml_z_compare(i1,i2) <= 0?1:0} + function o_lte_rat_rat(i1,i2){return caml_call2(Q[21],i1,i2) <= 0?1:0} + function o_lte_mon_mon(m1,m2){return runtime.ml_z_compare(m1,m2) <= 0?1:0} + function o_lte_dur_dur(d1,d2){return compare_periods(d1,d2) <= 0?1:0} + function o_lte_dat_dat(d1,d2) + {return caml_call2(Dates_calc_Dates[6],d1,d2) <= 0?1:0} + function o_gt_int_int(i1,i2){return 0 < runtime.ml_z_compare(i1,i2)?1:0} + function o_gt_rat_rat(i1,i2){return 0 < caml_call2(Q[21],i1,i2)?1:0} + function o_gt_mon_mon(m1,m2){return 0 < runtime.ml_z_compare(m1,m2)?1:0} + function o_gt_dur_dur(d1,d2){return 0 < compare_periods(d1,d2)?1:0} + function o_gt_dat_dat(d1,d2) + {return 0 < caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} + function o_gte_int_int(i1,i2){return 0 <= runtime.ml_z_compare(i1,i2)?1:0} + function o_gte_rat_rat(i1,i2){return 0 <= caml_call2(Q[21],i1,i2)?1:0} + function o_gte_mon_mon(m1,m2){return 0 <= runtime.ml_z_compare(m1,m2)?1:0} + function o_gte_dur_dur(d1,d2){return 0 <= compare_periods(d1,d2)?1:0} + function o_gte_dat_dat(d1,d2) + {return 0 <= caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} + function o_eq_int_int(i1,i2){return runtime.ml_z_equal(i1,i2)} + function o_eq_rat_rat(i1,i2){return caml_call2(Q[22],i1,i2)} + function o_eq_mon_mon(m1,m2){return runtime.ml_z_equal(m1,m2)} + function o_eq_dur_dur(d1,d2){return equal_periods(d1,d2)} + function o_eq_dat_dat(d1,d2) + {return 0 === caml_call2(Dates_calc_Dates[6],d1,d2)?1:0} + var + o_fold=Stdlib_Array[17], + Oper= + [0, + o_not, + o_length, + decimal_of_integer, + decimal_of_money, + money_of_decimal, + day_of_month_of_date, + month_number_of_date, + year_of_date, + first_day_of_month, + last_day_of_month, + money_round, + decimal_round, + o_minus_int, + o_minus_rat, + o_minus_mon, + o_minus_dur, + o_and, + o_or, + o_xor, + o_eq, + o_map, + o_reduce, + o_concat, + o_filter, + o_add_int_int, + o_add_rat_rat, + o_add_mon_mon, + o_add_dat_dur, + o_add_dur_dur, + o_sub_int_int, + o_sub_rat_rat, + o_sub_mon_mon, + o_sub_dat_dat, + o_sub_dat_dur, + o_sub_dur_dur, + o_mult_int_int, + o_mult_rat_rat, + o_mult_mon_rat, + o_mult_dur_int, + o_div_int_int, + o_div_rat_rat, + o_div_mon_mon, + o_div_mon_rat, + o_div_dur_dur, + o_lt_int_int, + o_lt_rat_rat, + o_lt_mon_mon, + o_lt_dur_dur, + o_lt_dat_dat, + o_lte_int_int, + o_lte_rat_rat, + o_lte_mon_mon, + o_lte_dur_dur, + o_lte_dat_dat, + o_gt_int_int, + o_gt_rat_rat, + o_gt_mon_mon, + o_gt_dur_dur, + o_gt_dat_dat, + o_gte_int_int, + o_gte_rat_rat, + o_gte_mon_mon, + o_gte_dur_dur, + o_gte_dat_dat, + o_eq_int_int, + o_eq_rat_rat, + o_eq_mon_mon, + o_eq_dur_dur, + o_eq_dat_dat, + o_fold], + o_not$0=Oper[1], + o_length$0=Oper[2], + o_torat_int=Oper[3], + o_torat_mon=Oper[4], + o_tomoney_rat=Oper[5], + o_getDay=Oper[6], + o_getMonth=Oper[7], + o_getYear=Oper[8], + o_firstDayOfMonth=Oper[9], + o_lastDayOfMonth=Oper[10], + o_round_mon=Oper[11], + o_round_rat=Oper[12], + o_minus_int$0=Oper[13], + o_minus_rat$0=Oper[14], + o_minus_mon$0=Oper[15], + o_minus_dur$0=Oper[16], + o_and$0=Oper[17], + o_or$0=Oper[18], + o_xor$0=Oper[19], + o_eq$0=Oper[20], + o_map$0=Oper[21], + o_reduce$0=Oper[22], + o_concat$0=Oper[23], + o_filter$0=Oper[24], + o_add_int_int$0=Oper[25], + o_add_rat_rat$0=Oper[26], + o_add_mon_mon$0=Oper[27], + o_add_dat_dur$0=Oper[28], + o_add_dur_dur$0=Oper[29], + o_sub_int_int$0=Oper[30], + o_sub_rat_rat$0=Oper[31], + o_sub_mon_mon$0=Oper[32], + o_sub_dat_dat$0=Oper[33], + o_sub_dat_dur$0=Oper[34], + o_sub_dur_dur$0=Oper[35], + o_mult_int_int$0=Oper[36], + o_mult_rat_rat$0=Oper[37], + o_mult_mon_rat$0=Oper[38], + o_mult_dur_int$0=Oper[39], + o_div_int_int$0=Oper[40], + o_div_rat_rat$0=Oper[41], + o_div_mon_mon$0=Oper[42], + o_div_mon_rat$0=Oper[43], + o_div_dur_dur$0=Oper[44], + o_lt_int_int$0=Oper[45], + o_lt_rat_rat$0=Oper[46], + o_lt_mon_mon$0=Oper[47], + o_lt_dur_dur$0=Oper[48], + o_lt_dat_dat$0=Oper[49], + o_lte_int_int$0=Oper[50], + o_lte_rat_rat$0=Oper[51], + o_lte_mon_mon$0=Oper[52], + o_lte_dur_dur$0=Oper[53], + o_lte_dat_dat$0=Oper[54], + o_gt_int_int$0=Oper[55], + o_gt_rat_rat$0=Oper[56], + o_gt_mon_mon$0=Oper[57], + o_gt_dur_dur$0=Oper[58], + o_gt_dat_dat$0=Oper[59], + o_gte_int_int$0=Oper[60], + o_gte_rat_rat$0=Oper[61], + o_gte_mon_mon$0=Oper[62], + o_gte_dur_dur$0=Oper[63], + o_gte_dat_dat$0=Oper[64], + o_eq_int_int$0=Oper[65], + o_eq_rat_rat$0=Oper[66], + o_eq_mon_mon$0=Oper[67], + o_eq_dur_dur$0=Oper[68], + o_eq_dat_dat$0=Oper[69], + o_fold$0=Oper[70], + Runtime_ocaml_Runtime= + [0, + yojson_of_source_position, + EmptyError, + AssertionFailed, + ConflictError, + UncomparableDurations, + IndivisibleDurations, + ImpossibleDate, + NoValueProvided, + yojson_of_runtime_value, + unembeddable, + embed_unit, + embed_bool, + embed_money, + embed_integer, + embed_decimal, + embed_date, + embed_duration, + embed_array, + yojson_of_information, + yojson_of_event, + yojson_of_var_def, + yojson_of_fun_call, + retrieve_log, + [0,parse_raw_events], + reset_log, + log_begin_call, + log_end_call, + log_variable_definition, + log_decision_taken, + pp_events, + money_of_cents_string, + money_of_units_int, + money_of_decimal, + money_of_cents_integer, + money_to_float, + money_to_string, + money_to_cents, + money_round, + decimal_of_string, + decimal_to_string, + decimal_of_integer, + decimal_of_float, + decimal_to_float, + decimal_round, + decimal_of_money, + integer_of_string, + integer_to_string, + integer_to_int, + integer_of_int, + integer_log2, + integer_exponentiation, + day_of_month_of_date, + month_number_of_date, + is_leap_year, + year_of_date, + date_to_string, + date_of_numbers, + first_day_of_month, + last_day_of_month, + duration_of_numbers, + duration_to_years_months_days, + duration_to_string, + handle_default, + handle_default_opt, + no_input, + Oper, + o_not$0, + o_length$0, + o_torat_int, + o_torat_mon, + o_tomoney_rat, + o_getDay, + o_getMonth, + o_getYear, + o_firstDayOfMonth, + o_lastDayOfMonth, + o_round_mon, + o_round_rat, + o_minus_int$0, + o_minus_rat$0, + o_minus_mon$0, + o_minus_dur$0, + o_and$0, + o_or$0, + o_xor$0, + o_eq$0, + o_map$0, + o_reduce$0, + o_concat$0, + o_filter$0, + o_add_int_int$0, + o_add_rat_rat$0, + o_add_mon_mon$0, + o_add_dat_dur$0, + o_add_dur_dur$0, + o_sub_int_int$0, + o_sub_rat_rat$0, + o_sub_mon_mon$0, + o_sub_dat_dat$0, + o_sub_dat_dur$0, + o_sub_dur_dur$0, + o_mult_int_int$0, + o_mult_rat_rat$0, + o_mult_mon_rat$0, + o_mult_dur_int$0, + o_div_int_int$0, + o_div_rat_rat$0, + o_div_mon_mon$0, + o_div_mon_rat$0, + o_div_dur_dur$0, + o_lt_int_int$0, + o_lt_rat_rat$0, + o_lt_mon_mon$0, + o_lt_dur_dur$0, + o_lt_dat_dat$0, + o_lte_int_int$0, + o_lte_rat_rat$0, + o_lte_mon_mon$0, + o_lte_dur_dur$0, + o_lte_dat_dat$0, + o_gt_int_int$0, + o_gt_rat_rat$0, + o_gt_mon_mon$0, + o_gt_dur_dur$0, + o_gt_dat_dat$0, + o_gte_int_int$0, + o_gte_rat_rat$0, + o_gte_mon_mon$0, + o_gte_dur_dur$0, + o_gte_dat_dat$0, + o_eq_int_int$0, + o_eq_rat_rat$0, + o_eq_mon_mon$0, + o_eq_dur_dur$0, + o_eq_dat_dat$0, + o_fold$0]; + caml_register_global(131,Runtime_ocaml_Runtime,"Runtime_ocaml__Runtime"); + return} + (globalThis)); + + +//# 1 "../../.js/js_of_ocaml-compiler.runtime/jsoo_runtime.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_exn_with_js_backtrace=runtime.caml_exn_with_js_backtrace, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes; + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + var + global_data=runtime.caml_get_global_data(), + cst_Jsoo_runtime_Error_Exn= + caml_string_of_jsbytes("Jsoo_runtime.Error.Exn"), + cst_jsError=caml_string_of_jsbytes("jsError"), + Stdlib_Callback=global_data.Stdlib__Callback, + Js=[0], + Sys=[0], + Exn=[248,cst_Jsoo_runtime_Error_Exn,runtime.caml_fresh_oo_id(0)]; + caml_call2(Stdlib_Callback[2],cst_jsError,[0,Exn,[0]]); + function raise(exn){throw exn} + var + Error= + [0, + raise, + caml_exn_with_js_backtrace, + runtime.caml_js_error_option_of_exception, + Exn], + For_compatibility_only=[0], + Bigstring=[0], + Typed_array=[0,Bigstring], + Int64=[0], + Jsoo_runtime=[0,Js,Sys,Error,For_compatibility_only,Typed_array,Int64]; + runtime.caml_register_global(4,Jsoo_runtime,"Jsoo_runtime"); + return} + (globalThis)); + + +//# 1 "../../.js/js_of_ocaml/js_of_ocaml.cma.js" +(function(globalThis) + {"use strict"; + var + jsoo_exports=typeof module === "object" && module.exports || globalThis, + runtime=globalThis.jsoo_runtime, + caml_float_of_string=runtime.caml_float_of_string, + caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_int_of_string=runtime.caml_int_of_string, + caml_js_from_array=runtime.caml_js_from_array, + caml_js_get=runtime.caml_js_get, + caml_js_html_escape=runtime.caml_js_html_escape, + caml_js_set=runtime.caml_js_set, + caml_js_wrap_callback=runtime.caml_js_wrap_callback, + caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, + caml_jsbytes_of_string=runtime.caml_jsbytes_of_string, + caml_jsstring_of_string=runtime.caml_jsstring_of_string, + caml_list_of_js_array=runtime.caml_list_of_js_array, + caml_ml_string_length=runtime.caml_ml_string_length, + caml_register_global=runtime.caml_register_global, + caml_string_compare=runtime.caml_string_compare, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_array=runtime.caml_string_of_array, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_string_of_jsstring=runtime.caml_string_of_jsstring, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + function caml_call5(f,a0,a1,a2,a3,a4) + {return f.length == 5 + ?f(a0,a1,a2,a3,a4) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} + var + global_data=runtime.caml_get_global_data(), + cst_parseFloat=caml_string_of_jsbytes("parseFloat"), + cst_parseInt=caml_string_of_jsbytes("parseInt"), + cst_can_t_retrieve_file_name_n= + caml_string_of_jsbytes("can't retrieve file name: not implemented"), + cst_endings=caml_string_of_jsbytes("endings"), + cst_type=caml_string_of_jsbytes("type"), + cst_loadstart=caml_string_of_jsbytes("loadstart"), + cst_progress=caml_string_of_jsbytes("progress"), + cst_abort=caml_string_of_jsbytes("abort"), + cst_error=caml_string_of_jsbytes("error"), + cst_load=caml_string_of_jsbytes("load"), + cst_loadend=caml_string_of_jsbytes("loadend"), + cst_a$1=caml_string_of_jsbytes("a"), + cst_area$1=caml_string_of_jsbytes("area"), + cst_audio$1=caml_string_of_jsbytes("audio"), + cst_base$1=caml_string_of_jsbytes("base"), + cst_blockquote$1=caml_string_of_jsbytes("blockquote"), + cst_body$1=caml_string_of_jsbytes("body"), + cst_br$1=caml_string_of_jsbytes("br"), + cst_button$1=caml_string_of_jsbytes("button"), + cst_canvas$1=caml_string_of_jsbytes("canvas"), + cst_caption$1=caml_string_of_jsbytes("caption"), + cst_col$1=caml_string_of_jsbytes("col"), + cst_colgroup$1=caml_string_of_jsbytes("colgroup"), + cst_del$1=caml_string_of_jsbytes("del"), + cst_div$1=caml_string_of_jsbytes("div"), + cst_dl$1=caml_string_of_jsbytes("dl"), + cst_embed$1=caml_string_of_jsbytes("embed"), + cst_fieldset$1=caml_string_of_jsbytes("fieldset"), + cst_form$1=caml_string_of_jsbytes("form"), + cst_frame$1=caml_string_of_jsbytes("frame"), + cst_frameset$1=caml_string_of_jsbytes("frameset"), + cst_h1$1=caml_string_of_jsbytes("h1"), + cst_h2$1=caml_string_of_jsbytes("h2"), + cst_h3$1=caml_string_of_jsbytes("h3"), + cst_h4$1=caml_string_of_jsbytes("h4"), + cst_h5$1=caml_string_of_jsbytes("h5"), + cst_h6$1=caml_string_of_jsbytes("h6"), + cst_head$1=caml_string_of_jsbytes("head"), + cst_hr$1=caml_string_of_jsbytes("hr"), + cst_html$1=caml_string_of_jsbytes("html"), + cst_iframe$1=caml_string_of_jsbytes("iframe"), + cst_img$1=caml_string_of_jsbytes("img"), + cst_input$2=caml_string_of_jsbytes("input"), + cst_ins$1=caml_string_of_jsbytes("ins"), + cst_label$1=caml_string_of_jsbytes("label"), + cst_legend$1=caml_string_of_jsbytes("legend"), + cst_li$1=caml_string_of_jsbytes("li"), + cst_link$1=caml_string_of_jsbytes("link"), + cst_map$1=caml_string_of_jsbytes("map"), + cst_meta$1=caml_string_of_jsbytes("meta"), + cst_object$1=caml_string_of_jsbytes("object"), + cst_ol$1=caml_string_of_jsbytes("ol"), + cst_optgroup$1=caml_string_of_jsbytes("optgroup"), + cst_option$1=caml_string_of_jsbytes("option"), + cst_p$1=caml_string_of_jsbytes("p"), + cst_param$1=caml_string_of_jsbytes("param"), + cst_pre$1=caml_string_of_jsbytes("pre"), + cst_q$1=caml_string_of_jsbytes("q"), + cst_script$1=caml_string_of_jsbytes("script"), + cst_select$2=caml_string_of_jsbytes("select"), + cst_style$1=caml_string_of_jsbytes("style"), + cst_table$1=caml_string_of_jsbytes("table"), + cst_tbody$1=caml_string_of_jsbytes("tbody"), + cst_td$1=caml_string_of_jsbytes("td"), + cst_textarea$1=caml_string_of_jsbytes("textarea"), + cst_tfoot$1=caml_string_of_jsbytes("tfoot"), + cst_th$1=caml_string_of_jsbytes("th"), + cst_thead$1=caml_string_of_jsbytes("thead"), + cst_title$1=caml_string_of_jsbytes("title"), + cst_tr$1=caml_string_of_jsbytes("tr"), + cst_ul$1=caml_string_of_jsbytes("ul"), + cst_video$1=caml_string_of_jsbytes("video"), + cst_KeyH=caml_string_of_jsbytes("KeyH"), + cst_Digit6=caml_string_of_jsbytes("Digit6"), + cst_BrowserRefresh=caml_string_of_jsbytes("BrowserRefresh"), + cst_Backslash=caml_string_of_jsbytes("Backslash"), + cst_AltLeft=caml_string_of_jsbytes("AltLeft"), + cst_AltRight=caml_string_of_jsbytes("AltRight"), + cst_ArrowDown=caml_string_of_jsbytes("ArrowDown"), + cst_ArrowLeft=caml_string_of_jsbytes("ArrowLeft"), + cst_ArrowRight=caml_string_of_jsbytes("ArrowRight"), + cst_ArrowUp=caml_string_of_jsbytes("ArrowUp"), + cst_Backquote=caml_string_of_jsbytes("Backquote"), + cst_Backspace=caml_string_of_jsbytes("Backspace"), + cst_BracketLeft=caml_string_of_jsbytes("BracketLeft"), + cst_BracketRight=caml_string_of_jsbytes("BracketRight"), + cst_BrowserBack=caml_string_of_jsbytes("BrowserBack"), + cst_BrowserFavorites=caml_string_of_jsbytes("BrowserFavorites"), + cst_BrowserForward=caml_string_of_jsbytes("BrowserForward"), + cst_BrowserHome=caml_string_of_jsbytes("BrowserHome"), + cst_Delete=caml_string_of_jsbytes("Delete"), + cst_BrowserSearch=caml_string_of_jsbytes("BrowserSearch"), + cst_BrowserStop=caml_string_of_jsbytes("BrowserStop"), + cst_CapsLock=caml_string_of_jsbytes("CapsLock"), + cst_Comma=caml_string_of_jsbytes("Comma"), + cst_ContextMenu=caml_string_of_jsbytes("ContextMenu"), + cst_ControlLeft=caml_string_of_jsbytes("ControlLeft"), + cst_ControlRight=caml_string_of_jsbytes("ControlRight"), + cst_Digit0=caml_string_of_jsbytes("Digit0"), + cst_Digit1=caml_string_of_jsbytes("Digit1"), + cst_Digit2=caml_string_of_jsbytes("Digit2"), + cst_Digit3=caml_string_of_jsbytes("Digit3"), + cst_Digit4=caml_string_of_jsbytes("Digit4"), + cst_Digit5=caml_string_of_jsbytes("Digit5"), + cst_F6=caml_string_of_jsbytes("F6"), + cst_F1=caml_string_of_jsbytes("F1"), + cst_Digit7=caml_string_of_jsbytes("Digit7"), + cst_Digit8=caml_string_of_jsbytes("Digit8"), + cst_Digit9=caml_string_of_jsbytes("Digit9"), + cst_End=caml_string_of_jsbytes("End"), + cst_Enter=caml_string_of_jsbytes("Enter"), + cst_Equal=caml_string_of_jsbytes("Equal"), + cst_Escape=caml_string_of_jsbytes("Escape"), + cst_F10=caml_string_of_jsbytes("F10"), + cst_F11=caml_string_of_jsbytes("F11"), + cst_F12=caml_string_of_jsbytes("F12"), + cst_F2=caml_string_of_jsbytes("F2"), + cst_F3=caml_string_of_jsbytes("F3"), + cst_F4=caml_string_of_jsbytes("F4"), + cst_F5=caml_string_of_jsbytes("F5"), + cst_KeyA=caml_string_of_jsbytes("KeyA"), + cst_F7=caml_string_of_jsbytes("F7"), + cst_F8=caml_string_of_jsbytes("F8"), + cst_F9=caml_string_of_jsbytes("F9"), + cst_Home=caml_string_of_jsbytes("Home"), + cst_Insert=caml_string_of_jsbytes("Insert"), + cst_IntlBackslash=caml_string_of_jsbytes("IntlBackslash"), + cst_IntlYen=caml_string_of_jsbytes("IntlYen"), + cst_KeyB=caml_string_of_jsbytes("KeyB"), + cst_KeyC=caml_string_of_jsbytes("KeyC"), + cst_KeyD=caml_string_of_jsbytes("KeyD"), + cst_KeyE=caml_string_of_jsbytes("KeyE"), + cst_KeyF=caml_string_of_jsbytes("KeyF"), + cst_KeyG=caml_string_of_jsbytes("KeyG"), + cst_Numpad4=caml_string_of_jsbytes("Numpad4"), + cst_KeyX=caml_string_of_jsbytes("KeyX"), + cst_KeyP=caml_string_of_jsbytes("KeyP"), + cst_KeyI=caml_string_of_jsbytes("KeyI"), + cst_KeyJ=caml_string_of_jsbytes("KeyJ"), + cst_KeyK=caml_string_of_jsbytes("KeyK"), + cst_KeyL=caml_string_of_jsbytes("KeyL"), + cst_KeyM=caml_string_of_jsbytes("KeyM"), + cst_KeyN=caml_string_of_jsbytes("KeyN"), + cst_KeyO=caml_string_of_jsbytes("KeyO"), + cst_KeyQ=caml_string_of_jsbytes("KeyQ"), + cst_KeyR=caml_string_of_jsbytes("KeyR"), + cst_KeyS=caml_string_of_jsbytes("KeyS"), + cst_KeyT=caml_string_of_jsbytes("KeyT"), + cst_KeyU=caml_string_of_jsbytes("KeyU"), + cst_KeyV=caml_string_of_jsbytes("KeyV"), + cst_KeyW=caml_string_of_jsbytes("KeyW"), + cst_MetaRight=caml_string_of_jsbytes("MetaRight"), + cst_KeyY=caml_string_of_jsbytes("KeyY"), + cst_KeyZ=caml_string_of_jsbytes("KeyZ"), + cst_MediaPlayPause=caml_string_of_jsbytes("MediaPlayPause"), + cst_MediaStop=caml_string_of_jsbytes("MediaStop"), + cst_MediaTrackNext=caml_string_of_jsbytes("MediaTrackNext"), + cst_MediaTrackPrevious=caml_string_of_jsbytes("MediaTrackPrevious"), + cst_MetaLeft=caml_string_of_jsbytes("MetaLeft"), + cst_Minus=caml_string_of_jsbytes("Minus"), + cst_NumLock=caml_string_of_jsbytes("NumLock"), + cst_Numpad0=caml_string_of_jsbytes("Numpad0"), + cst_Numpad1=caml_string_of_jsbytes("Numpad1"), + cst_Numpad2=caml_string_of_jsbytes("Numpad2"), + cst_Numpad3=caml_string_of_jsbytes("Numpad3"), + cst_PageUp=caml_string_of_jsbytes("PageUp"), + cst_NumpadDivide=caml_string_of_jsbytes("NumpadDivide"), + cst_Numpad5=caml_string_of_jsbytes("Numpad5"), + cst_Numpad6=caml_string_of_jsbytes("Numpad6"), + cst_Numpad7=caml_string_of_jsbytes("Numpad7"), + cst_Numpad8=caml_string_of_jsbytes("Numpad8"), + cst_Numpad9=caml_string_of_jsbytes("Numpad9"), + cst_NumpadAdd=caml_string_of_jsbytes("NumpadAdd"), + cst_NumpadDecimal=caml_string_of_jsbytes("NumpadDecimal"), + cst_NumpadEnter=caml_string_of_jsbytes("NumpadEnter"), + cst_NumpadEqual=caml_string_of_jsbytes("NumpadEqual"), + cst_NumpadMultiply=caml_string_of_jsbytes("NumpadMultiply"), + cst_NumpadSubtract=caml_string_of_jsbytes("NumpadSubtract"), + cst_OSLeft=caml_string_of_jsbytes("OSLeft"), + cst_OSRight=caml_string_of_jsbytes("OSRight"), + cst_PageDown=caml_string_of_jsbytes("PageDown"), + cst_ShiftRight=caml_string_of_jsbytes("ShiftRight"), + cst_Pause=caml_string_of_jsbytes("Pause"), + cst_Period=caml_string_of_jsbytes("Period"), + cst_PrintScreen=caml_string_of_jsbytes("PrintScreen"), + cst_Quote=caml_string_of_jsbytes("Quote"), + cst_ScrollLock=caml_string_of_jsbytes("ScrollLock"), + cst_Semicolon=caml_string_of_jsbytes("Semicolon"), + cst_ShiftLeft=caml_string_of_jsbytes("ShiftLeft"), + cst_Slash=caml_string_of_jsbytes("Slash"), + cst_Space=caml_string_of_jsbytes("Space"), + cst_Tab=caml_string_of_jsbytes("Tab"), + cst_VolumeDown=caml_string_of_jsbytes("VolumeDown"), + cst_VolumeMute=caml_string_of_jsbytes("VolumeMute"), + cst_VolumeUp=caml_string_of_jsbytes("VolumeUp"), + cst_mouseout$0=caml_string_of_jsbytes("mouseout"), + cst_mouseover$0=caml_string_of_jsbytes("mouseover"), + cst_video$0=caml_string_of_jsbytes("video"), + cst_audio$0=caml_string_of_jsbytes("audio"), + cst_ul$0=caml_string_of_jsbytes("ul"), + cst_tr$0=caml_string_of_jsbytes("tr"), + cst_title$0=caml_string_of_jsbytes("title"), + cst_thead$0=caml_string_of_jsbytes("thead"), + cst_th$0=caml_string_of_jsbytes("th"), + cst_tfoot$0=caml_string_of_jsbytes("tfoot"), + cst_textarea$0=caml_string_of_jsbytes("textarea"), + cst_td$0=caml_string_of_jsbytes("td"), + cst_tbody$0=caml_string_of_jsbytes("tbody"), + cst_table$0=caml_string_of_jsbytes("table"), + cst_style$0=caml_string_of_jsbytes("style"), + cst_select$1=caml_string_of_jsbytes("select"), + cst_script$0=caml_string_of_jsbytes("script"), + cst_q$0=caml_string_of_jsbytes("q"), + cst_pre$0=caml_string_of_jsbytes("pre"), + cst_param$0=caml_string_of_jsbytes("param"), + cst_p$0=caml_string_of_jsbytes("p"), + cst_option$0=caml_string_of_jsbytes("option"), + cst_optgroup$0=caml_string_of_jsbytes("optgroup"), + cst_ol$0=caml_string_of_jsbytes("ol"), + cst_object$0=caml_string_of_jsbytes("object"), + cst_meta$0=caml_string_of_jsbytes("meta"), + cst_map$0=caml_string_of_jsbytes("map"), + cst_link$0=caml_string_of_jsbytes("link"), + cst_li$0=caml_string_of_jsbytes("li"), + cst_legend$0=caml_string_of_jsbytes("legend"), + cst_label$0=caml_string_of_jsbytes("label"), + cst_ins$0=caml_string_of_jsbytes("ins"), + cst_input$1=caml_string_of_jsbytes("input"), + cst_img$0=caml_string_of_jsbytes("img"), + cst_iframe$0=caml_string_of_jsbytes("iframe"), + cst_html$0=caml_string_of_jsbytes("html"), + cst_hr$0=caml_string_of_jsbytes("hr"), + cst_head$0=caml_string_of_jsbytes("head"), + cst_h6$0=caml_string_of_jsbytes("h6"), + cst_h5$0=caml_string_of_jsbytes("h5"), + cst_h4$0=caml_string_of_jsbytes("h4"), + cst_h3$0=caml_string_of_jsbytes("h3"), + cst_h2$0=caml_string_of_jsbytes("h2"), + cst_h1$0=caml_string_of_jsbytes("h1"), + cst_frame$0=caml_string_of_jsbytes("frame"), + cst_frameset$0=caml_string_of_jsbytes("frameset"), + cst_form$0=caml_string_of_jsbytes("form"), + cst_embed$0=caml_string_of_jsbytes("embed"), + cst_fieldset$0=caml_string_of_jsbytes("fieldset"), + cst_dl$0=caml_string_of_jsbytes("dl"), + cst_div$0=caml_string_of_jsbytes("div"), + cst_del$0=caml_string_of_jsbytes("del"), + cst_colgroup$0=caml_string_of_jsbytes("colgroup"), + cst_col$0=caml_string_of_jsbytes("col"), + cst_caption$0=caml_string_of_jsbytes("caption"), + cst_canvas$0=caml_string_of_jsbytes("canvas"), + cst_button$0=caml_string_of_jsbytes("button"), + cst_br$0=caml_string_of_jsbytes("br"), + cst_body$0=caml_string_of_jsbytes("body"), + cst_blockquote$0=caml_string_of_jsbytes("blockquote"), + cst_base$0=caml_string_of_jsbytes("base"), + cst_area$0=caml_string_of_jsbytes("area"), + cst_a$0=caml_string_of_jsbytes("a"), + cst_canvas=caml_string_of_jsbytes("canvas"), + cst_video=caml_string_of_jsbytes("video"), + cst_audio=caml_string_of_jsbytes("audio"), + cst_iframe=caml_string_of_jsbytes("iframe"), + cst_frame=caml_string_of_jsbytes("frame"), + cst_frameset=caml_string_of_jsbytes("frameset"), + cst_address=caml_string_of_jsbytes("address"), + cst_noscript=caml_string_of_jsbytes("noscript"), + cst_dt=caml_string_of_jsbytes("dt"), + cst_dd=caml_string_of_jsbytes("dd"), + cst_abbr=caml_string_of_jsbytes("abbr"), + cst_var=caml_string_of_jsbytes("var"), + cst_kbd=caml_string_of_jsbytes("kbd"), + cst_samp=caml_string_of_jsbytes("samp"), + cst_code=caml_string_of_jsbytes("code"), + cst_dfn=caml_string_of_jsbytes("dfn"), + cst_cite=caml_string_of_jsbytes("cite"), + cst_strong=caml_string_of_jsbytes("strong"), + cst_em=caml_string_of_jsbytes("em"), + cst_small=caml_string_of_jsbytes("small"), + cst_big=caml_string_of_jsbytes("big"), + cst_b=caml_string_of_jsbytes("b"), + cst_i=caml_string_of_jsbytes("i"), + cst_tt=caml_string_of_jsbytes("tt"), + cst_span=caml_string_of_jsbytes("span"), + cst_sup=caml_string_of_jsbytes("sup"), + cst_sub=caml_string_of_jsbytes("sub"), + cst_td=caml_string_of_jsbytes("td"), + cst_th=caml_string_of_jsbytes("th"), + cst_tr=caml_string_of_jsbytes("tr"), + cst_tbody=caml_string_of_jsbytes("tbody"), + cst_tfoot=caml_string_of_jsbytes("tfoot"), + cst_thead=caml_string_of_jsbytes("thead"), + cst_colgroup=caml_string_of_jsbytes("colgroup"), + cst_col=caml_string_of_jsbytes("col"), + cst_caption=caml_string_of_jsbytes("caption"), + cst_table=caml_string_of_jsbytes("table"), + cst_script=caml_string_of_jsbytes("script"), + cst_area=caml_string_of_jsbytes("area"), + cst_map=caml_string_of_jsbytes("map"), + cst_param=caml_string_of_jsbytes("param"), + cst_object=caml_string_of_jsbytes("object"), + cst_img=caml_string_of_jsbytes("img"), + cst_a=caml_string_of_jsbytes("a"), + cst_del=caml_string_of_jsbytes("del"), + cst_ins=caml_string_of_jsbytes("ins"), + cst_hr=caml_string_of_jsbytes("hr"), + cst_br=caml_string_of_jsbytes("br"), + cst_pre=caml_string_of_jsbytes("pre"), + cst_blockquote=caml_string_of_jsbytes("blockquote"), + cst_q=caml_string_of_jsbytes("q"), + cst_h6=caml_string_of_jsbytes("h6"), + cst_h5=caml_string_of_jsbytes("h5"), + cst_h4=caml_string_of_jsbytes("h4"), + cst_h3=caml_string_of_jsbytes("h3"), + cst_h2=caml_string_of_jsbytes("h2"), + cst_h1=caml_string_of_jsbytes("h1"), + cst_p=caml_string_of_jsbytes("p"), + cst_embed=caml_string_of_jsbytes("embed"), + cst_div=caml_string_of_jsbytes("div"), + cst_li=caml_string_of_jsbytes("li"), + cst_dl=caml_string_of_jsbytes("dl"), + cst_ol=caml_string_of_jsbytes("ol"), + cst_ul=caml_string_of_jsbytes("ul"), + cst_legend=caml_string_of_jsbytes("legend"), + cst_fieldset=caml_string_of_jsbytes("fieldset"), + cst_label=caml_string_of_jsbytes("label"), + cst_button=caml_string_of_jsbytes("button"), + cst_textarea=caml_string_of_jsbytes("textarea"), + cst_input$0=caml_string_of_jsbytes("input"), + cst_select$0=caml_string_of_jsbytes("select"), + cst_option=caml_string_of_jsbytes("option"), + cst_optgroup=caml_string_of_jsbytes("optgroup"), + cst_form=caml_string_of_jsbytes("form"), + cst_body=caml_string_of_jsbytes("body"), + cst_style=caml_string_of_jsbytes("style"), + cst_base=caml_string_of_jsbytes("base"), + cst_meta=caml_string_of_jsbytes("meta"), + cst_title=caml_string_of_jsbytes("title"), + cst_link=caml_string_of_jsbytes("link"), + cst_head=caml_string_of_jsbytes("head"), + cst_html=caml_string_of_jsbytes("html"), + cst_click=caml_string_of_jsbytes("click"), + cst_copy=caml_string_of_jsbytes("copy"), + cst_cut=caml_string_of_jsbytes("cut"), + cst_paste=caml_string_of_jsbytes("paste"), + cst_dblclick=caml_string_of_jsbytes("dblclick"), + cst_mousedown=caml_string_of_jsbytes("mousedown"), + cst_mouseup=caml_string_of_jsbytes("mouseup"), + cst_mouseover=caml_string_of_jsbytes("mouseover"), + cst_mousemove=caml_string_of_jsbytes("mousemove"), + cst_mouseout=caml_string_of_jsbytes("mouseout"), + cst_keypress=caml_string_of_jsbytes("keypress"), + cst_keydown=caml_string_of_jsbytes("keydown"), + cst_keyup=caml_string_of_jsbytes("keyup"), + cst_mousewheel=caml_string_of_jsbytes("mousewheel"), + cst_DOMMouseScroll=caml_string_of_jsbytes("DOMMouseScroll"), + cst_touchstart=caml_string_of_jsbytes("touchstart"), + cst_touchmove=caml_string_of_jsbytes("touchmove"), + cst_touchend=caml_string_of_jsbytes("touchend"), + cst_touchcancel=caml_string_of_jsbytes("touchcancel"), + cst_dragstart=caml_string_of_jsbytes("dragstart"), + cst_dragend=caml_string_of_jsbytes("dragend"), + cst_dragenter=caml_string_of_jsbytes("dragenter"), + cst_dragover=caml_string_of_jsbytes("dragover"), + cst_dragleave=caml_string_of_jsbytes("dragleave"), + cst_drag=caml_string_of_jsbytes("drag"), + cst_drop=caml_string_of_jsbytes("drop"), + cst_hashchange=caml_string_of_jsbytes("hashchange"), + cst_change=caml_string_of_jsbytes("change"), + cst_input=caml_string_of_jsbytes("input"), + cst_timeupdate=caml_string_of_jsbytes("timeupdate"), + cst_submit=caml_string_of_jsbytes("submit"), + cst_scroll=caml_string_of_jsbytes("scroll"), + cst_focus=caml_string_of_jsbytes("focus"), + cst_blur=caml_string_of_jsbytes("blur"), + cst_load$0=caml_string_of_jsbytes("load"), + cst_unload=caml_string_of_jsbytes("unload"), + cst_beforeunload=caml_string_of_jsbytes("beforeunload"), + cst_resize=caml_string_of_jsbytes("resize"), + cst_orientationchange=caml_string_of_jsbytes("orientationchange"), + cst_popstate=caml_string_of_jsbytes("popstate"), + cst_error$0=caml_string_of_jsbytes("error"), + cst_abort$0=caml_string_of_jsbytes("abort"), + cst_select=caml_string_of_jsbytes("select"), + cst_online=caml_string_of_jsbytes("online"), + cst_offline=caml_string_of_jsbytes("offline"), + cst_checking=caml_string_of_jsbytes("checking"), + cst_noupdate=caml_string_of_jsbytes("noupdate"), + cst_downloading=caml_string_of_jsbytes("downloading"), + cst_progress$0=caml_string_of_jsbytes("progress"), + cst_updateready=caml_string_of_jsbytes("updateready"), + cst_cached=caml_string_of_jsbytes("cached"), + cst_obsolete=caml_string_of_jsbytes("obsolete"), + cst_DOMContentLoaded=caml_string_of_jsbytes("DOMContentLoaded"), + cst_animationstart=caml_string_of_jsbytes("animationstart"), + cst_animationend=caml_string_of_jsbytes("animationend"), + cst_animationiteration=caml_string_of_jsbytes("animationiteration"), + cst_animationcancel=caml_string_of_jsbytes("animationcancel"), + cst_canplay=caml_string_of_jsbytes("canplay"), + cst_canplaythrough=caml_string_of_jsbytes("canplaythrough"), + cst_durationchange=caml_string_of_jsbytes("durationchange"), + cst_emptied=caml_string_of_jsbytes("emptied"), + cst_ended=caml_string_of_jsbytes("ended"), + cst_gotpointercapture=caml_string_of_jsbytes("gotpointercapture"), + cst_loadeddata=caml_string_of_jsbytes("loadeddata"), + cst_loadedmetadata=caml_string_of_jsbytes("loadedmetadata"), + cst_loadstart$0=caml_string_of_jsbytes("loadstart"), + cst_lostpointercapture=caml_string_of_jsbytes("lostpointercapture"), + cst_message=caml_string_of_jsbytes("message"), + cst_pause=caml_string_of_jsbytes("pause"), + cst_play=caml_string_of_jsbytes("play"), + cst_playing=caml_string_of_jsbytes("playing"), + cst_pointerenter=caml_string_of_jsbytes("pointerenter"), + cst_pointercancel=caml_string_of_jsbytes("pointercancel"), + cst_pointerdown=caml_string_of_jsbytes("pointerdown"), + cst_pointerleave=caml_string_of_jsbytes("pointerleave"), + cst_pointermove=caml_string_of_jsbytes("pointermove"), + cst_pointerout=caml_string_of_jsbytes("pointerout"), + cst_pointerover=caml_string_of_jsbytes("pointerover"), + cst_pointerup=caml_string_of_jsbytes("pointerup"), + cst_ratechange=caml_string_of_jsbytes("ratechange"), + cst_seeked=caml_string_of_jsbytes("seeked"), + cst_seeking=caml_string_of_jsbytes("seeking"), + cst_stalled=caml_string_of_jsbytes("stalled"), + cst_suspend=caml_string_of_jsbytes("suspend"), + cst_volumechange=caml_string_of_jsbytes("volumechange"), + cst_waiting=caml_string_of_jsbytes("waiting"), + cst_Js_of_ocaml_Dom_html_Canva= + caml_string_of_jsbytes("Js_of_ocaml__Dom_html.Canvas_not_available"), + cst_checkbox=caml_string_of_jsbytes("checkbox"), + cst_file=caml_string_of_jsbytes("file"), + cst_password=caml_string_of_jsbytes("password"), + cst_radio=caml_string_of_jsbytes("radio"), + cst_reset=caml_string_of_jsbytes("reset"), + cst_submit$0=caml_string_of_jsbytes("submit"), + cst_text=caml_string_of_jsbytes("text"), + cst_readystatechange=caml_string_of_jsbytes("readystatechange"), + cst_loadstart$1=caml_string_of_jsbytes("loadstart"), + cst_progress$1=caml_string_of_jsbytes("progress"), + cst_abort$1=caml_string_of_jsbytes("abort"), + cst_error$1=caml_string_of_jsbytes("error"), + cst_load$1=caml_string_of_jsbytes("load"), + cst_timeout=caml_string_of_jsbytes("timeout"), + cst_loadend$0=caml_string_of_jsbytes("loadend"), + cst_Worker_onmessage_is_undefi$0= + caml_string_of_jsbytes("Worker.onmessage is undefined"), + cst_Worker_onmessage_is_undefi= + caml_string_of_jsbytes("Worker.onmessage is undefined"), + cst_Worker_import_scripts_is_u= + caml_string_of_jsbytes("Worker.import_scripts is undefined"), + cst_webglcontextlost=caml_string_of_jsbytes("webglcontextlost"), + cst_webglcontextrestored=caml_string_of_jsbytes("webglcontextrestored"), + cst_webglcontextcreationerror= + caml_string_of_jsbytes("webglcontextcreationerror"), + cst_g=caml_string_of_jsbytes("g"), + cst=caml_string_of_jsbytes("[\\][()\\\\|+*.?{}^$]"), + cst$37=caml_string_of_jsbytes(""), + cst$13=caml_string_of_jsbytes(""), + cst$21=caml_string_of_jsbytes(""), + cst$14=caml_string_of_jsbytes("#"), + cst$15=caml_string_of_jsbytes("?"), + cst$20=caml_string_of_jsbytes(""), + cst$16=caml_string_of_jsbytes("/"), + cst$17=caml_string_of_jsbytes("/"), + cst$19=caml_string_of_jsbytes(":"), + cst$18=caml_string_of_jsbytes(""), + cst_http$1=caml_string_of_jsbytes("http://"), + cst$22=caml_string_of_jsbytes(""), + cst$30=caml_string_of_jsbytes(""), + cst$23=caml_string_of_jsbytes("#"), + cst$24=caml_string_of_jsbytes("?"), + cst$29=caml_string_of_jsbytes(""), + cst$25=caml_string_of_jsbytes("/"), + cst$26=caml_string_of_jsbytes("/"), + cst$28=caml_string_of_jsbytes(":"), + cst$27=caml_string_of_jsbytes(""), + cst_https$1=caml_string_of_jsbytes("https://"), + cst$31=caml_string_of_jsbytes(""), + cst$36=caml_string_of_jsbytes(""), + cst$32=caml_string_of_jsbytes("#"), + cst$33=caml_string_of_jsbytes("?"), + cst$35=caml_string_of_jsbytes(""), + cst$34=caml_string_of_jsbytes("/"), + cst_file$2=caml_string_of_jsbytes("file://"), + cst$12=caml_string_of_jsbytes(""), + cst$11=caml_string_of_jsbytes(""), + cst$10=caml_string_of_jsbytes(""), + cst$9=caml_string_of_jsbytes(""), + cst$8=caml_string_of_jsbytes(""), + cst$7=caml_string_of_jsbytes(""), + cst$6=caml_string_of_jsbytes(""), + cst$4=caml_string_of_jsbytes("="), + cst$5=caml_string_of_jsbytes("&"), + cst$2=caml_string_of_jsbytes(""), + cst$3=caml_string_of_jsbytes(""), + cst_file$0=caml_string_of_jsbytes("file"), + cst_file$1=caml_string_of_jsbytes("file:"), + cst_http=caml_string_of_jsbytes("http"), + cst_http$0=caml_string_of_jsbytes("http:"), + cst_https=caml_string_of_jsbytes("https"), + cst_https$0=caml_string_of_jsbytes("https:"), + cst$1=caml_string_of_jsbytes(" "), + cst_2B=caml_string_of_jsbytes("%2B"), + cst_Js_of_ocaml_Url_Local_exn= + caml_string_of_jsbytes("Js_of_ocaml__Url.Local_exn"), + cst$0=caml_string_of_jsbytes("+"), + cst_Js_of_ocaml_Url_Not_an_htt= + caml_string_of_jsbytes("Js_of_ocaml__Url.Not_an_http_protocol"), + cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0= + caml_string_of_jsbytes + ("^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9a-zA-Z.-]+\\]|\\[[0-9A-Fa-f:.]+\\])?(:([0-9]+))?(/([^\\?#]*)(\\?([^#]*))?(#(.*))?)?$"), + cst_Ff_Ii_Ll_Ee= + caml_string_of_jsbytes + ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"), + s=caml_string_of_jsbytes("4.0.0"), + git_version=caml_string_of_jsbytes(""), + cst$38=caml_string_of_jsbytes(""), + cst$41=caml_string_of_jsbytes("+"), + cst_Jstable_keys=caml_string_of_jsbytes("Jstable.keys"), + t5=runtime.caml_int64_create_lo_mi_hi(1,0,0), + cst_is_not_a_valid_length$0= + caml_string_of_jsbytes(" is not a valid length"), + cst_d_d_deg_grad_rad_turns= + caml_string_of_jsbytes("^(\\d*(?:\\.\\d*))(deg|grad|rad|turns)$"), + cst_length_conversion_error$0= + caml_string_of_jsbytes("length conversion error: "), + cst_deg$0=caml_string_of_jsbytes("deg"), + cst_grad$0=caml_string_of_jsbytes("grad"), + cst_rad$0=caml_string_of_jsbytes("rad"), + cst_turns$0=caml_string_of_jsbytes("turns"), + cst_deg=caml_string_of_jsbytes("deg"), + cst_grad=caml_string_of_jsbytes("grad"), + cst_rad=caml_string_of_jsbytes("rad"), + cst_turns=caml_string_of_jsbytes("turns"), + cst_is_not_a_valid_length= + caml_string_of_jsbytes(" is not a valid length"), + cst_0$0=caml_string_of_jsbytes("0"), + cst_d_d_s_S=caml_string_of_jsbytes("^(\\d*(?:\\.\\d*)?)\\s*(\\S*)$"), + cst_length_conversion_error= + caml_string_of_jsbytes("length conversion error: "), + cst_pc$0=caml_string_of_jsbytes("pc"), + cst_ch$0=caml_string_of_jsbytes("ch"), + cst_cm$0=caml_string_of_jsbytes("cm"), + cst_em$1=caml_string_of_jsbytes("em"), + cst_ex$0=caml_string_of_jsbytes("ex"), + cst_gd$0=caml_string_of_jsbytes("gd"), + cst_in$0=caml_string_of_jsbytes("in"), + cst_mm$0=caml_string_of_jsbytes("mm"), + cst_pt$0=caml_string_of_jsbytes("pt"), + cst_px$0=caml_string_of_jsbytes("px"), + cst_rem$0=caml_string_of_jsbytes("rem"), + cst_vh$0=caml_string_of_jsbytes("vh"), + cst_vm$0=caml_string_of_jsbytes("vm"), + cst_vw$0=caml_string_of_jsbytes("vw"), + cst_0=caml_string_of_jsbytes("0"), + cst_em$0=caml_string_of_jsbytes("em"), + cst_ex=caml_string_of_jsbytes("ex"), + cst_px=caml_string_of_jsbytes("px"), + cst_gd=caml_string_of_jsbytes("gd"), + cst_rem=caml_string_of_jsbytes("rem"), + cst_vw=caml_string_of_jsbytes("vw"), + cst_vh=caml_string_of_jsbytes("vh"), + cst_vm=caml_string_of_jsbytes("vm"), + cst_ch=caml_string_of_jsbytes("ch"), + cst_mm=caml_string_of_jsbytes("mm"), + cst_cm=caml_string_of_jsbytes("cm"), + cst_in=caml_string_of_jsbytes("in"), + cst_pt=caml_string_of_jsbytes("pt"), + cst_pc=caml_string_of_jsbytes("pc"), + cst$40=caml_string_of_jsbytes("): "), + cst_color_conversion_error$0= + caml_string_of_jsbytes("color conversion error ("), + cst$39=caml_string_of_jsbytes("): "), + cst_color_conversion_error= + caml_string_of_jsbytes("color conversion error ("), + cst_is_not_a_valid_color$0= + caml_string_of_jsbytes(" is not a valid color"), + cst_rgba_d_d_d_d_d= + caml_string_of_jsbytes + ("(rgba?)\\((?:(\\d*),(\\d*),(\\d*)(?:,(\\d*(?:\\.\\d*)?))?)\\)"), + cst_rgba_d_d_d_d_d$0= + caml_string_of_jsbytes + ("(rgba?)\\((?:(\\d*)%,(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"), + cst_hsla_d_d_d_d_d= + caml_string_of_jsbytes + ("(hsla?)\\((?:(\\d*),(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"), + cst_rgb=caml_string_of_jsbytes("rgb"), + cst_rgba=caml_string_of_jsbytes("rgba"), + cst_rgb$0=caml_string_of_jsbytes("rgb"), + cst_rgba$0=caml_string_of_jsbytes("rgba"), + cst_hsl=caml_string_of_jsbytes("hsl"), + cst_hsla=caml_string_of_jsbytes("hsla"), + cst_rgb_s_d_s_d_s_d= + caml_string_of_jsbytes("^rgb\\(\\s*\\d*,\\s*\\d*,\\s*\\d*\\)$"), + cst_rgb_s_d_s_d_s_d$0= + caml_string_of_jsbytes("^rgb\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%\\)$"), + cst_rgba_s_d_s_d_s_d_d_d= + caml_string_of_jsbytes + ("^rgba\\(\\s*\\d*,\\s*\\d*,\\s*\\d*,\\d*\\.?\\d*\\)$"), + cst_rgba_s_d_s_d_s_d_d_d$0= + caml_string_of_jsbytes + ("^rgba\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"), + cst_hsl_s_d_s_d_s_d= + caml_string_of_jsbytes("^hsl\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%\\)$"), + cst_hsla_s_d_s_d_s_d_d_d= + caml_string_of_jsbytes + ("^hsla\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"), + cst_is_not_a_valid_color=caml_string_of_jsbytes(" is not a valid color"), + cst_is_out_of_valid_range= + caml_string_of_jsbytes(" is out of valid range"), + partial=[8,[0,0,0],0,0,[12,41,0]], + partial$0=[12,41,0], + partial$1=[0,0,0], + cst_lightgrey$0=caml_string_of_jsbytes("lightgrey"), + cst_darkslategray$0=caml_string_of_jsbytes("darkslategray"), + cst_cornsilk$0=caml_string_of_jsbytes("cornsilk"), + cst_blue$0=caml_string_of_jsbytes("blue"), + cst_aliceblue$0=caml_string_of_jsbytes("aliceblue"), + cst_antiquewhite$0=caml_string_of_jsbytes("antiquewhite"), + cst_aqua$0=caml_string_of_jsbytes("aqua"), + cst_aquamarine$0=caml_string_of_jsbytes("aquamarine"), + cst_azure$0=caml_string_of_jsbytes("azure"), + cst_beige$0=caml_string_of_jsbytes("beige"), + cst_bisque$0=caml_string_of_jsbytes("bisque"), + cst_black$0=caml_string_of_jsbytes("black"), + cst_blanchedalmond$0=caml_string_of_jsbytes("blanchedalmond"), + cst_blueviolet$0=caml_string_of_jsbytes("blueviolet"), + cst_brown$0=caml_string_of_jsbytes("brown"), + cst_burlywood$0=caml_string_of_jsbytes("burlywood"), + cst_cadetblue$0=caml_string_of_jsbytes("cadetblue"), + cst_chartreuse$0=caml_string_of_jsbytes("chartreuse"), + cst_chocolate$0=caml_string_of_jsbytes("chocolate"), + cst_coral$0=caml_string_of_jsbytes("coral"), + cst_cornflowerblue$0=caml_string_of_jsbytes("cornflowerblue"), + cst_darkkhaki$0=caml_string_of_jsbytes("darkkhaki"), + cst_crimson$0=caml_string_of_jsbytes("crimson"), + cst_cyan$0=caml_string_of_jsbytes("cyan"), + cst_darkblue$0=caml_string_of_jsbytes("darkblue"), + cst_darkcyan$0=caml_string_of_jsbytes("darkcyan"), + cst_darkgoldenrod$0=caml_string_of_jsbytes("darkgoldenrod"), + cst_darkgray$0=caml_string_of_jsbytes("darkgray"), + cst_darkgreen$0=caml_string_of_jsbytes("darkgreen"), + cst_darkgrey$0=caml_string_of_jsbytes("darkgrey"), + cst_darkmagenta$0=caml_string_of_jsbytes("darkmagenta"), + cst_darkolivegreen$0=caml_string_of_jsbytes("darkolivegreen"), + cst_darkorange$0=caml_string_of_jsbytes("darkorange"), + cst_darkorchid$0=caml_string_of_jsbytes("darkorchid"), + cst_darkred$0=caml_string_of_jsbytes("darkred"), + cst_darksalmon$0=caml_string_of_jsbytes("darksalmon"), + cst_darkseagreen$0=caml_string_of_jsbytes("darkseagreen"), + cst_darkslateblue$0=caml_string_of_jsbytes("darkslateblue"), + cst_greenyellow$0=caml_string_of_jsbytes("greenyellow"), + cst_floralwhite$0=caml_string_of_jsbytes("floralwhite"), + cst_darkslategrey$0=caml_string_of_jsbytes("darkslategrey"), + cst_darkturquoise$0=caml_string_of_jsbytes("darkturquoise"), + cst_darkviolet$0=caml_string_of_jsbytes("darkviolet"), + cst_deeppink$0=caml_string_of_jsbytes("deeppink"), + cst_deepskyblue$0=caml_string_of_jsbytes("deepskyblue"), + cst_dimgray$0=caml_string_of_jsbytes("dimgray"), + cst_dimgrey$0=caml_string_of_jsbytes("dimgrey"), + cst_dodgerblue$0=caml_string_of_jsbytes("dodgerblue"), + cst_firebrick$0=caml_string_of_jsbytes("firebrick"), + cst_forestgreen$0=caml_string_of_jsbytes("forestgreen"), + cst_fuchsia$0=caml_string_of_jsbytes("fuchsia"), + cst_gainsboro$0=caml_string_of_jsbytes("gainsboro"), + cst_ghostwhite$0=caml_string_of_jsbytes("ghostwhite"), + cst_gold$0=caml_string_of_jsbytes("gold"), + cst_goldenrod$0=caml_string_of_jsbytes("goldenrod"), + cst_gray$0=caml_string_of_jsbytes("gray"), + cst_green$0=caml_string_of_jsbytes("green"), + cst_lavenderblush$0=caml_string_of_jsbytes("lavenderblush"), + cst_grey$0=caml_string_of_jsbytes("grey"), + cst_honeydew$0=caml_string_of_jsbytes("honeydew"), + cst_hotpink$0=caml_string_of_jsbytes("hotpink"), + cst_indianred$0=caml_string_of_jsbytes("indianred"), + cst_indigo$0=caml_string_of_jsbytes("indigo"), + cst_ivory$0=caml_string_of_jsbytes("ivory"), + cst_khaki$0=caml_string_of_jsbytes("khaki"), + cst_lavender$0=caml_string_of_jsbytes("lavender"), + cst_lawngreen$0=caml_string_of_jsbytes("lawngreen"), + cst_lemonchiffon$0=caml_string_of_jsbytes("lemonchiffon"), + cst_lightblue$0=caml_string_of_jsbytes("lightblue"), + cst_lightcoral$0=caml_string_of_jsbytes("lightcoral"), + cst_lightcyan$0=caml_string_of_jsbytes("lightcyan"), + cst_lightgoldenrodyellow$0=caml_string_of_jsbytes("lightgoldenrodyellow"), + cst_lightgray$0=caml_string_of_jsbytes("lightgray"), + cst_lightgreen$0=caml_string_of_jsbytes("lightgreen"), + cst_paleturquoise$0=caml_string_of_jsbytes("paleturquoise"), + cst_mediumslateblue$0=caml_string_of_jsbytes("mediumslateblue"), + cst_limegreen$0=caml_string_of_jsbytes("limegreen"), + cst_lightpink$0=caml_string_of_jsbytes("lightpink"), + cst_lightsalmon$0=caml_string_of_jsbytes("lightsalmon"), + cst_lightseagreen$0=caml_string_of_jsbytes("lightseagreen"), + cst_lightskyblue$0=caml_string_of_jsbytes("lightskyblue"), + cst_lightslategray$0=caml_string_of_jsbytes("lightslategray"), + cst_lightslategrey$0=caml_string_of_jsbytes("lightslategrey"), + cst_lightsteelblue$0=caml_string_of_jsbytes("lightsteelblue"), + cst_lightyellow$0=caml_string_of_jsbytes("lightyellow"), + cst_lime$0=caml_string_of_jsbytes("lime"), + cst_linen$0=caml_string_of_jsbytes("linen"), + cst_magenta$0=caml_string_of_jsbytes("magenta"), + cst_maroon$0=caml_string_of_jsbytes("maroon"), + cst_mediumaquamarine$0=caml_string_of_jsbytes("mediumaquamarine"), + cst_mediumblue$0=caml_string_of_jsbytes("mediumblue"), + cst_mediumorchid$0=caml_string_of_jsbytes("mediumorchid"), + cst_mediumpurple$0=caml_string_of_jsbytes("mediumpurple"), + cst_mediumseagreen$0=caml_string_of_jsbytes("mediumseagreen"), + cst_navy$0=caml_string_of_jsbytes("navy"), + cst_mediumspringgreen$0=caml_string_of_jsbytes("mediumspringgreen"), + cst_mediumturquoise$0=caml_string_of_jsbytes("mediumturquoise"), + cst_mediumvioletred$0=caml_string_of_jsbytes("mediumvioletred"), + cst_midnightblue$0=caml_string_of_jsbytes("midnightblue"), + cst_mintcream$0=caml_string_of_jsbytes("mintcream"), + cst_mistyrose$0=caml_string_of_jsbytes("mistyrose"), + cst_moccasin$0=caml_string_of_jsbytes("moccasin"), + cst_navajowhite$0=caml_string_of_jsbytes("navajowhite"), + cst_oldlace$0=caml_string_of_jsbytes("oldlace"), + cst_olive$0=caml_string_of_jsbytes("olive"), + cst_olivedrab$0=caml_string_of_jsbytes("olivedrab"), + cst_orange$0=caml_string_of_jsbytes("orange"), + cst_orangered$0=caml_string_of_jsbytes("orangered"), + cst_orchid$0=caml_string_of_jsbytes("orchid"), + cst_palegoldenrod$0=caml_string_of_jsbytes("palegoldenrod"), + cst_palegreen$0=caml_string_of_jsbytes("palegreen"), + cst_skyblue$0=caml_string_of_jsbytes("skyblue"), + cst_rosybrown$0=caml_string_of_jsbytes("rosybrown"), + cst_palevioletred$0=caml_string_of_jsbytes("palevioletred"), + cst_papayawhip$0=caml_string_of_jsbytes("papayawhip"), + cst_peachpuff$0=caml_string_of_jsbytes("peachpuff"), + cst_peru$0=caml_string_of_jsbytes("peru"), + cst_pink$0=caml_string_of_jsbytes("pink"), + cst_plum$0=caml_string_of_jsbytes("plum"), + cst_powderblue$0=caml_string_of_jsbytes("powderblue"), + cst_purple$0=caml_string_of_jsbytes("purple"), + cst_red$0=caml_string_of_jsbytes("red"), + cst_royalblue$0=caml_string_of_jsbytes("royalblue"), + cst_saddlebrown$0=caml_string_of_jsbytes("saddlebrown"), + cst_salmon$0=caml_string_of_jsbytes("salmon"), + cst_sandybrown$0=caml_string_of_jsbytes("sandybrown"), + cst_seagreen$0=caml_string_of_jsbytes("seagreen"), + cst_seashell$0=caml_string_of_jsbytes("seashell"), + cst_sienna$0=caml_string_of_jsbytes("sienna"), + cst_silver$0=caml_string_of_jsbytes("silver"), + cst_thistle$0=caml_string_of_jsbytes("thistle"), + cst_slateblue$0=caml_string_of_jsbytes("slateblue"), + cst_slategray$0=caml_string_of_jsbytes("slategray"), + cst_slategrey$0=caml_string_of_jsbytes("slategrey"), + cst_snow$0=caml_string_of_jsbytes("snow"), + cst_springgreen$0=caml_string_of_jsbytes("springgreen"), + cst_steelblue$0=caml_string_of_jsbytes("steelblue"), + cst_tan$0=caml_string_of_jsbytes("tan"), + cst_teal$0=caml_string_of_jsbytes("teal"), + cst_tomato$0=caml_string_of_jsbytes("tomato"), + cst_turquoise$0=caml_string_of_jsbytes("turquoise"), + cst_violet$0=caml_string_of_jsbytes("violet"), + cst_wheat$0=caml_string_of_jsbytes("wheat"), + cst_white$0=caml_string_of_jsbytes("white"), + cst_whitesmoke$0=caml_string_of_jsbytes("whitesmoke"), + cst_yellow$0=caml_string_of_jsbytes("yellow"), + cst_yellowgreen$0=caml_string_of_jsbytes("yellowgreen"), + cst_is_not_a_valid_color_name= + caml_string_of_jsbytes(" is not a valid color name"), + cst_aliceblue=caml_string_of_jsbytes("aliceblue"), + cst_antiquewhite=caml_string_of_jsbytes("antiquewhite"), + cst_aqua=caml_string_of_jsbytes("aqua"), + cst_aquamarine=caml_string_of_jsbytes("aquamarine"), + cst_azure=caml_string_of_jsbytes("azure"), + cst_beige=caml_string_of_jsbytes("beige"), + cst_bisque=caml_string_of_jsbytes("bisque"), + cst_black=caml_string_of_jsbytes("black"), + cst_blanchedalmond=caml_string_of_jsbytes("blanchedalmond"), + cst_blue=caml_string_of_jsbytes("blue"), + cst_blueviolet=caml_string_of_jsbytes("blueviolet"), + cst_brown=caml_string_of_jsbytes("brown"), + cst_burlywood=caml_string_of_jsbytes("burlywood"), + cst_cadetblue=caml_string_of_jsbytes("cadetblue"), + cst_chartreuse=caml_string_of_jsbytes("chartreuse"), + cst_chocolate=caml_string_of_jsbytes("chocolate"), + cst_coral=caml_string_of_jsbytes("coral"), + cst_cornflowerblue=caml_string_of_jsbytes("cornflowerblue"), + cst_cornsilk=caml_string_of_jsbytes("cornsilk"), + cst_crimson=caml_string_of_jsbytes("crimson"), + cst_cyan=caml_string_of_jsbytes("cyan"), + cst_darkblue=caml_string_of_jsbytes("darkblue"), + cst_darkcyan=caml_string_of_jsbytes("darkcyan"), + cst_darkgoldenrod=caml_string_of_jsbytes("darkgoldenrod"), + cst_darkgray=caml_string_of_jsbytes("darkgray"), + cst_darkgreen=caml_string_of_jsbytes("darkgreen"), + cst_darkgrey=caml_string_of_jsbytes("darkgrey"), + cst_darkkhaki=caml_string_of_jsbytes("darkkhaki"), + cst_darkmagenta=caml_string_of_jsbytes("darkmagenta"), + cst_darkolivegreen=caml_string_of_jsbytes("darkolivegreen"), + cst_darkorange=caml_string_of_jsbytes("darkorange"), + cst_darkorchid=caml_string_of_jsbytes("darkorchid"), + cst_darkred=caml_string_of_jsbytes("darkred"), + cst_darksalmon=caml_string_of_jsbytes("darksalmon"), + cst_darkseagreen=caml_string_of_jsbytes("darkseagreen"), + cst_darkslateblue=caml_string_of_jsbytes("darkslateblue"), + cst_darkslategray=caml_string_of_jsbytes("darkslategray"), + cst_darkslategrey=caml_string_of_jsbytes("darkslategrey"), + cst_darkturquoise=caml_string_of_jsbytes("darkturquoise"), + cst_darkviolet=caml_string_of_jsbytes("darkviolet"), + cst_deeppink=caml_string_of_jsbytes("deeppink"), + cst_deepskyblue=caml_string_of_jsbytes("deepskyblue"), + cst_dimgray=caml_string_of_jsbytes("dimgray"), + cst_dimgrey=caml_string_of_jsbytes("dimgrey"), + cst_dodgerblue=caml_string_of_jsbytes("dodgerblue"), + cst_firebrick=caml_string_of_jsbytes("firebrick"), + cst_floralwhite=caml_string_of_jsbytes("floralwhite"), + cst_forestgreen=caml_string_of_jsbytes("forestgreen"), + cst_fuchsia=caml_string_of_jsbytes("fuchsia"), + cst_gainsboro=caml_string_of_jsbytes("gainsboro"), + cst_ghostwhite=caml_string_of_jsbytes("ghostwhite"), + cst_gold=caml_string_of_jsbytes("gold"), + cst_goldenrod=caml_string_of_jsbytes("goldenrod"), + cst_gray=caml_string_of_jsbytes("gray"), + cst_grey=caml_string_of_jsbytes("grey"), + cst_green=caml_string_of_jsbytes("green"), + cst_greenyellow=caml_string_of_jsbytes("greenyellow"), + cst_honeydew=caml_string_of_jsbytes("honeydew"), + cst_hotpink=caml_string_of_jsbytes("hotpink"), + cst_indianred=caml_string_of_jsbytes("indianred"), + cst_indigo=caml_string_of_jsbytes("indigo"), + cst_ivory=caml_string_of_jsbytes("ivory"), + cst_khaki=caml_string_of_jsbytes("khaki"), + cst_lavender=caml_string_of_jsbytes("lavender"), + cst_lavenderblush=caml_string_of_jsbytes("lavenderblush"), + cst_lawngreen=caml_string_of_jsbytes("lawngreen"), + cst_lemonchiffon=caml_string_of_jsbytes("lemonchiffon"), + cst_lightblue=caml_string_of_jsbytes("lightblue"), + cst_lightcoral=caml_string_of_jsbytes("lightcoral"), + cst_lightcyan=caml_string_of_jsbytes("lightcyan"), + cst_lightgoldenrodyellow=caml_string_of_jsbytes("lightgoldenrodyellow"), + cst_lightgray=caml_string_of_jsbytes("lightgray"), + cst_lightgreen=caml_string_of_jsbytes("lightgreen"), + cst_lightgrey=caml_string_of_jsbytes("lightgrey"), + cst_lightpink=caml_string_of_jsbytes("lightpink"), + cst_lightsalmon=caml_string_of_jsbytes("lightsalmon"), + cst_lightseagreen=caml_string_of_jsbytes("lightseagreen"), + cst_lightskyblue=caml_string_of_jsbytes("lightskyblue"), + cst_lightslategray=caml_string_of_jsbytes("lightslategray"), + cst_lightslategrey=caml_string_of_jsbytes("lightslategrey"), + cst_lightsteelblue=caml_string_of_jsbytes("lightsteelblue"), + cst_lightyellow=caml_string_of_jsbytes("lightyellow"), + cst_lime=caml_string_of_jsbytes("lime"), + cst_limegreen=caml_string_of_jsbytes("limegreen"), + cst_linen=caml_string_of_jsbytes("linen"), + cst_magenta=caml_string_of_jsbytes("magenta"), + cst_maroon=caml_string_of_jsbytes("maroon"), + cst_mediumaquamarine=caml_string_of_jsbytes("mediumaquamarine"), + cst_mediumblue=caml_string_of_jsbytes("mediumblue"), + cst_mediumorchid=caml_string_of_jsbytes("mediumorchid"), + cst_mediumpurple=caml_string_of_jsbytes("mediumpurple"), + cst_mediumseagreen=caml_string_of_jsbytes("mediumseagreen"), + cst_mediumslateblue=caml_string_of_jsbytes("mediumslateblue"), + cst_mediumspringgreen=caml_string_of_jsbytes("mediumspringgreen"), + cst_mediumturquoise=caml_string_of_jsbytes("mediumturquoise"), + cst_mediumvioletred=caml_string_of_jsbytes("mediumvioletred"), + cst_midnightblue=caml_string_of_jsbytes("midnightblue"), + cst_mintcream=caml_string_of_jsbytes("mintcream"), + cst_mistyrose=caml_string_of_jsbytes("mistyrose"), + cst_moccasin=caml_string_of_jsbytes("moccasin"), + cst_navajowhite=caml_string_of_jsbytes("navajowhite"), + cst_navy=caml_string_of_jsbytes("navy"), + cst_oldlace=caml_string_of_jsbytes("oldlace"), + cst_olive=caml_string_of_jsbytes("olive"), + cst_olivedrab=caml_string_of_jsbytes("olivedrab"), + cst_orange=caml_string_of_jsbytes("orange"), + cst_orangered=caml_string_of_jsbytes("orangered"), + cst_orchid=caml_string_of_jsbytes("orchid"), + cst_palegoldenrod=caml_string_of_jsbytes("palegoldenrod"), + cst_palegreen=caml_string_of_jsbytes("palegreen"), + cst_paleturquoise=caml_string_of_jsbytes("paleturquoise"), + cst_palevioletred=caml_string_of_jsbytes("palevioletred"), + cst_papayawhip=caml_string_of_jsbytes("papayawhip"), + cst_peachpuff=caml_string_of_jsbytes("peachpuff"), + cst_peru=caml_string_of_jsbytes("peru"), + cst_pink=caml_string_of_jsbytes("pink"), + cst_plum=caml_string_of_jsbytes("plum"), + cst_powderblue=caml_string_of_jsbytes("powderblue"), + cst_purple=caml_string_of_jsbytes("purple"), + cst_red=caml_string_of_jsbytes("red"), + cst_rosybrown=caml_string_of_jsbytes("rosybrown"), + cst_royalblue=caml_string_of_jsbytes("royalblue"), + cst_saddlebrown=caml_string_of_jsbytes("saddlebrown"), + cst_salmon=caml_string_of_jsbytes("salmon"), + cst_sandybrown=caml_string_of_jsbytes("sandybrown"), + cst_seagreen=caml_string_of_jsbytes("seagreen"), + cst_seashell=caml_string_of_jsbytes("seashell"), + cst_sienna=caml_string_of_jsbytes("sienna"), + cst_silver=caml_string_of_jsbytes("silver"), + cst_skyblue=caml_string_of_jsbytes("skyblue"), + cst_slateblue=caml_string_of_jsbytes("slateblue"), + cst_slategray=caml_string_of_jsbytes("slategray"), + cst_slategrey=caml_string_of_jsbytes("slategrey"), + cst_snow=caml_string_of_jsbytes("snow"), + cst_springgreen=caml_string_of_jsbytes("springgreen"), + cst_steelblue=caml_string_of_jsbytes("steelblue"), + cst_tan=caml_string_of_jsbytes("tan"), + cst_teal=caml_string_of_jsbytes("teal"), + cst_thistle=caml_string_of_jsbytes("thistle"), + cst_tomato=caml_string_of_jsbytes("tomato"), + cst_turquoise=caml_string_of_jsbytes("turquoise"), + cst_violet=caml_string_of_jsbytes("violet"), + cst_wheat=caml_string_of_jsbytes("wheat"), + cst_white=caml_string_of_jsbytes("white"), + cst_whitesmoke=caml_string_of_jsbytes("whitesmoke"), + cst_yellow=caml_string_of_jsbytes("yellow"), + cst_yellowgreen=caml_string_of_jsbytes("yellowgreen"), + cst_vkern$0=caml_string_of_jsbytes("vkern"), + cst_view$0=caml_string_of_jsbytes("view"), + cst_use$0=caml_string_of_jsbytes("use"), + cst_tspan$0=caml_string_of_jsbytes("tspan"), + cst_tref$0=caml_string_of_jsbytes("tref"), + cst_title$3=caml_string_of_jsbytes("title"), + cst_textpath$0=caml_string_of_jsbytes("textpath"), + cst_text$1=caml_string_of_jsbytes("text"), + cst_symbol$0=caml_string_of_jsbytes("symbol"), + cst_switch$0=caml_string_of_jsbytes("switch"), + cst_svg$0=caml_string_of_jsbytes("svg"), + cst_style$3=caml_string_of_jsbytes("style"), + cst_stop$0=caml_string_of_jsbytes("stop"), + cst_set$0=caml_string_of_jsbytes("set"), + cst_script$3=caml_string_of_jsbytes("script"), + cst_rect$0=caml_string_of_jsbytes("rect"), + cst_radialgradient$0=caml_string_of_jsbytes("radialgradient"), + cst_polyline$0=caml_string_of_jsbytes("polyline"), + cst_polygon$0=caml_string_of_jsbytes("polygon"), + cst_pattern$0=caml_string_of_jsbytes("pattern"), + cst_path$0=caml_string_of_jsbytes("path"), + cst_mpath$0=caml_string_of_jsbytes("mpath"), + cst_missing_glyph$0=caml_string_of_jsbytes("missing-glyph"), + cst_metadata$0=caml_string_of_jsbytes("metadata"), + cst_mask$0=caml_string_of_jsbytes("mask"), + cst_lineargradient$0=caml_string_of_jsbytes("lineargradient"), + cst_line$0=caml_string_of_jsbytes("line"), + cst_image$0=caml_string_of_jsbytes("image"), + cst_hkern$0=caml_string_of_jsbytes("hkern"), + cst_glyphref$0=caml_string_of_jsbytes("glyphref"), + cst_glyph$0=caml_string_of_jsbytes("glyph"), + cst_g$1=caml_string_of_jsbytes("g"), + cst_foreignobject=caml_string_of_jsbytes("foreignobject"), + cst_font_face_uri$0=caml_string_of_jsbytes("font-face-uri"), + cst_font_face_src$0=caml_string_of_jsbytes("font-face-src"), + cst_font_face_name$0=caml_string_of_jsbytes("font-face-name"), + cst_font_face_format$0=caml_string_of_jsbytes("font-face-format"), + cst_font_face$0=caml_string_of_jsbytes("font-face"), + cst_font$0=caml_string_of_jsbytes("font"), + cst_filter$0=caml_string_of_jsbytes("filter"), + cst_ellipse$0=caml_string_of_jsbytes("ellipse"), + cst_desc$0=caml_string_of_jsbytes("desc"), + cst_defs$0=caml_string_of_jsbytes("defs"), + cst_cursor$0=caml_string_of_jsbytes("cursor"), + cst_clippath$0=caml_string_of_jsbytes("clippath"), + cst_circle$0=caml_string_of_jsbytes("circle"), + cst_animatetransform$0=caml_string_of_jsbytes("animatetransform"), + cst_animatemotion$0=caml_string_of_jsbytes("animatemotion"), + cst_animatecolor$0=caml_string_of_jsbytes("animatecolor"), + cst_animate$0=caml_string_of_jsbytes("animate"), + cst_altglyphitem$0=caml_string_of_jsbytes("altglyphitem"), + cst_altglyphdef$0=caml_string_of_jsbytes("altglyphdef"), + cst_altglyph$0=caml_string_of_jsbytes("altglyph"), + cst_a$3=caml_string_of_jsbytes("a"), + cst_vkern=caml_string_of_jsbytes("vkern"), + cst_view=caml_string_of_jsbytes("view"), + cst_use=caml_string_of_jsbytes("use"), + cst_tspan=caml_string_of_jsbytes("tspan"), + cst_tref=caml_string_of_jsbytes("tref"), + cst_title$2=caml_string_of_jsbytes("title"), + cst_textpath=caml_string_of_jsbytes("textpath"), + cst_text$0=caml_string_of_jsbytes("text"), + cst_symbol=caml_string_of_jsbytes("symbol"), + cst_switch=caml_string_of_jsbytes("switch"), + cst_svg=caml_string_of_jsbytes("svg"), + cst_style$2=caml_string_of_jsbytes("style"), + cst_stop=caml_string_of_jsbytes("stop"), + cst_set=caml_string_of_jsbytes("set"), + cst_script$2=caml_string_of_jsbytes("script"), + cst_rect=caml_string_of_jsbytes("rect"), + cst_radialgradient=caml_string_of_jsbytes("radialgradient"), + cst_polyline=caml_string_of_jsbytes("polyline"), + cst_polygon=caml_string_of_jsbytes("polygon"), + cst_pattern=caml_string_of_jsbytes("pattern"), + cst_path=caml_string_of_jsbytes("path"), + cst_mpath=caml_string_of_jsbytes("mpath"), + cst_missing_glyph=caml_string_of_jsbytes("missing-glyph"), + cst_metadata=caml_string_of_jsbytes("metadata"), + cst_mask=caml_string_of_jsbytes("mask"), + cst_lineargradient=caml_string_of_jsbytes("lineargradient"), + cst_line=caml_string_of_jsbytes("line"), + cst_image=caml_string_of_jsbytes("image"), + cst_hkern=caml_string_of_jsbytes("hkern"), + cst_glyphref=caml_string_of_jsbytes("glyphref"), + cst_glyph=caml_string_of_jsbytes("glyph"), + cst_g$0=caml_string_of_jsbytes("g"), + cst_foreignObject=caml_string_of_jsbytes("foreignObject"), + cst_font_face_uri=caml_string_of_jsbytes("font-face-uri"), + cst_font_face_src=caml_string_of_jsbytes("font-face-src"), + cst_font_face_name=caml_string_of_jsbytes("font-face-name"), + cst_font_face_format=caml_string_of_jsbytes("font-face-format"), + cst_font_face=caml_string_of_jsbytes("font-face"), + cst_font=caml_string_of_jsbytes("font"), + cst_filter=caml_string_of_jsbytes("filter"), + cst_ellipse=caml_string_of_jsbytes("ellipse"), + cst_desc=caml_string_of_jsbytes("desc"), + cst_defs=caml_string_of_jsbytes("defs"), + cst_cursor=caml_string_of_jsbytes("cursor"), + cst_clippath=caml_string_of_jsbytes("clippath"), + cst_circle=caml_string_of_jsbytes("circle"), + cst_animatetransform=caml_string_of_jsbytes("animatetransform"), + cst_animatemotion=caml_string_of_jsbytes("animatemotion"), + cst_animatecolor=caml_string_of_jsbytes("animatecolor"), + cst_animate=caml_string_of_jsbytes("animate"), + cst_altglyphitem=caml_string_of_jsbytes("altglyphitem"), + cst_altglyphdef=caml_string_of_jsbytes("altglyphdef"), + cst_altglyph=caml_string_of_jsbytes("altglyph"), + cst_a$2=caml_string_of_jsbytes("a"), + cst_Js_of_ocaml_Dom_svg_SVGErr= + caml_string_of_jsbytes("Js_of_ocaml__Dom_svg.SVGError"), + Stdlib_String=global_data.Stdlib__String, + Stdlib_Char=global_data.Stdlib__Char, + Stdlib=global_data.Stdlib, + Jsoo_runtime=global_data.Jsoo_runtime, + Stdlib_Printexc=global_data.Stdlib__Printexc, + Assert_failure=global_data.Assert_failure, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Array=global_data.Stdlib__Array, + Stdlib_Uchar=global_data.Stdlib__Uchar, + Stdlib_Printf=global_data.Stdlib__Printf, + Stdlib_Obj=global_data.Stdlib__Obj, + Js_of_ocaml=[0]; + caml_register_global(1635,Js_of_ocaml,"Js_of_ocaml__"); + var + Poly=[0], + _g_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom.ml"),351,67], + _h_=[0,caml_string_of_jsbytes("transparent")], + _i_=[0,caml_string_of_jsbytes("native")], + _m_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2850,58], + _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2849,61], + _k_= + [0, + [11, + caml_string_of_jsbytes("getElementById_exn: "), + [3,0,[11,caml_string_of_jsbytes(" not found"),0]]], + caml_string_of_jsbytes("getElementById_exn: %S not found")], + _o_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/form.ml"),178,13], + _n_=[0,1], + _p_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/regexp.ml"),34,64], + _q_=[0,caml_string_of_jsbytes(""),0], + _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cl_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cm_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cn_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _b8_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _b9_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _b__=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _b$_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _ca_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cb_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cc_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cd_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _ce_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cf_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cg_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _ch_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _ci_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _cj_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _b7_= + caml_list_of_js_array + ([caml_string_of_jsbytes("aliceblue"), + caml_string_of_jsbytes("antiquewhite"), + caml_string_of_jsbytes("aqua"), + caml_string_of_jsbytes("aquamarine"), + caml_string_of_jsbytes("azure"), + caml_string_of_jsbytes("beige"), + caml_string_of_jsbytes("bisque"), + caml_string_of_jsbytes("black"), + caml_string_of_jsbytes("blanchedalmond"), + caml_string_of_jsbytes("blue"), + caml_string_of_jsbytes("blueviolet"), + caml_string_of_jsbytes("brown"), + caml_string_of_jsbytes("burlywood"), + caml_string_of_jsbytes("cadetblue"), + caml_string_of_jsbytes("chartreuse"), + caml_string_of_jsbytes("chocolate"), + caml_string_of_jsbytes("coral"), + caml_string_of_jsbytes("cornflowerblue"), + caml_string_of_jsbytes("cornsilk"), + caml_string_of_jsbytes("crimson"), + caml_string_of_jsbytes("cyan"), + caml_string_of_jsbytes("darkblue"), + caml_string_of_jsbytes("darkcyan"), + caml_string_of_jsbytes("darkgoldenrod"), + caml_string_of_jsbytes("darkgray"), + caml_string_of_jsbytes("darkgreen"), + caml_string_of_jsbytes("darkgrey"), + caml_string_of_jsbytes("darkkhaki"), + caml_string_of_jsbytes("darkmagenta"), + caml_string_of_jsbytes("darkolivegreen"), + caml_string_of_jsbytes("darkorange"), + caml_string_of_jsbytes("darkorchid"), + caml_string_of_jsbytes("darkred"), + caml_string_of_jsbytes("darksalmon"), + caml_string_of_jsbytes("darkseagreen"), + caml_string_of_jsbytes("darkslateblue"), + caml_string_of_jsbytes("darkslategray"), + caml_string_of_jsbytes("darkslategrey"), + caml_string_of_jsbytes("darkturquoise"), + caml_string_of_jsbytes("darkviolet"), + caml_string_of_jsbytes("deeppink"), + caml_string_of_jsbytes("deepskyblue"), + caml_string_of_jsbytes("dimgray"), + caml_string_of_jsbytes("dimgrey"), + caml_string_of_jsbytes("dodgerblue"), + caml_string_of_jsbytes("firebrick"), + caml_string_of_jsbytes("floralwhite"), + caml_string_of_jsbytes("forestgreen"), + caml_string_of_jsbytes("fuchsia"), + caml_string_of_jsbytes("gainsboro"), + caml_string_of_jsbytes("ghostwhite"), + caml_string_of_jsbytes("gold"), + caml_string_of_jsbytes("goldenrod"), + caml_string_of_jsbytes("gray"), + caml_string_of_jsbytes("green"), + caml_string_of_jsbytes("greenyellow"), + caml_string_of_jsbytes("grey"), + caml_string_of_jsbytes("honeydew"), + caml_string_of_jsbytes("hotpink"), + caml_string_of_jsbytes("indianred"), + caml_string_of_jsbytes("indigo"), + caml_string_of_jsbytes("ivory"), + caml_string_of_jsbytes("khaki"), + caml_string_of_jsbytes("lavender"), + caml_string_of_jsbytes("lavenderblush"), + caml_string_of_jsbytes("lawngreen"), + caml_string_of_jsbytes("lemonchiffon"), + caml_string_of_jsbytes("lightblue"), + caml_string_of_jsbytes("lightcoral"), + caml_string_of_jsbytes("lightcyan"), + caml_string_of_jsbytes("lightgoldenrodyellow"), + caml_string_of_jsbytes("lightgray"), + caml_string_of_jsbytes("lightgreen"), + caml_string_of_jsbytes("lightgrey"), + caml_string_of_jsbytes("lightpink"), + caml_string_of_jsbytes("lightsalmon"), + caml_string_of_jsbytes("lightseagreen"), + caml_string_of_jsbytes("lightskyblue"), + caml_string_of_jsbytes("lightslategray"), + caml_string_of_jsbytes("lightslategrey"), + caml_string_of_jsbytes("lightsteelblue"), + caml_string_of_jsbytes("lightyellow"), + caml_string_of_jsbytes("lime"), + caml_string_of_jsbytes("limegreen"), + caml_string_of_jsbytes("linen"), + caml_string_of_jsbytes("magenta"), + caml_string_of_jsbytes("maroon"), + caml_string_of_jsbytes("mediumaquamarine"), + caml_string_of_jsbytes("mediumblue"), + caml_string_of_jsbytes("mediumorchid"), + caml_string_of_jsbytes("mediumpurple"), + caml_string_of_jsbytes("mediumseagreen"), + caml_string_of_jsbytes("mediumslateblue"), + caml_string_of_jsbytes("mediumspringgreen"), + caml_string_of_jsbytes("mediumturquoise"), + caml_string_of_jsbytes("mediumvioletred"), + caml_string_of_jsbytes("midnightblue"), + caml_string_of_jsbytes("mintcream"), + caml_string_of_jsbytes("mistyrose"), + caml_string_of_jsbytes("moccasin"), + caml_string_of_jsbytes("navajowhite"), + caml_string_of_jsbytes("navy"), + caml_string_of_jsbytes("oldlace"), + caml_string_of_jsbytes("olive"), + caml_string_of_jsbytes("olivedrab"), + caml_string_of_jsbytes("orange"), + caml_string_of_jsbytes("orangered"), + caml_string_of_jsbytes("orchid"), + caml_string_of_jsbytes("palegoldenrod"), + caml_string_of_jsbytes("palegreen"), + caml_string_of_jsbytes("paleturquoise"), + caml_string_of_jsbytes("palevioletred"), + caml_string_of_jsbytes("papayawhip"), + caml_string_of_jsbytes("peachpuff"), + caml_string_of_jsbytes("peru"), + caml_string_of_jsbytes("pink"), + caml_string_of_jsbytes("plum"), + caml_string_of_jsbytes("powderblue"), + caml_string_of_jsbytes("purple"), + caml_string_of_jsbytes("red"), + caml_string_of_jsbytes("rosybrown"), + caml_string_of_jsbytes("royalblue"), + caml_string_of_jsbytes("saddlebrown"), + caml_string_of_jsbytes("salmon"), + caml_string_of_jsbytes("sandybrown"), + caml_string_of_jsbytes("seagreen"), + caml_string_of_jsbytes("seashell"), + caml_string_of_jsbytes("sienna"), + caml_string_of_jsbytes("silver"), + caml_string_of_jsbytes("skyblue"), + caml_string_of_jsbytes("slateblue"), + caml_string_of_jsbytes("slategray"), + caml_string_of_jsbytes("slategrey"), + caml_string_of_jsbytes("snow"), + caml_string_of_jsbytes("springgreen"), + caml_string_of_jsbytes("steelblue"), + caml_string_of_jsbytes("tan"), + caml_string_of_jsbytes("teal"), + caml_string_of_jsbytes("thistle"), + caml_string_of_jsbytes("tomato"), + caml_string_of_jsbytes("turquoise"), + caml_string_of_jsbytes("violet"), + caml_string_of_jsbytes("wheat"), + caml_string_of_jsbytes("white"), + caml_string_of_jsbytes("whitesmoke"), + caml_string_of_jsbytes("yellow"), + caml_string_of_jsbytes("yellowgreen")]), + _b6_= + [0, + [12,35,[4,8,[0,2,2],0,[4,8,[0,2,2],0,[4,8,[0,2,2],0,0]]]], + caml_string_of_jsbytes("#%02X%02X%02X")], + _b0_= + [0, + [11, + caml_string_of_jsbytes("rgb("), + [4,0,0,0,[12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,41,0]]]]]]], + caml_string_of_jsbytes("rgb(%d,%d,%d)")], + _b1_= + [0, + [11, + caml_string_of_jsbytes("rgb("), + [4, + 0, + 0, + 0, + [12,37,[12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]]], + caml_string_of_jsbytes("rgb(%d%%,%d%%,%d%%)")], + _b2_= + [0, + [11, + caml_string_of_jsbytes("rgba("), + [4, + 0, + 0, + 0, + [12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,44,[8,[0,0,0],0,0,[12,41,0]]]]]]]]], + caml_string_of_jsbytes("rgba(%d,%d,%d,%f)")], + _b3_= + [0, + [11, + caml_string_of_jsbytes("rgba("), + [4, + 0, + 0, + 0, + [12, + 37, + [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,44,partial]]]]]]]]]], + caml_string_of_jsbytes("rgba(%d%%,%d%%,%d%%,%f)")], + _b4_= + [0, + [11, + caml_string_of_jsbytes("hsl("), + [4, + 0, + 0, + 0, + [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]], + caml_string_of_jsbytes("hsl(%d,%d%%,%d%%)")], + _b5_= + [0, + [11, + caml_string_of_jsbytes("hsla("), + [4, + 0, + 0, + 0, + [12, + 44, + [4, + 0, + 0, + 0, + [12, + 37, + [12,44,[4,0,0,0,[12,37,[12,44,[8,partial$1,0,0,partial$0]]]]]]]]]], + caml_string_of_jsbytes("hsla(%d,%d%%,%d%%,%f)")], + _x_=[0,240,248,255], + _y_=[0,250,235,215], + _z_=[0,0,255,255], + _A_=[0,127,255,212], + _B_=[0,240,255,255], + _C_=[0,245,245,220], + _D_=[0,255,228,196], + _E_=[0,0,0,0], + _F_=[0,255,235,205], + _G_=[0,0,0,255], + _H_=[0,138,43,226], + _I_=[0,165,42,42], + _J_=[0,222,184,135], + _K_=[0,95,158,160], + _L_=[0,127,255,0], + _M_=[0,210,105,30], + _N_=[0,255,127,80], + _O_=[0,100,149,237], + _P_=[0,255,248,220], + _Q_=[0,220,20,60], + _R_=[0,0,255,255], + _S_=[0,0,0,139], + _T_=[0,0,139,139], + _U_=[0,184,134,11], + _V_=[0,169,169,169], + _W_=[0,0,100,0], + _X_=[0,169,169,169], + _Y_=[0,189,183,107], + _Z_=[0,139,0,139], + ___=[0,85,107,47], + _$_=[0,255,140,0], + _aa_=[0,153,50,204], + _ab_=[0,139,0,0], + _ac_=[0,233,150,122], + _ad_=[0,143,188,143], + _ae_=[0,72,61,139], + _af_=[0,47,79,79], + _ag_=[0,47,79,79], + _ah_=[0,0,206,209], + _ai_=[0,148,0,211], + _aj_=[0,255,20,147], + _ak_=[0,0,191,255], + _al_=[0,105,105,105], + _am_=[0,105,105,105], + _an_=[0,30,144,255], + _ao_=[0,178,34,34], + _ap_=[0,255,250,240], + _aq_=[0,34,139,34], + _ar_=[0,255,0,255], + _as_=[0,220,220,220], + _at_=[0,248,248,255], + _au_=[0,255,215,0], + _av_=[0,218,165,32], + _aw_=[0,128,128,128], + _ax_=[0,128,128,128], + _ay_=[0,0,128,0], + _az_=[0,173,255,47], + _aA_=[0,240,255,240], + _aB_=[0,255,105,180], + _aC_=[0,205,92,92], + _aD_=[0,75,0,130], + _aE_=[0,255,255,240], + _aF_=[0,240,230,140], + _aG_=[0,230,230,250], + _aH_=[0,255,240,245], + _aI_=[0,124,252,0], + _aJ_=[0,255,250,205], + _aK_=[0,173,216,230], + _aL_=[0,240,128,128], + _aM_=[0,224,255,255], + _aN_=[0,250,250,210], + _aO_=[0,211,211,211], + _aP_=[0,144,238,144], + _aQ_=[0,211,211,211], + _aR_=[0,255,182,193], + _aS_=[0,255,160,122], + _aT_=[0,32,178,170], + _aU_=[0,135,206,250], + _aV_=[0,119,136,153], + _aW_=[0,119,136,153], + _aX_=[0,176,196,222], + _aY_=[0,255,255,224], + _aZ_=[0,0,255,0], + _a0_=[0,50,205,50], + _a1_=[0,250,240,230], + _a2_=[0,255,0,255], + _a3_=[0,128,0,0], + _a4_=[0,102,205,170], + _a5_=[0,0,0,205], + _a6_=[0,186,85,211], + _a7_=[0,147,112,219], + _a8_=[0,60,179,113], + _a9_=[0,123,104,238], + _a__=[0,0,250,154], + _a$_=[0,72,209,204], + _ba_=[0,199,21,133], + _bb_=[0,25,25,112], + _bc_=[0,245,255,250], + _bd_=[0,255,228,225], + _be_=[0,255,228,181], + _bf_=[0,255,222,173], + _bg_=[0,0,0,128], + _bh_=[0,253,245,230], + _bi_=[0,128,128,0], + _bj_=[0,107,142,35], + _bk_=[0,255,165,0], + _bl_=[0,255,69,0], + _bm_=[0,218,112,214], + _bn_=[0,238,232,170], + _bo_=[0,152,251,152], + _bp_=[0,175,238,238], + _bq_=[0,219,112,147], + _br_=[0,255,239,213], + _bs_=[0,255,218,185], + _bt_=[0,205,133,63], + _bu_=[0,255,192,203], + _bv_=[0,221,160,221], + _bw_=[0,176,224,230], + _bx_=[0,128,0,128], + _by_=[0,255,0,0], + _bz_=[0,188,143,143], + _bA_=[0,65,105,225], + _bB_=[0,139,69,19], + _bC_=[0,250,128,114], + _bD_=[0,244,164,96], + _bE_=[0,46,139,87], + _bF_=[0,255,245,238], + _bG_=[0,160,82,45], + _bH_=[0,192,192,192], + _bI_=[0,135,206,235], + _bJ_=[0,106,90,205], + _bK_=[0,112,128,144], + _bL_=[0,112,128,144], + _bM_=[0,255,250,250], + _bN_=[0,0,255,127], + _bO_=[0,70,130,180], + _bP_=[0,210,180,140], + _bQ_=[0,0,128,128], + _bR_=[0,216,191,216], + _bS_=[0,255,99,71], + _bT_=[0,64,224,208], + _bU_=[0,238,130,238], + _bV_=[0,245,222,179], + _bW_=[0,255,255,255], + _bX_=[0,245,245,245], + _bY_=[0,255,255,0], + _bZ_=[0,154,205,50]; + function symbol(x,y){return x < y?1:0} + function symbol$0(x,y){return x <= y?1:0} + function symbol$1(x,y){return x !== y?1:0} + function symbol$2(x,y){return x === y?1:0} + function symbol$3(x,y){return y < x?1:0} + function symbol$4(x,y){return y <= x?1:0} + var compare=runtime.caml_int_compare; + function equal(x,y){return x === y?1:0} + function max(x,y){return y <= x?x:y} + function min(x,y){return x <= y?x:y} + var + Int_replace_polymorphic_compar= + [0, + symbol, + symbol$0, + symbol$1, + symbol$2, + symbol$3, + symbol$4, + compare, + equal, + max, + min], + make=Stdlib_String[1], + init=Stdlib_String[2], + empty=Stdlib_String[3], + of_bytes=Stdlib_String[4], + to_bytes=Stdlib_String[5], + concat=Stdlib_String[6], + cat=Stdlib_String[7], + compare$0=Stdlib_String[9], + starts_with=Stdlib_String[10], + ends_with=Stdlib_String[11], + contains_from=Stdlib_String[12], + rcontains_from=Stdlib_String[13], + contains=Stdlib_String[14], + sub=Stdlib_String[15], + split_on_char=Stdlib_String[16], + map=Stdlib_String[17], + mapi=Stdlib_String[18], + fold_left=Stdlib_String[19], + fold_right=Stdlib_String[20], + for_all=Stdlib_String[21], + exists=Stdlib_String[22], + trim=Stdlib_String[23], + escaped=Stdlib_String[24], + uppercase_ascii=Stdlib_String[25], + lowercase_ascii=Stdlib_String[26], + capitalize_ascii=Stdlib_String[27], + uncapitalize_ascii=Stdlib_String[28], + iter=Stdlib_String[29], + iteri=Stdlib_String[30], + index_from=Stdlib_String[31], + index_from_opt=Stdlib_String[32], + rindex_from=Stdlib_String[33], + rindex_from_opt=Stdlib_String[34], + index=Stdlib_String[35], + index_opt=Stdlib_String[36], + rindex=Stdlib_String[37], + rindex_opt=Stdlib_String[38], + to_seq=Stdlib_String[39], + to_seqi=Stdlib_String[40], + of_seq=Stdlib_String[41], + get_utf_8_uchar=Stdlib_String[42], + is_valid_utf_8=Stdlib_String[43], + get_utf_16be_uchar=Stdlib_String[44], + is_valid_utf_16be=Stdlib_String[45], + get_utf_16le_uchar=Stdlib_String[46], + is_valid_utf_16le=Stdlib_String[47], + blit=Stdlib_String[48], + copy=Stdlib_String[49], + fill=Stdlib_String[50], + uppercase=Stdlib_String[51], + lowercase=Stdlib_String[52], + capitalize=Stdlib_String[53], + uncapitalize=Stdlib_String[54], + get_uint8=Stdlib_String[55], + get_int8=Stdlib_String[56], + get_uint16_ne=Stdlib_String[57], + get_uint16_be=Stdlib_String[58], + get_uint16_le=Stdlib_String[59], + get_int16_ne=Stdlib_String[60], + get_int16_be=Stdlib_String[61], + get_int16_le=Stdlib_String[62], + get_int32_ne=Stdlib_String[63], + get_int32_be=Stdlib_String[64], + get_int32_le=Stdlib_String[65], + get_int64_ne=Stdlib_String[66], + get_int64_be=Stdlib_String[67], + get_int64_le=Stdlib_String[68]; + function equal$0(x,y){return runtime.caml_string_equal(x,y)} + var + String= + [0, + make, + init, + empty, + of_bytes, + to_bytes, + concat, + cat, + compare$0, + starts_with, + ends_with, + contains_from, + rcontains_from, + contains, + sub, + split_on_char, + map, + mapi, + fold_left, + fold_right, + for_all, + exists, + trim, + escaped, + uppercase_ascii, + lowercase_ascii, + capitalize_ascii, + uncapitalize_ascii, + iter, + iteri, + index_from, + index_from_opt, + rindex_from, + rindex_from_opt, + index, + index_opt, + rindex, + rindex_opt, + to_seq, + to_seqi, + of_seq, + get_utf_8_uchar, + is_valid_utf_8, + get_utf_16be_uchar, + is_valid_utf_16be, + get_utf_16le_uchar, + is_valid_utf_16le, + blit, + copy, + fill, + uppercase, + lowercase, + capitalize, + uncapitalize, + get_uint8, + get_int8, + get_uint16_ne, + get_uint16_be, + get_uint16_le, + get_int16_ne, + get_int16_be, + get_int16_le, + get_int32_ne, + get_int32_be, + get_int32_le, + get_int64_ne, + get_int64_be, + get_int64_le, + equal$0], + chr=Stdlib_Char[1], + escaped$0=Stdlib_Char[2], + lowercase$0=Stdlib_Char[3], + uppercase$0=Stdlib_Char[4], + lowercase_ascii$0=Stdlib_Char[5], + uppercase_ascii$0=Stdlib_Char[6], + compare$1=Stdlib_Char[7]; + function equal$1(x,y){return x === y?1:0} + var + Char= + [0, + chr, + escaped$0, + lowercase$0, + uppercase$0, + lowercase_ascii$0, + uppercase_ascii$0, + compare$1, + equal$1], + symbol$5=Int_replace_polymorphic_compar[1], + symbol$6=Int_replace_polymorphic_compar[2], + symbol$7=Int_replace_polymorphic_compar[3], + symbol$8=Int_replace_polymorphic_compar[4], + symbol$9=Int_replace_polymorphic_compar[5], + symbol$10=Int_replace_polymorphic_compar[6], + compare$2=Int_replace_polymorphic_compar[7], + equal$2=Int_replace_polymorphic_compar[8], + max$0=Int_replace_polymorphic_compar[9], + min$0=Int_replace_polymorphic_compar[10], + Js_of_ocaml_Import= + [0, + Poly, + Int_replace_polymorphic_compar, + String, + Char, + symbol$5, + symbol$6, + symbol$7, + symbol$8, + symbol$9, + symbol$10, + compare$2, + equal$2, + max$0, + min$0]; + caml_register_global(1638,Js_of_ocaml_Import,"Js_of_ocaml__Import"); + var global=globalThis,Unsafe=[0,global],no_handler=null,t39=undefined; + function return$0(_gO_){return _gO_} + function map$0(x,f){return x == no_handler?no_handler:caml_call1(f,x)} + function bind(x,f){return x == no_handler?no_handler:caml_call1(f,x)} + function test(x){return 1 - (x == no_handler?1:0)} + function iter$0(x,f) + {var _gN_=1 - (x == no_handler?1:0);return _gN_?caml_call1(f,x):_gN_} + function case$0(x,f,g) + {return x == no_handler?caml_call1(f,0):caml_call1(g,x)} + function get(x,f){return x == no_handler?caml_call1(f,0):x} + function option(x){if(x){var x$0=x[1];return x$0}return no_handler} + function to_option(x) + {function _gM_(x){return [0,x]} + return case$0(x,function(param){return 0},_gM_)} + var + Opt= + [0, + no_handler, + return$0, + map$0, + bind, + test, + iter$0, + case$0, + get, + option, + to_option]; + function return$1(_gL_){return _gL_} + function map$1(x,f){return x === t39?t39:caml_call1(f,x)} + function bind$0(x,f){return x === t39?t39:caml_call1(f,x)} + function test$0(x){return x !== t39?1:0} + function iter$1(x,f) + {var _gK_=x !== t39?1:0;return _gK_?caml_call1(f,x):_gK_} + function case$1(x,f,g){return x === t39?caml_call1(f,0):caml_call1(g,x)} + function get$0(x,f){return x === t39?caml_call1(f,0):x} + function option$0(x){if(x){var x$0=x[1];return x$0}return t39} + function to_option$0(x) + {function _gJ_(x){return [0,x]} + return case$1(x,function(param){return 0},_gJ_)} + var + Optdef= + [0, + t39, + return$1, + map$1, + bind$0, + test$0, + iter$1, + case$1, + get$0, + option$0, + to_option$0]; + function coerce(x,f,g) + {function _gH_(param){return caml_call1(g,x)} + var _gI_=caml_call1(f,x); + return caml_call2(Opt[8],_gI_,_gH_)} + function coerce_opt(x,f,g) + {function _gF_(param){return caml_call1(g,x)} + var _gG_=caml_call2(Opt[4],x,f); + return caml_call2(Opt[8],_gG_,_gF_)} + var + t25=true, + t4=false, + string_constr=Unsafe[1].String, + t11=Unsafe[1].RegExp, + t4$0=Unsafe[1].Object; + function object_keys(t3){return t4$0.keys(t3)} + var + array_length=Unsafe[1].Array, + array_get=caml_js_get, + array_set=caml_js_set; + function array_map(f,a) + {return a.map + (caml_js_wrap_callback + (function(x,idx,param){return caml_call1(f,x)}))} + function array_mapi(f,a) + {return a.map + (caml_js_wrap_callback + (function(x,idx,param){return caml_call2(f,idx,x)}))} + function str_array(_gE_){return _gE_} + function match_result(_gD_){return _gD_} + var + t122=Unsafe[1].Date, + math=Unsafe[1].Math, + error_constr=Unsafe[1].Error, + include=Jsoo_runtime[3], + raise=include[1], + attach_js_backtrace=include[2], + of_exn=include[3], + Error=include[4]; + function name(e){return caml_string_of_jsstring(e.name)} + function message(e){return caml_string_of_jsstring(e.message)} + function stack(e) + {var _gC_=caml_call2(Opt[3],e.stack,caml_string_of_jsstring); + return caml_call1(Opt[10],_gC_)} + function to_string(e){return caml_string_of_jsstring(e.toString())} + function raise_js_error(e){return caml_call1(raise,e)} + function string_of_error(e){return to_string(e)} + var JSON=Unsafe[1].JSON; + function decodeURI(s){return Unsafe[1].decodeURI(s)} + function decodeURIComponent(s){return Unsafe[1].decodeURIComponent(s)} + function encodeURI(s){return Unsafe[1].encodeURI(s)} + function encodeURIComponent(s){return Unsafe[1].encodeURIComponent(s)} + function escape(s){return Unsafe[1].escape(s)} + function unescape(s){return Unsafe[1].unescape(s)} + function isNaN(i){return Unsafe[1].isNaN(i) | 0} + function parseInt(s) + {var s$0=Unsafe[1].parseInt(s); + return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseInt):s$0} + function parseFloat(s) + {var s$0=Unsafe[1].parseFloat(s); + return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseFloat):s$0} + function _a_(param) + {if(param[1] === Error){var e=param[2];return [0,to_string(e)]}return 0} + caml_call1(Stdlib_Printexc[9],_a_); + function _b_(e) + {return e instanceof array_length + ?0 + :[0,caml_string_of_jsstring(e.toString())]} + caml_call1(Stdlib_Printexc[9],_b_); + function export_js(field,x){return jsoo_exports[field] = x} + function export$0(field,x) + {return export_js(caml_jsstring_of_string(field),x)} + function export_all(obj) + {var + t27=object_keys(obj), + t26= + caml_js_wrap_callback + (function(key,param,_gB_){return export_js(key,obj[key])}); + return t27.forEach(t26)} + var _c_=runtime.caml_js_error_of_exception; + function _d_(_gA_){return _gA_} + var + _e_= + [0, + to_string, + name, + message, + stack, + raise, + attach_js_backtrace, + of_exn, + Error, + function(_gz_){return _gz_}, + _d_]; + function _f_(_gy_){return _gy_} + var + Js_of_ocaml_Js= + [0, + no_handler, + function(_gx_){return _gx_}, + t39, + _f_, + Opt, + Optdef, + t25, + t4, + string_constr, + t11, + t11, + t11, + object_keys, + array_length, + array_length, + array_get, + array_set, + array_map, + array_mapi, + str_array, + match_result, + t122, + t122, + t122, + t122, + t122, + t122, + t122, + t122, + t122, + math, + error_constr, + _e_, + JSON, + decodeURI, + decodeURIComponent, + encodeURI, + encodeURIComponent, + escape, + unescape, + isNaN, + parseInt, + parseFloat, + coerce, + coerce_opt, + export$0, + export_all, + Unsafe, + string_of_error, + raise_js_error, + attach_js_backtrace, + _c_, + Error]; + caml_register_global(1642,Js_of_ocaml_Js,"Js_of_ocaml__Js"); + function list_of_nodeList(nodeList) + {var length=nodeList.length,acc=0,i=0; + for(;;) + {if(caml_call2(symbol$5,i,length)) + {var _gw_=nodeList.item(i),match=caml_call1(Opt[10],_gw_); + if(match) + {var e=match[1],i$0=i + 1 | 0,acc$0=[0,e,acc],acc=acc$0,i=i$0; + continue} + var i$1=i + 1 | 0,i=i$1; + continue} + return caml_call1(Stdlib_List[9],acc)}} + var + disconnected=1, + preceding=2, + following=4, + contains$0=8, + contained_by=16, + implementation_specific=32; + function has(t,mask){return caml_call2(symbol$8,t & mask,mask)} + function add(x,y){return x | y} + var + DocumentPosition= + [0, + disconnected, + preceding, + following, + contains$0, + contained_by, + implementation_specific, + has, + add, + add]; + function appendChild(p,n){p.appendChild(n);return 0} + function removeChild(p,n){p.removeChild(n);return 0} + function replaceChild(p,n,o){p.replaceChild(n,o);return 0} + function insertBefore(p,n,o){p.insertBefore(n,o);return 0} + function nodeType(e) + {var match=e.nodeType; + if(match) + switch(match - 1 | 0) + {case 0:return [0,e];case 1:return [1,e];case 2:case 3:return [2,e]} + return [3,e]} + function cast(e,t){return e.nodeType === t?e:no_handler} + function element(e){return cast(e,1)} + function text(e) + {if(3 !== e.nodeType && 4 !== e.nodeType)return no_handler;return e} + function attr(e){return cast(e,2)} + function handler(f) + {return function(e) + {if(caml_call1(Opt[5],e)) + {var res=caml_call1(f,e); + if(1 - (res | 0))e.preventDefault(); + return res} + var t18=event,t17=caml_call1(f,t18); + if(1 - (t17 | 0))t18.returnValue = t17; + return t17}} + function full_handler(f) + {return runtime.caml_js_wrap_meth_callback_unsafe + (function(this$0,e) + {if(caml_call1(Opt[5],e)) + {var res=caml_call2(f,this$0,e); + if(1 - (res | 0))e.preventDefault(); + return res} + var t21=event,t20=caml_call2(f,this$0,t21); + if(1 - (t20 | 0))t21.returnValue = t20; + return t20})} + function invoke_handler(f,this$0,event){return f.call(this$0,event)} + function eventTarget(e) + {function _gt_(param) + {function _gv_(param){throw Stdlib[8]} + return caml_call2(Opt[8],e.srcElement,_gv_)} + var t27=caml_call2(Opt[8],e.target,_gt_); + if(t27 instanceof Unsafe[1].Node) + {if(3 === t27.nodeType) + {var _gu_=function(param){throw [0,Assert_failure,_g_]}; + return caml_call2(Opt[8],t27.parentNode,_gu_)} + return t27} + return t27} + function make$0(s){return caml_jsstring_of_string(s)} + var Event=[0,make$0]; + function addEventListenerWithOptions(t50,t47,capture,once,passive,t48) + {if(t50.addEventListener === t39) + {var + t34="on".concat(t47), + t35= + function(e) + {var _gq_=[0,t48,e,[0]]; + return function(_gr_,_gs_) + {return runtime.caml_js_call(_gq_,_gr_,_gs_)}}; + t50.attachEvent(t34,t35); + return function(param){return t50.detachEvent(t34,t35)}} + var t49={}; + function iter(t,f){if(t){var b=t[1];return caml_call1(f,b)}return 0} + iter(capture,function(t37){return t49.capture = t37}); + iter(once,function(t39){return t49.once = t39}); + iter(passive,function(t41){return t49.passive = t41}); + t50.addEventListener(t47,t48,t49); + return function(param){return t50.removeEventListener(t47,t48,t49)}} + function addEventListener(e,typ,h,capt) + {return addEventListenerWithOptions(e,typ,[0,capt],0,0,h)} + function removeEventListener(id){return caml_call1(id,0)} + function preventDefault(t54) + {if(caml_call1(Optdef[5],t54.preventDefault))return t54.preventDefault(); + var t53=! ! 0; + return t54.returnValue = t53} + function createCustomEvent(bubbles,cancelable,detail,t62) + {function opt_iter(f,param) + {if(param){var x=param[1];return caml_call1(f,x)}return 0} + var t63={}; + opt_iter(function(x){var t55=! ! x;return t63.bubbles = t55},bubbles); + opt_iter + (function(x){var t57=! ! x;return t63.cancelable = t57},cancelable); + opt_iter(function(t59){return t63.detail = t59},detail); + var t64=Unsafe[1].CustomEvent; + return new t64(t62,t63)} + var + Js_of_ocaml_Dom= + [0, + DocumentPosition, + insertBefore, + replaceChild, + removeChild, + appendChild, + list_of_nodeList, + nodeType, + [0,element,text,attr], + no_handler, + handler, + full_handler, + invoke_handler, + eventTarget, + Event, + addEventListenerWithOptions, + addEventListener, + removeEventListener, + preventDefault, + createCustomEvent]; + caml_register_global(1645,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); + var + arrayBuffer=Unsafe[1].ArrayBuffer, + int8Array_inBuffer=Unsafe[1].Int8Array, + t11$0=Unsafe[1].Uint8Array, + int16Array_inBuffer=Unsafe[1].Int16Array, + uint16Array_inBuffer=Unsafe[1].Uint16Array, + int32Array_inBuffer=Unsafe[1].Int32Array, + uint32Array_inBuffer=Unsafe[1].Uint32Array, + float32Array_inBuffer=Unsafe[1].Float32Array, + float64Array_inBuffer=Unsafe[1].Float64Array, + set=caml_js_set; + function get$1(a,i){return a[i]} + function unsafe_get(a,i){return a[i]} + var dataView=Unsafe[1].DataView; + function of_arrayBuffer(ab) + {var uint8=new t11$0(ab);return caml_string_of_array(uint8)} + var + Js_of_ocaml_Typed_array= + [0, + arrayBuffer, + runtime.caml_ba_kind_of_typed_array, + runtime.caml_ba_to_typed_array, + runtime.caml_ba_from_typed_array, + int8Array_inBuffer, + int8Array_inBuffer, + int8Array_inBuffer, + int8Array_inBuffer, + int8Array_inBuffer, + t11$0, + t11$0, + t11$0, + t11$0, + t11$0, + int16Array_inBuffer, + int16Array_inBuffer, + int16Array_inBuffer, + int16Array_inBuffer, + int16Array_inBuffer, + uint16Array_inBuffer, + uint16Array_inBuffer, + uint16Array_inBuffer, + uint16Array_inBuffer, + uint16Array_inBuffer, + int32Array_inBuffer, + int32Array_inBuffer, + int32Array_inBuffer, + int32Array_inBuffer, + int32Array_inBuffer, + uint32Array_inBuffer, + uint32Array_inBuffer, + uint32Array_inBuffer, + uint32Array_inBuffer, + uint32Array_inBuffer, + float32Array_inBuffer, + float32Array_inBuffer, + float32Array_inBuffer, + float32Array_inBuffer, + float32Array_inBuffer, + float64Array_inBuffer, + float64Array_inBuffer, + float64Array_inBuffer, + float64Array_inBuffer, + float64Array_inBuffer, + set, + get$1, + unsafe_get, + dataView, + dataView, + [0, + runtime.bigstring_to_array_buffer, + runtime.bigstring_to_typed_array, + runtime.bigstring_of_array_buffer, + runtime.bigstring_of_typed_array], + [0,of_arrayBuffer,caml_string_of_array]]; + caml_register_global + (1646,Js_of_ocaml_Typed_array,"Js_of_ocaml__Typed_array"); + var t3=Unsafe[1].Blob; + function filter_map(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var q=param$0[2],v=param$0[1],match=caml_call1(f,v); + if(match){var v$0=match[1];return [0,v$0,filter_map(f,q)]} + var param$0=q; + continue} + return 0}} + function blob_raw(contentType,endings,a) + {var _gm_=0; + if(endings) + var _gn_=116179762 <= endings[1]?_h_:_i_,_go_=_gn_; + else + var _go_=0; + var + _gp_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_go_],_gm_]], + options= + filter_map + (function(param) + {var v=param[2],name=param[1]; + if(v) + {var v$0=v[1];return [0,[0,name,caml_jsstring_of_string(v$0)]]} + return 0}, + _gp_), + options$0= + options + ?runtime.caml_js_object(caml_call1(Stdlib_Array[12],options)) + :t39, + t1=caml_js_from_array(a); + return new t3(t1,options$0)} + function blob_from_string(contentType,endings,s) + {return blob_raw(contentType,endings,[0,caml_jsstring_of_string(s)])} + function blob_from_any(contentType,endings,l) + {function _gk_(param) + {var _gl_=param[1]; + if(155580615 === _gl_){var s=param[2];return s} + if(486041214 <= _gl_) + {if(1037850489 <= _gl_){var a=param[2];return a} + var a$0=param[2]; + return a$0} + if(288368849 <= _gl_) + {var s$0=param[2];return caml_jsstring_of_string(s$0)} + var b=param[2]; + return b} + var l$0=caml_call2(Stdlib_List[19],_gk_,l); + return blob_raw(contentType,endings,caml_call1(Stdlib_Array[12],l$0))} + function filename(file) + {var match=caml_call1(Optdef[10],file.name); + if(match){var name=match[1];return name} + var match$0=caml_call1(Optdef[10],file.fileName); + if(match$0){var name$0=match$0[1];return name$0} + return caml_call1(Stdlib[2],cst_can_t_retrieve_file_name_n)} + var doc_constr=Unsafe[1].Document; + function document(e){return e instanceof doc_constr?e:no_handler} + function blob(e){return e instanceof t3?e:no_handler} + function string(e){return typeof e === "string"?e:no_handler} + function arrayBuffer$0(e){return e instanceof arrayBuffer?e:no_handler} + var + loadstart=caml_call1(Event[1],cst_loadstart), + progress=caml_call1(Event[1],cst_progress), + abort=caml_call1(Event[1],cst_abort), + error=caml_call1(Event[1],cst_error), + load=caml_call1(Event[1],cst_load), + loadend=caml_call1(Event[1],cst_loadend), + ReaderEvent=[0,loadstart,progress,abort,error,load,loadend], + fileReader=Unsafe[1].FileReader, + Js_of_ocaml_File= + [0, + blob_from_string, + blob_from_any, + [0,document,blob,function(_gj_){return _gj_},string,arrayBuffer$0], + ReaderEvent, + filename, + fileReader, + addEventListener]; + caml_register_global(1648,Js_of_ocaml_File,"Js_of_ocaml__File"); + var + onIE=runtime.caml_js_on_ie(0) | 0, + click=caml_call1(Event[1],cst_click), + copy$0=caml_call1(Event[1],cst_copy), + cut=caml_call1(Event[1],cst_cut), + paste=caml_call1(Event[1],cst_paste), + dblclick=caml_call1(Event[1],cst_dblclick), + mousedown=caml_call1(Event[1],cst_mousedown), + mouseup=caml_call1(Event[1],cst_mouseup), + mouseover=caml_call1(Event[1],cst_mouseover), + mousemove=caml_call1(Event[1],cst_mousemove), + mouseout=caml_call1(Event[1],cst_mouseout), + keypress=caml_call1(Event[1],cst_keypress), + keydown=caml_call1(Event[1],cst_keydown), + keyup=caml_call1(Event[1],cst_keyup), + mousewheel=caml_call1(Event[1],cst_mousewheel), + DOMMouseScroll=caml_call1(Event[1],cst_DOMMouseScroll), + touchstart=caml_call1(Event[1],cst_touchstart), + touchmove=caml_call1(Event[1],cst_touchmove), + touchend=caml_call1(Event[1],cst_touchend), + touchcancel=caml_call1(Event[1],cst_touchcancel), + dragstart=caml_call1(Event[1],cst_dragstart), + dragend=caml_call1(Event[1],cst_dragend), + dragenter=caml_call1(Event[1],cst_dragenter), + dragover=caml_call1(Event[1],cst_dragover), + dragleave=caml_call1(Event[1],cst_dragleave), + drag=caml_call1(Event[1],cst_drag), + drop=caml_call1(Event[1],cst_drop), + hashchange=caml_call1(Event[1],cst_hashchange), + change=caml_call1(Event[1],cst_change), + input=caml_call1(Event[1],cst_input), + timeupdate=caml_call1(Event[1],cst_timeupdate), + submit=caml_call1(Event[1],cst_submit), + scroll=caml_call1(Event[1],cst_scroll), + focus=caml_call1(Event[1],cst_focus), + blur=caml_call1(Event[1],cst_blur), + load$0=caml_call1(Event[1],cst_load$0), + unload=caml_call1(Event[1],cst_unload), + beforeunload=caml_call1(Event[1],cst_beforeunload), + resize=caml_call1(Event[1],cst_resize), + orientationchange=caml_call1(Event[1],cst_orientationchange), + popstate=caml_call1(Event[1],cst_popstate), + error$0=caml_call1(Event[1],cst_error$0), + abort$0=caml_call1(Event[1],cst_abort$0), + select=caml_call1(Event[1],cst_select), + online=caml_call1(Event[1],cst_online), + offline=caml_call1(Event[1],cst_offline), + checking=caml_call1(Event[1],cst_checking), + noupdate=caml_call1(Event[1],cst_noupdate), + downloading=caml_call1(Event[1],cst_downloading), + progress$0=caml_call1(Event[1],cst_progress$0), + updateready=caml_call1(Event[1],cst_updateready), + cached=caml_call1(Event[1],cst_cached), + obsolete=caml_call1(Event[1],cst_obsolete), + domContentLoaded=caml_call1(Event[1],cst_DOMContentLoaded), + animationstart=caml_call1(Event[1],cst_animationstart), + animationend=caml_call1(Event[1],cst_animationend), + animationiteration=caml_call1(Event[1],cst_animationiteration), + animationcancel=caml_call1(Event[1],cst_animationcancel), + canplay=caml_call1(Event[1],cst_canplay), + canplaythrough=caml_call1(Event[1],cst_canplaythrough), + durationchange=caml_call1(Event[1],cst_durationchange), + emptied=caml_call1(Event[1],cst_emptied), + ended=caml_call1(Event[1],cst_ended), + gotpointercapture=caml_call1(Event[1],cst_gotpointercapture), + loadeddata=caml_call1(Event[1],cst_loadeddata), + loadedmetadata=caml_call1(Event[1],cst_loadedmetadata), + loadstart$0=caml_call1(Event[1],cst_loadstart$0), + lostpointercapture=caml_call1(Event[1],cst_lostpointercapture), + message$0=caml_call1(Event[1],cst_message), + pause=caml_call1(Event[1],cst_pause), + play=caml_call1(Event[1],cst_play), + playing=caml_call1(Event[1],cst_playing), + pointerenter=caml_call1(Event[1],cst_pointerenter), + pointercancel=caml_call1(Event[1],cst_pointercancel), + pointerdown=caml_call1(Event[1],cst_pointerdown), + pointerleave=caml_call1(Event[1],cst_pointerleave), + pointermove=caml_call1(Event[1],cst_pointermove), + pointerout=caml_call1(Event[1],cst_pointerout), + pointerover=caml_call1(Event[1],cst_pointerover), + pointerup=caml_call1(Event[1],cst_pointerup), + ratechange=caml_call1(Event[1],cst_ratechange), + seeked=caml_call1(Event[1],cst_seeked), + seeking=caml_call1(Event[1],cst_seeking), + stalled=caml_call1(Event[1],cst_stalled), + suspend=caml_call1(Event[1],cst_suspend), + volumechange=caml_call1(Event[1],cst_volumechange), + waiting=caml_call1(Event[1],cst_waiting), + make$1=Event[1], + Event$0= + [0, + click, + copy$0, + cut, + paste, + dblclick, + mousedown, + mouseup, + mouseover, + mousemove, + mouseout, + keypress, + keydown, + keyup, + mousewheel, + DOMMouseScroll, + touchstart, + touchmove, + touchend, + touchcancel, + dragstart, + dragend, + dragenter, + dragover, + dragleave, + drag, + drop, + hashchange, + change, + input, + timeupdate, + submit, + scroll, + focus, + blur, + load$0, + unload, + beforeunload, + resize, + orientationchange, + popstate, + error$0, + abort$0, + select, + online, + offline, + checking, + noupdate, + downloading, + progress$0, + updateready, + cached, + obsolete, + domContentLoaded, + animationstart, + animationend, + animationiteration, + animationcancel, + canplay, + canplaythrough, + durationchange, + emptied, + ended, + gotpointercapture, + loadeddata, + loadedmetadata, + loadstart$0, + lostpointercapture, + message$0, + pause, + play, + playing, + pointerenter, + pointercancel, + pointerdown, + pointerleave, + pointermove, + pointerout, + pointerover, + pointerup, + ratechange, + seeked, + seeking, + stalled, + suspend, + volumechange, + waiting, + make$1], + d="2d"; + function location_origin(loc) + {function _gh_(o){return o} + function _gi_(param) + {var t8=loc.protocol,t7=loc.hostname,t9=loc.port; + if + (caml_call2(symbol$8,t8.length,0) + && + caml_call2(symbol$8,t7.length,0)) + return ""; + var t13=t8.concat("//",t7); + if(caml_call2(symbol$9,t9.length,0)) + {var t12=loc.port;return t13.concat(":",t12)} + return t13} + return caml_call3(Optdef[7],loc.origin,_gi_,_gh_)} + var _j_=Unsafe[1],t87=_j_.document; + function getElementById(id) + {function _ge_(pnode){return pnode} + function _gf_(param){throw Stdlib[8]} + var t15=caml_jsstring_of_string(id),_gg_=t87.getElementById(t15); + return caml_call3(Opt[7],_gg_,_gf_,_ge_)} + function getElementById_exn(id) + {function _ga_(pnode){return pnode} + function _gb_(param) + {var _gd_=caml_call2(Stdlib_Printf[4],_k_,id); + return caml_call1(Stdlib[2],_gd_)} + var t17=caml_jsstring_of_string(id),_gc_=t87.getElementById(t17); + return caml_call3(Opt[7],_gc_,_gb_,_ga_)} + function getElementById_opt(id) + {var t19=caml_jsstring_of_string(id),_f$_=t87.getElementById(t19); + return caml_call1(Opt[10],_f$_)} + function getElementById_coerce(id,coerce) + {function _f7_(e) + {var _f__=caml_call1(coerce,e);return caml_call1(Opt[10],_f__)} + function _f8_(param){return 0} + var t21=caml_jsstring_of_string(id),_f9_=t87.getElementById(t21); + return caml_call3(Opt[7],_f9_,_f8_,_f7_)} + function opt_iter(x,f){if(x){var v=x[1];return caml_call1(f,v)}return 0} + function createElement(t24,name) + {var t23=caml_jsstring_of_string(name);return t24.createElement(t23)} + function unsafeCreateElement(doc,name){return createElement(doc,name)} + var createElementSyntax=[0,785140586]; + function unsafeCreateElementEx(type,name,doc,elt) + {for(;;) + {if(0 === type && 0 === name)return createElement(doc,elt); + var _f1_=createElementSyntax[1]; + if(785140586 === _f1_) + {try + {var + el=t87.createElement(''), + _f4_=el.tagName.toLowerCase() === "input"?1:0, + _f5_=_f4_?el.name === "x"?1:0:_f4_, + _f2_=_f5_} + catch(_f6_){var _f2_=0} + var _f3_=_f2_?982028505:-1003883683; + createElementSyntax[1] = _f3_; + continue} + if(982028505 <= _f1_) + {var t40=new array_length(); + t40.push("<",caml_jsstring_of_string(elt)); + opt_iter + (type, + function(t) + {var t34=caml_js_html_escape(t); + t40.push(' type="',t34,'"'); + return 0}); + opt_iter + (name, + function(n) + {var t38=caml_js_html_escape(n); + t40.push(' name="',t38,'"'); + return 0}); + t40.push(">"); + return doc.createElement(t40.join(""))} + var t28=createElement(doc,elt); + opt_iter(type,function(t25){return t28.type = t25}); + opt_iter(name,function(t27){return t28.name = t27}); + return t28}} + function createHtml(doc){return unsafeCreateElement(doc,cst_html)} + function createHead(doc){return unsafeCreateElement(doc,cst_head)} + function createLink(doc){return unsafeCreateElement(doc,cst_link)} + function createTitle(doc){return unsafeCreateElement(doc,cst_title)} + function createMeta(doc){return unsafeCreateElement(doc,cst_meta)} + function createBase(doc){return unsafeCreateElement(doc,cst_base)} + function createStyle(doc){return unsafeCreateElement(doc,cst_style)} + function createBody(doc){return unsafeCreateElement(doc,cst_body)} + function createForm(doc){return unsafeCreateElement(doc,cst_form)} + function createOptgroup(doc){return unsafeCreateElement(doc,cst_optgroup)} + function createOption(doc){return unsafeCreateElement(doc,cst_option)} + function createSelect(type,name,doc) + {return unsafeCreateElementEx(type,name,doc,cst_select$0)} + function createInput(type,name,doc) + {return unsafeCreateElementEx(type,name,doc,cst_input$0)} + function createTextarea(type,name,doc) + {return unsafeCreateElementEx(type,name,doc,cst_textarea)} + function createButton(type,name,doc) + {return unsafeCreateElementEx(type,name,doc,cst_button)} + function createLabel(doc){return unsafeCreateElement(doc,cst_label)} + function createFieldset(doc){return unsafeCreateElement(doc,cst_fieldset)} + function createLegend(doc){return unsafeCreateElement(doc,cst_legend)} + function createUl(doc){return unsafeCreateElement(doc,cst_ul)} + function createOl(doc){return unsafeCreateElement(doc,cst_ol)} + function createDl(doc){return unsafeCreateElement(doc,cst_dl)} + function createLi(doc){return unsafeCreateElement(doc,cst_li)} + function createDiv(doc){return unsafeCreateElement(doc,cst_div)} + function createEmbed(doc){return unsafeCreateElement(doc,cst_embed)} + function createP(doc){return unsafeCreateElement(doc,cst_p)} + function createH1(doc){return unsafeCreateElement(doc,cst_h1)} + function createH2(doc){return unsafeCreateElement(doc,cst_h2)} + function createH3(doc){return unsafeCreateElement(doc,cst_h3)} + function createH4(doc){return unsafeCreateElement(doc,cst_h4)} + function createH5(doc){return unsafeCreateElement(doc,cst_h5)} + function createH6(doc){return unsafeCreateElement(doc,cst_h6)} + function createQ(doc){return unsafeCreateElement(doc,cst_q)} + function createBlockquote(doc) + {return unsafeCreateElement(doc,cst_blockquote)} + function createPre(doc){return unsafeCreateElement(doc,cst_pre)} + function createBr(doc){return unsafeCreateElement(doc,cst_br)} + function createHr(doc){return unsafeCreateElement(doc,cst_hr)} + function createIns(doc){return unsafeCreateElement(doc,cst_ins)} + function createDel(doc){return unsafeCreateElement(doc,cst_del)} + function createA(doc){return unsafeCreateElement(doc,cst_a)} + function createImg(doc){return unsafeCreateElement(doc,cst_img)} + function createObject(doc){return unsafeCreateElement(doc,cst_object)} + function createParam(doc){return unsafeCreateElement(doc,cst_param)} + function createMap(doc){return unsafeCreateElement(doc,cst_map)} + function createArea(doc){return unsafeCreateElement(doc,cst_area)} + function createScript(doc){return unsafeCreateElement(doc,cst_script)} + function createTable(doc){return unsafeCreateElement(doc,cst_table)} + function createCaption(doc){return unsafeCreateElement(doc,cst_caption)} + function createCol(doc){return unsafeCreateElement(doc,cst_col)} + function createColgroup(doc){return unsafeCreateElement(doc,cst_colgroup)} + function createThead(doc){return unsafeCreateElement(doc,cst_thead)} + function createTfoot(doc){return unsafeCreateElement(doc,cst_tfoot)} + function createTbody(doc){return unsafeCreateElement(doc,cst_tbody)} + function createTr(doc){return unsafeCreateElement(doc,cst_tr)} + function createTh(doc){return unsafeCreateElement(doc,cst_th)} + function createTd(doc){return unsafeCreateElement(doc,cst_td)} + function createSub(doc){return createElement(doc,cst_sub)} + function createSup(doc){return createElement(doc,cst_sup)} + function createSpan(doc){return createElement(doc,cst_span)} + function createTt(doc){return createElement(doc,cst_tt)} + function createI(doc){return createElement(doc,cst_i)} + function createB(doc){return createElement(doc,cst_b)} + function createBig(doc){return createElement(doc,cst_big)} + function createSmall(doc){return createElement(doc,cst_small)} + function createEm(doc){return createElement(doc,cst_em)} + function createStrong(doc){return createElement(doc,cst_strong)} + function createCite(doc){return createElement(doc,cst_cite)} + function createDfn(doc){return createElement(doc,cst_dfn)} + function createCode(doc){return createElement(doc,cst_code)} + function createSamp(doc){return createElement(doc,cst_samp)} + function createKbd(doc){return createElement(doc,cst_kbd)} + function createVar(doc){return createElement(doc,cst_var)} + function createAbbr(doc){return createElement(doc,cst_abbr)} + function createDd(doc){return createElement(doc,cst_dd)} + function createDt(doc){return createElement(doc,cst_dt)} + function createNoscript(doc){return createElement(doc,cst_noscript)} + function createAddress(doc){return createElement(doc,cst_address)} + function createFrameset(doc){return unsafeCreateElement(doc,cst_frameset)} + function createFrame(doc){return unsafeCreateElement(doc,cst_frame)} + function createIframe(doc){return unsafeCreateElement(doc,cst_iframe)} + function createAudio(doc){return unsafeCreateElement(doc,cst_audio)} + function createVideo(doc){return unsafeCreateElement(doc,cst_video)} + var + Canvas_not_available= + [248,cst_Js_of_ocaml_Dom_html_Canva,caml_fresh_oo_id(0)]; + function createCanvas(doc) + {var t52=unsafeCreateElement(doc,cst_canvas); + if(1 - caml_call1(Opt[5],t52.getContext))throw Canvas_not_available; + return t52} + var + html_element=Unsafe[1].HTMLElement, + element$0= + html_element === t39 + ?function(e){return e.innerHTML === t39?no_handler:e} + :function(e){return e instanceof html_element?e:no_handler}; + function unsafeCoerce(tag,e) + {var t56=e.tagName,_f0_=caml_jsstring_of_string(tag); + return t56.toLowerCase() === _f0_?e:no_handler} + function a(e){return unsafeCoerce(cst_a$0,e)} + function area(e){return unsafeCoerce(cst_area$0,e)} + function base(e){return unsafeCoerce(cst_base$0,e)} + function blockquote(e){return unsafeCoerce(cst_blockquote$0,e)} + function body(e){return unsafeCoerce(cst_body$0,e)} + function br(e){return unsafeCoerce(cst_br$0,e)} + function button(e){return unsafeCoerce(cst_button$0,e)} + function canvas(e){return unsafeCoerce(cst_canvas$0,e)} + function caption(e){return unsafeCoerce(cst_caption$0,e)} + function col(e){return unsafeCoerce(cst_col$0,e)} + function colgroup(e){return unsafeCoerce(cst_colgroup$0,e)} + function del(e){return unsafeCoerce(cst_del$0,e)} + function div(e){return unsafeCoerce(cst_div$0,e)} + function dl(e){return unsafeCoerce(cst_dl$0,e)} + function fieldset(e){return unsafeCoerce(cst_fieldset$0,e)} + function embed(e){return unsafeCoerce(cst_embed$0,e)} + function form(e){return unsafeCoerce(cst_form$0,e)} + function frameset(e){return unsafeCoerce(cst_frameset$0,e)} + function frame(e){return unsafeCoerce(cst_frame$0,e)} + function h1(e){return unsafeCoerce(cst_h1$0,e)} + function h2(e){return unsafeCoerce(cst_h2$0,e)} + function h3(e){return unsafeCoerce(cst_h3$0,e)} + function h4(e){return unsafeCoerce(cst_h4$0,e)} + function h5(e){return unsafeCoerce(cst_h5$0,e)} + function h6(e){return unsafeCoerce(cst_h6$0,e)} + function head(e){return unsafeCoerce(cst_head$0,e)} + function hr(e){return unsafeCoerce(cst_hr$0,e)} + function html(e){return unsafeCoerce(cst_html$0,e)} + function iframe(e){return unsafeCoerce(cst_iframe$0,e)} + function img(e){return unsafeCoerce(cst_img$0,e)} + function input$0(e){return unsafeCoerce(cst_input$1,e)} + function ins(e){return unsafeCoerce(cst_ins$0,e)} + function label(e){return unsafeCoerce(cst_label$0,e)} + function legend(e){return unsafeCoerce(cst_legend$0,e)} + function li(e){return unsafeCoerce(cst_li$0,e)} + function link(e){return unsafeCoerce(cst_link$0,e)} + function map$2(e){return unsafeCoerce(cst_map$0,e)} + function meta(e){return unsafeCoerce(cst_meta$0,e)} + function object(e){return unsafeCoerce(cst_object$0,e)} + function ol(e){return unsafeCoerce(cst_ol$0,e)} + function optgroup(e){return unsafeCoerce(cst_optgroup$0,e)} + function option$1(e){return unsafeCoerce(cst_option$0,e)} + function p(e){return unsafeCoerce(cst_p$0,e)} + function param(e){return unsafeCoerce(cst_param$0,e)} + function pre(e){return unsafeCoerce(cst_pre$0,e)} + function q(e){return unsafeCoerce(cst_q$0,e)} + function script(e){return unsafeCoerce(cst_script$0,e)} + function select$0(e){return unsafeCoerce(cst_select$1,e)} + function style(e){return unsafeCoerce(cst_style$0,e)} + function table(e){return unsafeCoerce(cst_table$0,e)} + function tbody(e){return unsafeCoerce(cst_tbody$0,e)} + function td(e){return unsafeCoerce(cst_td$0,e)} + function textarea(e){return unsafeCoerce(cst_textarea$0,e)} + function tfoot(e){return unsafeCoerce(cst_tfoot$0,e)} + function th(e){return unsafeCoerce(cst_th$0,e)} + function thead(e){return unsafeCoerce(cst_thead$0,e)} + function title(e){return unsafeCoerce(cst_title$0,e)} + function tr(e){return unsafeCoerce(cst_tr$0,e)} + function ul(e){return unsafeCoerce(cst_ul$0,e)} + function audio(e){return unsafeCoerce(cst_audio$0,e)} + function video(e){return unsafeCoerce(cst_video$0,e)} + function unsafeCoerceEvent(constr,ev) + {if(constr !== t39 && ev instanceof constr)return ev;return no_handler} + function mouseEvent(ev){return unsafeCoerceEvent(Unsafe[1].MouseEvent,ev)} + function keyboardEvent(ev) + {return unsafeCoerceEvent(Unsafe[1].KeyboardEvent,ev)} + function wheelEvent(ev){return unsafeCoerceEvent(Unsafe[1].WheelEvent,ev)} + function mouseScrollEvent(ev) + {return unsafeCoerceEvent(Unsafe[1].MouseScrollEvent,ev)} + function popStateEvent(ev) + {return unsafeCoerceEvent(Unsafe[1].PopStateEvent,ev)} + function messageEvent(ev) + {return unsafeCoerceEvent(Unsafe[1].MessageEvent,ev)} + function eventRelatedTarget(e) + {function _fX_(param) + {var match=caml_string_of_jsstring(e.type); + if(caml_string_notequal(match,cst_mouseout$0)) + {if(caml_string_notequal(match,cst_mouseover$0))return no_handler; + var _fY_=function(param){throw [0,Assert_failure,_l_]}; + return caml_call2(Optdef[8],e.fromElement,_fY_)} + function _fZ_(param){throw [0,Assert_failure,_m_]} + return caml_call2(Optdef[8],e.toElement,_fZ_)} + return caml_call2(Optdef[8],e.relatedTarget,_fX_)} + function eventAbsolutePosition(e) + {var t70=t87.body,t71=t87.documentElement; + return [0, + (e.clientX + t70.scrollLeft | 0) + t71.scrollLeft | 0, + (e.clientY + t70.scrollTop | 0) + t71.scrollTop | 0]} + function eventAbsolutePosition$0(e) + {function _fT_(x) + {function _fV_(y){return [0,x,y]} + function _fW_(param){return eventAbsolutePosition(e)} + return caml_call3(Optdef[7],e.pageY,_fW_,_fV_)} + function _fU_(param){return eventAbsolutePosition(e)} + return caml_call3(Optdef[7],e.pageX,_fU_,_fT_)} + function elementClientPosition(e) + {var t80=e.getBoundingClientRect(),t81=t87.body,t82=t87.documentElement; + return [0, + ((t80.left | 0) - t81.clientLeft | 0) - t82.clientLeft | 0, + ((t80.top | 0) - t81.clientTop | 0) - t82.clientTop | 0]} + function getDocumentScroll(param) + {var t88=t87.body,t89=t87.documentElement; + return [0, + t88.scrollLeft + t89.scrollLeft | 0, + t88.scrollTop + t89.scrollTop | 0]} + function buttonPressed(ev) + {function _fR_(x){return x} + function _fS_(param) + {var match=ev.button,switcher=match - 1 | 0; + if(! (3 < switcher >>> 0)) + switch(switcher) + {case 0:return 1;case 1:return 3;case 2:break;default:return 2} + return 0} + return caml_call3(Optdef[7],ev.which,_fS_,_fR_)} + function addMousewheelEventListenerWith(e,capture,once,passive,h) + {var t96=createDiv(t87); + t96.setAttribute("onmousewheel","return;"); + if(typeof t96.onmousewheel === "function") + {var + _fN_= + handler + (function(e) + {function _fP_(param){return 0} + var + dx= + (- caml_call2(Optdef[8],e.wheelDeltaX,_fP_) | 0) / 40 | 0; + function _fQ_(param){return e.wheelDelta} + var + dy= + (- caml_call2(Optdef[8],e.wheelDeltaY,_fQ_) | 0) / 40 | 0; + return caml_call3(h,e,dx,dy)}); + return addEventListenerWithOptions + (e,Event$0[14],capture,once,passive,_fN_)} + var + _fO_= + handler + (function(e) + {var d=e.detail; + return e.axis === e.HORIZONTAL + ?caml_call3(h,e,d,0) + :caml_call3(h,e,0,d)}); + return addEventListenerWithOptions + (e,Event$0[15],capture,once,passive,_fO_)} + function addMousewheelEventListener(e,h,capt) + {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)} + function f(v) + {var + match=caml_string_of_jsstring(v), + switch$0=caml_string_compare(match,cst_KeyH); + if(0 <= switch$0) + {if(! (0 < switch$0))return 8; + var switch$1=caml_string_compare(match,cst_Numpad4); + if(0 <= switch$1) + {if(! (0 < switch$1))return 72; + var switch$2=caml_string_compare(match,cst_PageUp); + if(0 <= switch$2) + {if(! (0 < switch$2))return 98; + var switch$3=caml_string_compare(match,cst_ShiftRight); + if(0 <= switch$3) + {if(! (0 < switch$3))return 91; + if(! caml_string_notequal(match,cst_Slash))return 55; + if(! caml_string_notequal(match,cst_Space))return 41; + if(! caml_string_notequal(match,cst_Tab))return 39; + if(! caml_string_notequal(match,cst_VolumeDown))return 103; + if(! caml_string_notequal(match,cst_VolumeMute))return 102; + if(! caml_string_notequal(match,cst_VolumeUp))return 104} + else + {if(! caml_string_notequal(match,cst_Pause))return 123; + if(! caml_string_notequal(match,cst_Period))return 54; + if(! caml_string_notequal(match,cst_PrintScreen))return 120; + if(! caml_string_notequal(match,cst_Quote))return 50; + if(! caml_string_notequal(match,cst_ScrollLock))return 119; + if(! caml_string_notequal(match,cst_Semicolon))return 49; + if(! caml_string_notequal(match,cst_ShiftLeft))return 90}} + else + {var switch$4=caml_string_compare(match,cst_NumpadDivide); + if(0 <= switch$4) + {if(! (0 < switch$4))return 84; + if(! caml_string_notequal(match,cst_NumpadEnter))return 83; + if(! caml_string_notequal(match,cst_NumpadEqual))return 82; + if(! caml_string_notequal(match,cst_NumpadMultiply))return 78; + if(! caml_string_notequal(match,cst_NumpadSubtract))return 79; + if(! caml_string_notequal(match,cst_OSLeft))return 117; + if(! caml_string_notequal(match,cst_OSRight))return 118; + if(! caml_string_notequal(match,cst_PageDown))return 99} + else + {if(! caml_string_notequal(match,cst_Numpad5))return 73; + if(! caml_string_notequal(match,cst_Numpad6))return 74; + if(! caml_string_notequal(match,cst_Numpad7))return 75; + if(! caml_string_notequal(match,cst_Numpad8))return 76; + if(! caml_string_notequal(match,cst_Numpad9))return 77; + if(! caml_string_notequal(match,cst_NumpadAdd))return 80; + if(! caml_string_notequal(match,cst_NumpadDecimal))return 81}}} + else + {var switch$5=caml_string_compare(match,cst_KeyX); + if(0 <= switch$5) + {if(! (0 < switch$5))return 24; + var switch$6=caml_string_compare(match,cst_MetaRight); + if(0 <= switch$6) + {if(! (0 < switch$6))return 89; + if(! caml_string_notequal(match,cst_Minus))return 37; + if(! caml_string_notequal(match,cst_NumLock))return 85; + if(! caml_string_notequal(match,cst_Numpad0))return 68; + if(! caml_string_notequal(match,cst_Numpad1))return 69; + if(! caml_string_notequal(match,cst_Numpad2))return 70; + if(! caml_string_notequal(match,cst_Numpad3))return 71} + else + {if(! caml_string_notequal(match,cst_KeyY))return 25; + if(! caml_string_notequal(match,cst_KeyZ))return 26; + if(! caml_string_notequal(match,cst_MediaPlayPause))return 107; + if(! caml_string_notequal(match,cst_MediaStop))return 108; + if(! caml_string_notequal(match,cst_MediaTrackNext))return 106; + if(! caml_string_notequal(match,cst_MediaTrackPrevious)) + return 105; + if(! caml_string_notequal(match,cst_MetaLeft))return 88}} + else + {var switch$7=caml_string_compare(match,cst_KeyP); + if(0 <= switch$7) + {if(! (0 < switch$7))return 16; + if(! caml_string_notequal(match,cst_KeyQ))return 17; + if(! caml_string_notequal(match,cst_KeyR))return 18; + if(! caml_string_notequal(match,cst_KeyS))return 19; + if(! caml_string_notequal(match,cst_KeyT))return 20; + if(! caml_string_notequal(match,cst_KeyU))return 21; + if(! caml_string_notequal(match,cst_KeyV))return 22; + if(! caml_string_notequal(match,cst_KeyW))return 23} + else + {if(! caml_string_notequal(match,cst_KeyI))return 9; + if(! caml_string_notequal(match,cst_KeyJ))return 10; + if(! caml_string_notequal(match,cst_KeyK))return 11; + if(! caml_string_notequal(match,cst_KeyL))return 12; + if(! caml_string_notequal(match,cst_KeyM))return 13; + if(! caml_string_notequal(match,cst_KeyN))return 14; + if(! caml_string_notequal(match,cst_KeyO))return 15}}}} + else + {var switch$8=caml_string_compare(match,cst_Digit6); + if(0 <= switch$8) + {if(! (0 < switch$8))return 33; + var switch$9=caml_string_compare(match,cst_F6); + if(0 <= switch$9) + {if(! (0 < switch$9))return 61; + var switch$10=caml_string_compare(match,cst_KeyA); + if(0 <= switch$10) + {if(! (0 < switch$10))return 1; + if(! caml_string_notequal(match,cst_KeyB))return 2; + if(! caml_string_notequal(match,cst_KeyC))return 3; + if(! caml_string_notequal(match,cst_KeyD))return 4; + if(! caml_string_notequal(match,cst_KeyE))return 5; + if(! caml_string_notequal(match,cst_KeyF))return 6; + if(! caml_string_notequal(match,cst_KeyG))return 7} + else + {if(! caml_string_notequal(match,cst_F7))return 62; + if(! caml_string_notequal(match,cst_F8))return 63; + if(! caml_string_notequal(match,cst_F9))return 64; + if(! caml_string_notequal(match,cst_Home))return 100; + if(! caml_string_notequal(match,cst_Insert))return 44; + if(! caml_string_notequal(match,cst_IntlBackslash))return 121; + if(! caml_string_notequal(match,cst_IntlYen))return 122}} + else + {var switch$11=caml_string_compare(match,cst_F1); + if(0 <= switch$11) + {if(! (0 < switch$11))return 56; + if(! caml_string_notequal(match,cst_F10))return 65; + if(! caml_string_notequal(match,cst_F11))return 66; + if(! caml_string_notequal(match,cst_F12))return 67; + if(! caml_string_notequal(match,cst_F2))return 57; + if(! caml_string_notequal(match,cst_F3))return 58; + if(! caml_string_notequal(match,cst_F4))return 59; + if(! caml_string_notequal(match,cst_F5))return 60} + else + {if(! caml_string_notequal(match,cst_Digit7))return 34; + if(! caml_string_notequal(match,cst_Digit8))return 35; + if(! caml_string_notequal(match,cst_Digit9))return 36; + if(! caml_string_notequal(match,cst_End))return 101; + if(! caml_string_notequal(match,cst_Enter))return 40; + if(! caml_string_notequal(match,cst_Equal))return 38; + if(! caml_string_notequal(match,cst_Escape))return 42}}} + else + {var switch$12=caml_string_compare(match,cst_BrowserRefresh); + if(0 <= switch$12) + {if(! (0 < switch$12))return 113; + var switch$13=caml_string_compare(match,cst_Delete); + if(0 <= switch$13) + {if(! (0 < switch$13))return 45; + if(! caml_string_notequal(match,cst_Digit0))return 27; + if(! caml_string_notequal(match,cst_Digit1))return 28; + if(! caml_string_notequal(match,cst_Digit2))return 29; + if(! caml_string_notequal(match,cst_Digit3))return 30; + if(! caml_string_notequal(match,cst_Digit4))return 31; + if(! caml_string_notequal(match,cst_Digit5))return 32} + else + {if(! caml_string_notequal(match,cst_BrowserSearch))return 110; + if(! caml_string_notequal(match,cst_BrowserStop))return 114; + if(! caml_string_notequal(match,cst_CapsLock))return 46; + if(! caml_string_notequal(match,cst_Comma))return 53; + if(! caml_string_notequal(match,cst_ContextMenu))return 109; + if(! caml_string_notequal(match,cst_ControlLeft))return 86; + if(! caml_string_notequal(match,cst_ControlRight))return 87}} + else + {var switch$14=caml_string_compare(match,cst_Backslash); + if(0 <= switch$14) + {if(! (0 < switch$14))return 52; + if(! caml_string_notequal(match,cst_Backspace))return 43; + if(! caml_string_notequal(match,cst_BracketLeft))return 47; + if(! caml_string_notequal(match,cst_BracketRight))return 48; + if(! caml_string_notequal(match,cst_BrowserBack))return 116; + if(! caml_string_notequal(match,cst_BrowserFavorites)) + return 112; + if(! caml_string_notequal(match,cst_BrowserForward))return 115; + if(! caml_string_notequal(match,cst_BrowserHome))return 111} + else + {if(! caml_string_notequal(match,cst_AltLeft))return 92; + if(! caml_string_notequal(match,cst_AltRight))return 93; + if(! caml_string_notequal(match,cst_ArrowDown))return 97; + if(! caml_string_notequal(match,cst_ArrowLeft))return 94; + if(! caml_string_notequal(match,cst_ArrowRight))return 95; + if(! caml_string_notequal(match,cst_ArrowUp))return 96; + if(! caml_string_notequal(match,cst_Backquote))return 51}}}} + return 0} + function try_key_code_left(param) + {if(19 <= param) + {if(91 === param)return 88} + else + if(16 <= param) + switch(param - 16 | 0) + {case 0:return 90;case 1:return 86;default:return 92} + return 0} + function try_key_code_right(param) + {if(19 <= param) + {if(91 === param)return 89} + else + if(16 <= param) + switch(param - 16 | 0) + {case 0:return 91;case 1:return 87;default:return 93} + return 0} + function try_key_code_numpad(param) + {if(47 <= param) + {var switcher=param - 96 | 0; + if(! (15 < switcher >>> 0)) + switch(switcher) + {case 0:return 68; + case 1:return 69; + case 2:return 70; + case 3:return 71; + case 4:return 72; + case 5:return 73; + case 6:return 74; + case 7:return 75; + case 8:return 76; + case 9:return 77; + case 10:return 78; + case 11:return 80; + case 12:break; + case 13:return 79; + case 14:return 81; + default:return 84}} + else + if(12 <= param) + switch(param - 12 | 0) + {case 0:return 73; + case 1:return 83; + case 21:return 77; + case 22:return 71; + case 23:return 69; + case 24:return 75; + case 25:return 72; + case 26:return 76; + case 27:return 74; + case 28:return 70; + case 33:return 68; + case 34:return 81 + } + return 0} + function try_key_code_normal(param) + {var switcher=param - 8 | 0; + if(! (214 < switcher >>> 0)) + {var _fM_=switcher; + if(67 <= _fM_) + switch(_fM_) + {case 67:return 11; + case 68:return 12; + case 69:return 13; + case 70:return 14; + case 71:return 15; + case 72:return 16; + case 73:return 17; + case 74:return 18; + case 75:return 19; + case 76:return 20; + case 77:return 21; + case 78:return 22; + case 79:return 23; + case 80:return 24; + case 81:return 25; + case 82:return 26; + case 85:return 109; + case 104:return 56; + case 105:return 57; + case 106:return 58; + case 107:return 59; + case 108:return 60; + case 109:return 61; + case 110:return 62; + case 111:return 63; + case 112:return 64; + case 113:return 65; + case 114:return 66; + case 115:return 67; + case 137:return 119; + case 178:return 49; + case 179:return 38; + case 180:return 53; + case 181:return 37; + case 182:return 54; + case 183:return 55; + case 184:return 51; + case 211:return 47; + case 212:return 52; + case 213:return 48; + case 214:return 50 + } + else + switch(_fM_) + {case 0:return 43; + case 1:return 39; + case 5:return 40; + case 11:return 123; + case 12:return 46; + case 19:return 42; + case 24:return 41; + case 25:return 98; + case 26:return 99; + case 27:return 101; + case 28:return 100; + case 29:return 94; + case 30:return 96; + case 31:return 95; + case 32:return 97; + case 34:return 120; + case 37:return 44; + case 38:return 45; + case 40:return 27; + case 41:return 28; + case 42:return 29; + case 43:return 30; + case 44:return 31; + case 45:return 32; + case 46:return 33; + case 47:return 34; + case 48:return 35; + case 49:return 36; + case 57:return 1; + case 58:return 2; + case 59:return 3; + case 60:return 4; + case 61:return 5; + case 62:return 6; + case 63:return 7; + case 64:return 8; + case 65:return 9; + case 66:return 10 + }} + return 0} + function make_unidentified(param){return 0} + function run_next(value,f,v){return v?v:caml_call1(f,value)} + function symbol$11(x,f){return caml_call1(f,x)} + function of_event(evt) + {var _fF_=evt.keyCode; + function _fG_(_fL_){return run_next(_fF_,try_key_code_normal,_fL_)} + var match=evt.location,switcher=match - 1 | 0; + if(2 < switcher >>> 0) + var _fH_=make_unidentified; + else + switch(switcher) + {case 0: + var + _fC_=evt.keyCode, + _fH_=function(_fJ_){return run_next(_fC_,try_key_code_left,_fJ_)}; + break; + case 1: + var + _fD_=evt.keyCode, + _fH_=function(_fI_){return run_next(_fD_,try_key_code_right,_fI_)}; + break; + default: + var + _fE_=evt.keyCode, + _fH_=function(_fK_){return run_next(_fE_,try_key_code_numpad,_fK_)}} + var value=evt.code; + return symbol$11 + (symbol$11 + (symbol$11 + (0, + function(v) + {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}), + _fH_), + _fG_)} + function char_of_int(value) + {if(caml_call2(symbol$5,0,value)) + try + {var _fA_=[0,caml_call1(Stdlib_Uchar[8],value)];return _fA_} + catch(_fB_){return 0} + return 0} + function empty_string(param){return ""} + function none(param){return 0} + function of_event$0(evt) + {var t110=caml_call2(Optdef[8],evt.key,empty_string),match=t110.length; + return 0 === match + ?caml_call3(Optdef[7],evt.charCode,none,char_of_int) + :1 === match?char_of_int(t110.charCodeAt(0) | 0):0} + function element$1(_fz_){return _fz_} + function tagged(e) + {var t112=e.tagName,tag=caml_string_of_jsbytes(t112.toLowerCase()); + if(caml_call2(symbol$8,caml_ml_string_length(tag),0))return [61,e]; + var match=runtime.caml_string_unsafe_get(tag,0),switcher=match - 97 | 0; + if(! (21 < switcher >>> 0)) + switch(switcher) + {case 0: + return caml_string_notequal(tag,cst_a$1) + ?caml_string_notequal(tag,cst_area$1) + ?caml_string_notequal(tag,cst_audio$1)?[61,e]:[2,e] + :[1,e] + :[0,e]; + case 1: + return caml_string_notequal(tag,cst_base$1) + ?caml_string_notequal(tag,cst_blockquote$1) + ?caml_string_notequal(tag,cst_body$1) + ?caml_string_notequal(tag,cst_br$1) + ?caml_string_notequal(tag,cst_button$1)?[61,e]:[7,e] + :[6,e] + :[5,e] + :[4,e] + :[3,e]; + case 2: + return caml_string_notequal(tag,cst_canvas$1) + ?caml_string_notequal(tag,cst_caption$1) + ?caml_string_notequal(tag,cst_col$1) + ?caml_string_notequal(tag,cst_colgroup$1)?[61,e]:[11,e] + :[10,e] + :[9,e] + :[8,e]; + case 3: + return caml_string_notequal(tag,cst_del$1) + ?caml_string_notequal(tag,cst_div$1) + ?caml_string_notequal(tag,cst_dl$1)?[61,e]:[14,e] + :[13,e] + :[12,e]; + case 4:return caml_string_notequal(tag,cst_embed$1)?[61,e]:[15,e]; + case 5: + return caml_string_notequal(tag,cst_fieldset$1) + ?caml_string_notequal(tag,cst_form$1) + ?caml_string_notequal(tag,cst_frame$1) + ?caml_string_notequal(tag,cst_frameset$1)?[61,e]:[18,e] + :[19,e] + :[17,e] + :[16,e]; + case 7: + return caml_string_notequal(tag,cst_h1$1) + ?caml_string_notequal(tag,cst_h2$1) + ?caml_string_notequal(tag,cst_h3$1) + ?caml_string_notequal(tag,cst_h4$1) + ?caml_string_notequal(tag,cst_h5$1) + ?caml_string_notequal(tag,cst_h6$1) + ?caml_string_notequal(tag,cst_head$1) + ?caml_string_notequal(tag,cst_hr$1) + ?caml_string_notequal(tag,cst_html$1)?[61,e]:[28,e] + :[27,e] + :[26,e] + :[25,e] + :[24,e] + :[23,e] + :[22,e] + :[21,e] + :[20,e]; + case 8: + return caml_string_notequal(tag,cst_iframe$1) + ?caml_string_notequal(tag,cst_img$1) + ?caml_string_notequal(tag,cst_input$2) + ?caml_string_notequal(tag,cst_ins$1)?[61,e]:[32,e] + :[31,e] + :[30,e] + :[29,e]; + case 11: + return caml_string_notequal(tag,cst_label$1) + ?caml_string_notequal(tag,cst_legend$1) + ?caml_string_notequal(tag,cst_li$1) + ?caml_string_notequal(tag,cst_link$1)?[61,e]:[36,e] + :[35,e] + :[34,e] + :[33,e]; + case 12: + return caml_string_notequal(tag,cst_map$1) + ?caml_string_notequal(tag,cst_meta$1)?[61,e]:[38,e] + :[37,e]; + case 14: + return caml_string_notequal(tag,cst_object$1) + ?caml_string_notequal(tag,cst_ol$1) + ?caml_string_notequal(tag,cst_optgroup$1) + ?caml_string_notequal(tag,cst_option$1)?[61,e]:[42,e] + :[41,e] + :[40,e] + :[39,e]; + case 15: + return caml_string_notequal(tag,cst_p$1) + ?caml_string_notequal(tag,cst_param$1) + ?caml_string_notequal(tag,cst_pre$1)?[61,e]:[45,e] + :[44,e] + :[43,e]; + case 16:return caml_string_notequal(tag,cst_q$1)?[61,e]:[46,e]; + case 18: + return caml_string_notequal(tag,cst_script$1) + ?caml_string_notequal(tag,cst_select$2) + ?caml_string_notequal(tag,cst_style$1)?[61,e]:[49,e] + :[48,e] + :[47,e]; + case 19: + return caml_string_notequal(tag,cst_table$1) + ?caml_string_notequal(tag,cst_tbody$1) + ?caml_string_notequal(tag,cst_td$1) + ?caml_string_notequal(tag,cst_textarea$1) + ?caml_string_notequal(tag,cst_tfoot$1) + ?caml_string_notequal(tag,cst_th$1) + ?caml_string_notequal(tag,cst_thead$1) + ?caml_string_notequal(tag,cst_title$1) + ?caml_string_notequal(tag,cst_tr$1)?[61,e]:[58,e] + :[57,e] + :[56,e] + :[55,e] + :[54,e] + :[53,e] + :[52,e] + :[51,e] + :[50,e]; + case 20:return caml_string_notequal(tag,cst_ul$1)?[61,e]:[59,e]; + case 21:return caml_string_notequal(tag,cst_video$1)?[61,e]:[60,e] + } + return [61,e]} + function opt_tagged(e) + {function _fx_(e){return [0,tagged(e)]} + function _fy_(param){return 0} + return caml_call3(Opt[7],e,_fy_,_fx_)} + function taggedEvent(ev) + {function _ff_(ev){return [0,ev]} + function _fg_(param) + {function _fi_(ev){return [1,ev]} + function _fj_(param) + {function _fl_(ev){return [3,ev]} + function _fm_(param) + {function _fo_(ev){return [4,ev]} + function _fp_(param) + {function _fr_(ev){return [5,ev]} + function _fs_(param) + {function _fu_(ev){return [2,ev]} + function _fv_(param){return [6,ev]} + var _fw_=messageEvent(ev); + return caml_call3(Opt[7],_fw_,_fv_,_fu_)} + var _ft_=popStateEvent(ev); + return caml_call3(Opt[7],_ft_,_fs_,_fr_)} + var _fq_=mouseScrollEvent(ev); + return caml_call3(Opt[7],_fq_,_fp_,_fo_)} + var _fn_=wheelEvent(ev); + return caml_call3(Opt[7],_fn_,_fm_,_fl_)} + var _fk_=keyboardEvent(ev); + return caml_call3(Opt[7],_fk_,_fj_,_fi_)} + var _fh_=mouseEvent(ev); + return caml_call3(Opt[7],_fh_,_fg_,_ff_)} + function opt_taggedEvent(ev) + {function _fd_(ev){return [0,taggedEvent(ev)]} + function _fe_(param){return 0} + return caml_call3(Opt[7],ev,_fe_,_fd_)} + function stopPropagation(ev) + {function _fb_(param){return ev.stopPropagation()} + function _fc_(param){return ev.cancelBubble = t25} + return caml_call3(Optdef[7],ev.stopPropagation,_fc_,_fb_)} + var + requestAnimationFrame= + runtime.caml_js_pure_expr + (function(param) + {var + l= + [0, + _j_.requestAnimationFrame, + [0, + _j_.mozRequestAnimationFrame, + [0, + _j_.webkitRequestAnimationFrame, + [0, + _j_.oRequestAnimationFrame, + [0,_j_.msRequestAnimationFrame,0]]]]]; + try + {var + _e__=function(c){return caml_call1(Optdef[5],c)}, + req=caml_call2(Stdlib_List[38],_e__,l), + _e$_=function(callback){return req(callback)}; + return _e$_} + catch(_fa_) + {_fa_ = caml_wrap_exception(_fa_); + if(_fa_ === Stdlib[8]) + {var + now=function(param){var t123=new t122();return t123.getTime()}, + last=[0,now(0)]; + return function(callback) + {var + t=now(0), + dt=last[1] + 16.6666666666666679 - t, + dt$0=dt < 0.?0.:dt; + last[1] = t; + _j_.setTimeout(callback,dt$0); + return 0}} + throw _fa_}}); + function hasPushState(param) + {var t128=_j_.history;return caml_call1(Optdef[5],t128.pushState)} + function hasPlaceholder(param) + {var t129=createInput(0,0,t87); + return caml_call1(Optdef[5],t129.placeholder)} + function hasRequired(param) + {var t130=createInput(0,0,t87); + return caml_call1(Optdef[5],t130.required)} + var overflow_limit=2147483000.; + function setTimeout(callback,d) + {var id=[0,0]; + function loop(step,param) + {if(2147483000. < step) + var remain=step - 2147483000.,step$0=overflow_limit; + else + var remain=0.,step$0=step; + var + cb=remain == 0.?callback:function(_e9_){return loop(remain,_e9_)}, + t131=caml_js_wrap_callback(cb); + id[1] = [0,_j_.setTimeout(t131,step$0)]; + return 0} + loop(d,0); + return id} + function clearTimeout(id) + {var _e8_=id[1]; + if(_e8_){var x=_e8_[1];id[1] = 0;return _j_.clearTimeout(x)} + return 0} + function js_array_of_collection(c){return [].slice.call(c)} + var + Js_of_ocaml_Dom_html= + [0, + d, + t87, + getElementById_opt, + getElementById_exn, + getElementById_coerce, + getElementById, + location_origin, + _j_, + no_handler, + handler, + full_handler, + invoke_handler, + eventTarget, + eventRelatedTarget, + Event$0, + addEventListenerWithOptions, + addEventListener, + removeEventListener, + addMousewheelEventListenerWith, + addMousewheelEventListener, + createCustomEvent, + buttonPressed, + eventAbsolutePosition$0, + elementClientPosition, + getDocumentScroll, + [0,of_event,try_key_code_normal], + [0,of_event$0], + createHtml, + createHead, + createLink, + createTitle, + createMeta, + createBase, + createStyle, + createBody, + createForm, + createOptgroup, + createOption, + createSelect, + createInput, + createTextarea, + createButton, + createLabel, + createFieldset, + createLegend, + createUl, + createOl, + createDl, + createLi, + createDiv, + createEmbed, + createP, + createH1, + createH2, + createH3, + createH4, + createH5, + createH6, + createQ, + createBlockquote, + createPre, + createBr, + createHr, + createIns, + createDel, + createA, + createImg, + createObject, + createParam, + createMap, + createArea, + createScript, + createTable, + createCaption, + createCol, + createColgroup, + createThead, + createTfoot, + createTbody, + createTr, + createTh, + createTd, + createSub, + createSup, + createSpan, + createTt, + createI, + createB, + createBig, + createSmall, + createEm, + createStrong, + createCite, + createDfn, + createCode, + createSamp, + createKbd, + createVar, + createAbbr, + createDd, + createDt, + createNoscript, + createAddress, + createFrameset, + createFrame, + createIframe, + createAudio, + createVideo, + Canvas_not_available, + createCanvas, + element$1, + tagged, + opt_tagged, + taggedEvent, + opt_taggedEvent, + stopPropagation, + [0, + element$0, + a, + area, + audio, + base, + blockquote, + body, + br, + button, + canvas, + caption, + col, + colgroup, + del, + div, + embed, + dl, + fieldset, + form, + frameset, + frame, + h1, + h2, + h3, + h4, + h5, + h6, + head, + hr, + html, + iframe, + img, + input$0, + ins, + label, + legend, + li, + link, + map$2, + meta, + object, + ol, + optgroup, + option$1, + p, + param, + pre, + q, + script, + select$0, + style, + table, + tbody, + td, + textarea, + tfoot, + th, + thead, + title, + tr, + ul, + video, + mouseEvent, + keyboardEvent, + wheelEvent, + mouseScrollEvent, + popStateEvent, + messageEvent], + setTimeout, + clearTimeout, + js_array_of_collection, + requestAnimationFrame, + runtime.caml_js_html_entities, + onIE, + hasPushState, + hasPlaceholder, + hasRequired]; + caml_register_global(1651,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html"); + var formData=Unsafe[1].FormData,formData_form=Unsafe[1].FormData; + function filter_map$0(f,param) + {var param$0=param; + for(;;) + {if(param$0) + {var q=param$0[2],v=param$0[1],match=caml_call1(f,v); + if(match){var v$0=match[1];return [0,v$0,filter_map$0(f,q)]} + var param$0=q; + continue} + return 0}} + function have_content(elt) + {var + t3=elt.name, + _e6_=caml_call2(symbol$9,t3.length,0), + _e7_=_e6_?1 - (elt.disabled | 0):_e6_; + return _e7_} + function form_elements(get,form) + {var t34=form.elements,i$2=t34.length - 1 | 0,acc=0,i=i$2; + for(;;) + {if(caml_call2(symbol$5,i,0)) + {var + _eX_= + function(v$2) + {var match$3=tagged(v$2); + switch(match$3[0]) + {case 31: + var v=match$3[1]; + if(get)var sth=get[1],get$0=sth;else var get$0=0; + if(have_content(v)) + {var + name$1=caml_string_of_jsstring(v.name), + value=v.value, + t20=v.type, + match=caml_string_of_jsbytes(t20.toLowerCase()); + if(caml_string_notequal(match,cst_checkbox)) + {if(! caml_string_notequal(match,cst_file)) + {if(get$0)return [0,[0,name$1,[0,-976970511,value]],0]; + var match$0=caml_call1(Optdef[10],v.files); + if(match$0) + {var list=match$0[1]; + if(caml_call2(symbol$8,list.length,0)) + return [0,[0,name$1,[0,-976970511,""]],0]; + var match$1=caml_call1(Optdef[10],v.multiple); + if(match$1 && match$1[1]) + {var + _e1_=function(t28){return list.item(t28)}, + _e2_=caml_call2(Stdlib_Array[2],list.length,_e1_), + _e3_=caml_call1(Stdlib_Array[11],_e2_); + return filter_map$0 + (function(f) + {var match=caml_call1(Opt[10],f); + if(match) + {var file=match[1];return [0,[0,name$1,[0,781515420,file]]]} + return 0}, + _e3_)} + var _e4_=list.item(0),match$2=caml_call1(Opt[10],_e4_); + if(match$2) + {var file=match$2[1]; + return [0,[0,name$1,[0,781515420,file]],0]} + return 0} + return 0} + var switch$0=0; + if(caml_string_notequal(match,cst_password)) + {if(caml_string_notequal(match,cst_radio)) + {var switch$1=0; + if + (caml_string_notequal(match,cst_reset) + && + caml_string_notequal(match,cst_submit$0)) + {if(caml_string_notequal(match,cst_text)) + return [0,[0,name$1,[0,-976970511,value]],0]; + switch$0 = 1; + switch$1 = 1} + if(! switch$1)return 0}} + else + switch$0 = 1; + if(switch$0)return [0,[0,name$1,[0,-976970511,value]],0]} + return v.checked | 0?[0,[0,name$1,[0,-976970511,value]],0]:0} + return 0; + case 48: + var v$0=match$3[1]; + if(have_content(v$0)) + {var name$0=caml_string_of_jsstring(v$0.name); + if(v$0.multiple | 0) + {var + _eZ_= + function(i) + {var t13=v$0.options,_e5_=t13.item(i); + return caml_call1(Opt[10],_e5_)}, + t10=v$0.options, + options=caml_call2(Stdlib_Array[2],t10.length,_eZ_), + _e0_=caml_call1(Stdlib_Array[11],options); + return filter_map$0 + (function(param) + {if(param) + {var e=param[1]; + return e.selected | 0 + ?[0,[0,name$0,[0,-976970511,e.value]]] + :0} + return 0}, + _e0_)} + return [0,[0,name$0,[0,-976970511,v$0.value]],0]} + return 0; + case 53: + var v$1=match$3[1]; + if(have_content(v$1)) + {var name=caml_string_of_jsstring(v$1.name); + return [0,[0,name,[0,-976970511,v$1.value]],0]} + return 0; + default:return 0}}, + _eY_=caml_call2(Stdlib_List[19],_eX_,acc); + return caml_call1(Stdlib_List[14],_eY_)} + var t32=form.elements,_eW_=t32.item(i),match=caml_call1(Opt[10],_eW_); + if(match) + {var x=match[1],i$0=i - 1 | 0,acc$0=[0,x,acc],acc=acc$0,i=i$0; + continue} + var i$1=i - i | 0,i=i$1; + continue}} + function append(form_contents,form_elt) + {if(891486873 <= form_contents[1]) + {var list=form_contents[2];list[1] = [0,form_elt,list[1]];return 0} + var f=form_contents[2],_eU_=form_elt[2],_eV_=form_elt[1]; + if(781515420 <= _eU_[1]) + {var file=_eU_[2],t38=caml_jsstring_of_string(_eV_); + return f.append(t38,file)} + var s=_eU_[2],t35=caml_jsstring_of_string(_eV_); + return f.append(t35,s)} + function empty_form_contents(param) + {var match=caml_call1(Optdef[10],formData); + if(match){var constr=match[1];return [0,808620462,new constr()]} + return [0,891486873,[0,0]]} + function post_form_contents(form) + {var contents=empty_form_contents(0),_eR_=form_elements(0,form); + function _eS_(_eT_){return append(contents,_eT_)} + caml_call2(Stdlib_List[17],_eS_,_eR_); + return contents} + function get_form_contents(form) + {var _eO_=form_elements(_n_,form); + function _eP_(param) + {var _eQ_=param[2]; + if(typeof _eQ_ !== "number" && -976970511 === _eQ_[1]) + {var s=_eQ_[2],name=param[1]; + return [0,name,caml_string_of_jsstring(s)]} + throw [0,Assert_failure,_o_]} + return caml_call2(Stdlib_List[19],_eP_,_eO_)} + var + Js_of_ocaml_Form= + [0, + formData, + formData_form, + append, + post_form_contents, + get_form_contents, + empty_form_contents, + form_elements]; + caml_register_global(1652,Js_of_ocaml_Form,"Js_of_ocaml__Form"); + var + readystatechange=caml_call1(Event[1],cst_readystatechange), + loadstart$1=caml_call1(Event[1],cst_loadstart$1), + progress$1=caml_call1(Event[1],cst_progress$1), + abort$1=caml_call1(Event[1],cst_abort$1), + error$1=caml_call1(Event[1],cst_error$1), + load$1=caml_call1(Event[1],cst_load$1), + timeout=caml_call1(Event[1],cst_timeout), + loadend$0=caml_call1(Event[1],cst_loadend$0), + Event$1= + [0, + readystatechange, + loadstart$1, + progress$1, + abort$1, + error$1, + load$1, + timeout, + loadend$0], + Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$1]; + caml_register_global + (1653,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest"); + var t2=Unsafe[1].Worker; + function create(script) + {var t1=caml_jsstring_of_string(script);return new t2(t1)} + function import_scripts(scripts) + {if(Unsafe[1].importScripts === t39) + caml_call1(Stdlib[1],cst_Worker_import_scripts_is_u); + var _eL_=caml_call1(Stdlib_Array[12],scripts); + function _eM_(s){return caml_jsstring_of_string(s)} + var _eN_=caml_call2(Stdlib_Array[15],_eM_,_eL_); + return runtime.caml_js_fun_call(Unsafe[1].importScripts,_eN_)} + function set_onmessage(handler) + {if(Unsafe[1].onmessage === t39) + caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi); + function js_handler(ev){return caml_call1(handler,ev.data)} + var t7=caml_js_wrap_callback(js_handler); + return Unsafe[1].onmessage = t7} + function post_message(t10) + {if(Unsafe[1].postMessage === t39) + caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi$0); + return Unsafe[1].postMessage(t10)} + var + Js_of_ocaml_Worker= + [0,create,import_scripts,set_onmessage,post_message]; + caml_register_global(1654,Js_of_ocaml_Worker,"Js_of_ocaml__Worker"); + var webSocket=Unsafe[1].WebSocket; + function is_supported(param){return caml_call1(Optdef[5],webSocket)} + var Js_of_ocaml_WebSockets=[0,webSocket,webSocket,webSocket,is_supported]; + caml_register_global + (1655,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets"); + var + defaultContextAttributes= + {"alpha":t25, + "depth":t25, + "stencil":t4, + "antialias":t25, + "premultipliedAlpha":t4, + "preserveDrawingBuffer":t4, + "preferLowPowerToHighPerformance":t4, + "failIfMajorPerformanceCaveat":t4}, + webglcontextlost=caml_call1(Event$0[87],cst_webglcontextlost), + webglcontextrestored=caml_call1(Event$0[87],cst_webglcontextrestored), + webglcontextcreationerror= + caml_call1(Event$0[87],cst_webglcontextcreationerror), + Event$2= + [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror]; + function getContext(t3) + {var ctx=t3.getContext("webgl"); + return caml_call1(Opt[5],ctx)?ctx:t3.getContext("experimental-webgl")} + function getContextWithAttributes(t9,t8) + {var ctx=t9.getContext("webgl",t8); + return caml_call1(Opt[5],ctx)?ctx:t9.getContext("experimental-webgl",t8)} + var + Js_of_ocaml_WebGL= + [0,defaultContextAttributes,Event$2,getContext,getContextWithAttributes]; + caml_register_global(1656,Js_of_ocaml_WebGL,"Js_of_ocaml__WebGL"); + function regexp(s) + {var t0=caml_jsbytes_of_string(s);return new t11(t0,"g")} + function regexp_case_fold(s) + {var t3=caml_jsbytes_of_string(s);return new t11(t3,"gi")} + function regexp_with_flag(s,f) + {var + t7=caml_jsstring_of_string(caml_call2(Stdlib[28],cst_g,f)), + t6=caml_jsbytes_of_string(s); + return new t11(t6,t7)} + function blunt_str_array_get(a,i) + {function _eK_(param){throw [0,Assert_failure,_p_]} + return caml_string_of_jsbytes(caml_call2(Optdef[8],a[i],_eK_))} + function string_match(r,s,i) + {r.lastIndex = i; + var + t11=caml_jsbytes_of_string(s), + _eI_=r.exec(t11), + _eJ_=caml_call2(Opt[3],_eI_,match_result); + return caml_call1(Opt[10],_eJ_)} + function search_forward(r,s,i) + {r.lastIndex = i; + var t15=caml_jsbytes_of_string(s); + function _eF_(t17){return [0,t17.index,t17]} + var _eG_=r.exec(t15),_eH_=caml_call2(Opt[3],_eG_,_eF_); + return caml_call1(Opt[10],_eH_)} + function matched_string(r){return blunt_str_array_get(r,0)} + function matched_group(r,i) + {var _eE_=caml_call2(Optdef[3],r[i],caml_string_of_jsbytes); + return caml_call1(Optdef[10],_eE_)} + var t21=new t11("[$]","g"); + function quote_repl(s) + {var t23=caml_jsbytes_of_string(s);return t23.replace(t21,"$$$$")} + function global_replace(r,s,s_by) + {r.lastIndex = 0; + var t27=quote_repl(s_by),t28=caml_jsbytes_of_string(s); + return caml_string_of_jsbytes(t28.replace(r,t27))} + function replace_first(r,s,s_by) + {var + match=r.ignoreCase | 0, + match$0=r.multiline | 0, + flags=match?match$0?"mi":"i":match$0?"m":"", + t32=r.source, + t35=new t11(t32,flags), + t36=quote_repl(s_by), + t37=caml_jsbytes_of_string(s); + return caml_string_of_jsbytes(t37.replace(t35,t36))} + function list_of_js_array(a) + {var idx$1=a.length - 1 | 0,accu=0,idx=idx$1; + for(;;) + {if(caml_call2(symbol$5,idx,0))return accu; + var + idx$0=idx - 1 | 0, + accu$0=[0,blunt_str_array_get(a,idx),accu], + accu=accu$0, + idx=idx$0; + continue}} + function split(r,s) + {r.lastIndex = 0; + var t42=caml_jsbytes_of_string(s); + return list_of_js_array(t42.split(r))} + function bounded_split(r,s,i) + {r.lastIndex = 0; + var t47=caml_jsbytes_of_string(s); + return list_of_js_array(t47.split(r,i))} + var t48=regexp(cst); + function quote(s) + {var t50=caml_jsbytes_of_string(s); + return caml_string_of_jsbytes(t50.replace(t48,"\\$&"))} + function regexp_string(s){return regexp(quote(s))} + function regexp_string_case_fold(s){return regexp_case_fold(quote(s))} + var + Js_of_ocaml_Regexp= + [0, + regexp, + regexp_case_fold, + regexp_with_flag, + quote, + regexp_string, + regexp_string_case_fold, + string_match, + search_forward, + search_forward, + matched_string, + matched_group, + global_replace, + replace_first, + split, + bounded_split]; + caml_register_global(1657,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp"); + var Local_exn=[248,cst_Js_of_ocaml_Url_Local_exn,caml_fresh_oo_id(0)]; + function interrupt(param){throw Local_exn} + var plus_re=regexp_string(cst$0),t14=new t11("\\+","g"); + function urldecode_js_string_string(s) + {t14.lastIndex = 0; + return caml_string_of_jsbytes(unescape(s.replace(t14," ")))} + function urldecode(s) + {return caml_string_of_jsbytes + (unescape + (caml_jsbytes_of_string(global_replace(plus_re,s,cst$1))))} + function urlencode(opt,s) + {if(opt)var sth=opt[1],with_plus=sth;else var with_plus=1; + if(with_plus) + {var s$0=caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s))); + return global_replace(plus_re,s$0,cst_2B)} + return caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s)))} + var + Not_an_http_protocol= + [248,cst_Js_of_ocaml_Url_Not_an_htt,caml_fresh_oo_id(0)], + default_http_port=80, + default_https_port=443; + function path_of_path_string(s) + {var l=caml_ml_string_length(s); + function aux(i) + {try + {var _eC_=caml_call3(String[30],s,i,47),j=_eC_} + catch(_eD_) + {_eD_ = caml_wrap_exception(_eD_); + if(_eD_ !== Stdlib[8])throw _eD_; + var j=l} + var word=caml_call3(String[14],s,i,j - i | 0); + return caml_call2(symbol$10,j,l)?[0,word,0]:[0,word,aux(j + 1 | 0)]} + var a=aux(0); + if(a && ! caml_string_notequal(a[1],cst$2)) + {var _eB_=a[2]; + if(! _eB_)return 0; + if(! caml_string_notequal(_eB_[1],cst$3) && ! _eB_[2])return _q_} + return a} + function encode_arguments(l) + {function _ew_(param) + {var + v=param[2], + n=param[1], + _ey_=urlencode(0,v), + _ez_=caml_call2(Stdlib[28],cst$4,_ey_), + _eA_=urlencode(0,n); + return caml_call2(Stdlib[28],_eA_,_ez_)} + var _ex_=caml_call2(Stdlib_List[19],_ew_,l); + return caml_call2(String[6],cst$5,_ex_)} + function decode_arguments_js_string(s) + {var + t0=caml_jsstring_of_string(caml_call2(String[1],1,38)), + t18=s.split(t0), + len=t18.length; + function aux(acc,idx) + {var idx$0=idx; + for(;;) + {if(caml_call2(symbol$5,idx$0,0))return acc; + try + {var + _eo_=idx$0 - 1 | 0, + _ep_= + function(s) + {function _eu_(param) + {var + y=param[2], + x=param[1], + _ev_=urldecode_js_string_string(y); + return [0,urldecode_js_string_string(x),_ev_]} + var + t2=caml_jsstring_of_string(caml_call2(String[1],1,61)), + t5=s.indexOf(t2); + if(caml_call2(symbol$5,t5,0)) + var _et_=t39; + else + var + t7=t5 + 1 | 0, + _es_=s.slice(t7), + _et_=[0,s.slice(0,t5),_es_]; + return caml_call3(Optdef[7],_et_,interrupt,_eu_)}, + _eq_= + aux + ([0,caml_call3(Optdef[7],t18[idx$0],interrupt,_ep_),acc],_eo_); + return _eq_} + catch(_er_) + {_er_ = caml_wrap_exception(_er_); + if(_er_ === Local_exn) + {var idx$1=idx$0 - 1 | 0,idx$0=idx$1;continue} + throw _er_}}} + return aux(0,len - 1 | 0)} + function decode_arguments(s) + {return decode_arguments_js_string(caml_jsbytes_of_string(s))} + var + t19=caml_jsbytes_of_string(cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0), + t24=new t11(t19), + t21$0=caml_jsbytes_of_string(cst_Ff_Ii_Ll_Ee), + t26=new t11(t21$0); + function url_of_js_string(s) + {function _d7_(res) + {var + prot_string=caml_call2(Optdef[8],res[1],interrupt), + match=caml_string_of_jsbytes(prot_string.toLowerCase()); + if + (caml_string_notequal(match,cst_file$0) + && + caml_string_notequal(match,cst_file$1)) + {var switch$0=0; + if + (caml_string_notequal(match,cst_http) + && + caml_string_notequal(match,cst_http$0)) + {var switch$1=0; + if + (caml_string_notequal(match,cst_https) + && + caml_string_notequal(match,cst_https$0)) + switch$1 = 1; + if(! switch$1){var ssl=1;switch$0 = 2}} + else + switch$0 = 1; + var switch$2=0; + switch(switch$0) + {case 1:var ssl=0;switch$2 = 1;break; + case 0:break; + default:switch$2 = 1} + if(switch$2) + {var + _ef_=function(param){return caml_jsbytes_of_string(cst$7)}, + path_str= + urldecode_js_string_string(caml_call2(Optdef[8],res[6],_ef_)), + _eg_=function(param){return caml_jsbytes_of_string(cst$8)}, + _eh_= + urldecode_js_string_string(caml_call2(Optdef[8],res[10],_eg_)), + _ei_=function(param){return caml_jsbytes_of_string(cst$9)}, + _ej_= + decode_arguments_js_string(caml_call2(Optdef[8],res[8],_ei_)), + _ek_=path_of_path_string(path_str), + _el_=function(param){return caml_jsbytes_of_string(cst$10)}, + s=caml_string_of_jsbytes(caml_call2(Optdef[8],res[4],_el_)), + _em_= + caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80, + url= + [0, + urldecode_js_string_string + (caml_call2(Optdef[8],res[2],interrupt)), + _em_, + _ek_, + path_str, + _ej_, + _eh_], + _en_=ssl?[1,url]:[0,url]; + return [0,_en_]}} + throw Not_an_http_protocol} + function _d8_(param) + {function _d__(res) + {var + path_str= + urldecode_js_string_string(caml_call2(Optdef[8],res[2],interrupt)); + function _eb_(param){return caml_jsbytes_of_string(cst$11)} + var _ec_=caml_string_of_jsbytes(caml_call2(Optdef[8],res[6],_eb_)); + function _ed_(param){return caml_jsbytes_of_string(cst$12)} + var + _ee_= + decode_arguments_js_string(caml_call2(Optdef[8],res[4],_ed_)); + return [0,[2,[0,path_of_path_string(path_str),path_str,_ee_,_ec_]]]} + function _d$_(param){return 0} + var _ea_=t26.exec(s); + return caml_call3(Opt[7],_ea_,_d$_,_d__)} + var _d9_=t24.exec(s); + return caml_call3(Opt[7],_d9_,_d8_,_d7_)} + function url_of_string(s) + {return url_of_js_string(caml_jsbytes_of_string(s))} + function string_of_url(param) + {switch(param[0]) + {case 0: + var + match=param[1], + frag=match[6], + args=match[5], + path=match[3], + port=match[2], + host=match[1]; + if(caml_string_notequal(frag,cst$13)) + var _du_=urlencode(0,frag),_dv_=caml_call2(Stdlib[28],cst$14,_du_); + else + var _dv_=cst$21; + if(args) + var + _dw_=encode_arguments(args), + _dx_=caml_call2(Stdlib[28],cst$15,_dw_); + else + var _dx_=cst$20; + var + _dy_=caml_call2(Stdlib[28],_dx_,_dv_), + _dz_=function(x){return urlencode(0,x)}, + _dA_=caml_call2(Stdlib_List[19],_dz_,path), + _dB_=caml_call2(String[6],cst$16,_dA_), + _dC_=caml_call2(Stdlib[28],_dB_,_dy_), + _dD_=caml_call2(Stdlib[28],cst$17,_dC_); + if(80 === port) + var _dE_=cst$18; + else + var + _dI_=caml_call1(Stdlib[33],port), + _dE_=caml_call2(Stdlib[28],cst$19,_dI_); + var + _dF_=caml_call2(Stdlib[28],_dE_,_dD_), + _dG_=urlencode(0,host), + _dH_=caml_call2(Stdlib[28],_dG_,_dF_); + return caml_call2(Stdlib[28],cst_http$1,_dH_); + case 1: + var + match$0=param[1], + frag$0=match$0[6], + args$0=match$0[5], + path$0=match$0[3], + port$0=match$0[2], + host$0=match$0[1]; + if(caml_string_notequal(frag$0,cst$22)) + var + _dJ_=urlencode(0,frag$0), + _dK_=caml_call2(Stdlib[28],cst$23,_dJ_); + else + var _dK_=cst$30; + if(args$0) + var + _dL_=encode_arguments(args$0), + _dM_=caml_call2(Stdlib[28],cst$24,_dL_); + else + var _dM_=cst$29; + var + _dN_=caml_call2(Stdlib[28],_dM_,_dK_), + _dO_=function(x){return urlencode(0,x)}, + _dP_=caml_call2(Stdlib_List[19],_dO_,path$0), + _dQ_=caml_call2(String[6],cst$25,_dP_), + _dR_=caml_call2(Stdlib[28],_dQ_,_dN_), + _dS_=caml_call2(Stdlib[28],cst$26,_dR_); + if(443 === port$0) + var _dT_=cst$27; + else + var + _dX_=caml_call1(Stdlib[33],port$0), + _dT_=caml_call2(Stdlib[28],cst$28,_dX_); + var + _dU_=caml_call2(Stdlib[28],_dT_,_dS_), + _dV_=urlencode(0,host$0), + _dW_=caml_call2(Stdlib[28],_dV_,_dU_); + return caml_call2(Stdlib[28],cst_https$1,_dW_); + default: + var + match$1=param[1], + frag$1=match$1[4], + args$1=match$1[3], + path$1=match$1[1]; + if(caml_string_notequal(frag$1,cst$31)) + var + _dY_=urlencode(0,frag$1), + _dZ_=caml_call2(Stdlib[28],cst$32,_dY_); + else + var _dZ_=cst$36; + if(args$1) + var + _d0_=encode_arguments(args$1), + _d1_=caml_call2(Stdlib[28],cst$33,_d0_); + else + var _d1_=cst$35; + var + _d2_=caml_call2(Stdlib[28],_d1_,_dZ_), + _d3_=function(x){return urlencode(0,x)}, + _d4_=caml_call2(Stdlib_List[19],_d3_,path$1), + _d5_=caml_call2(String[6],cst$34,_d4_), + _d6_=caml_call2(Stdlib[28],_d5_,_d2_); + return caml_call2(Stdlib[28],cst_file$2,_d6_)}} + var _r_=caml_call1(Optdef[2],_j_.location); + if(caml_call1(Optdef[5],_r_)) + var _s_=_j_.location; + else + var + t42=function(param,_dt_){return 0}, + t41$0=function(param,_ds_){return 0}, + t40=function(param){return 0}, + _s_= + {"href":"", + "protocol":"", + "host":"", + "hostname":"", + "port":"", + "pathname":"", + "search":"", + "hash":"", + "origin":t39, + "reload":caml_js_wrap_meth_callback(t40), + "replace":caml_js_wrap_meth_callback(t41$0), + "assign":caml_js_wrap_meth_callback(t42)}; + var + host=urldecode_js_string_string(_s_.hostname), + protocol=urldecode_js_string_string(_s_.protocol), + _t_=0, + port= + function(param) + {try + {var _dq_=[0,caml_int_of_string(caml_string_of_jsbytes(_s_.port))]; + return _dq_} + catch(_dr_) + {_dr_ = caml_wrap_exception(_dr_); + if(_dr_[1] === Stdlib[7])return 0; + throw _dr_}} + (_t_), + path_string=urldecode_js_string_string(_s_.pathname), + path=path_of_path_string(path_string), + t49=_s_.search; + if(t49.charAt(0) === "?") + var t52=_s_.search,_u_=t52.slice(1); + else + var _u_=_s_.search; + var arguments$0=decode_arguments_js_string(_u_); + function get_fragment(param) + {function _dn_(res){return caml_string_of_jsstring(res[1])} + function _do_(param){return cst$37} + var t57=new t11("#(.*)"),t58=_s_.href,_dp_=t58.match(t57); + return caml_call3(Opt[7],_dp_,_do_,_dn_)} + function set_fragment(s) + {var t59=caml_jsbytes_of_string(urlencode(0,s));return _s_.hash = t59} + function get$2(param){return url_of_js_string(_s_.href)} + function set$0(u) + {var t62=caml_jsbytes_of_string(string_of_url(u));return _s_.href = t62} + var + as_string=urldecode_js_string_string(_s_.href), + Js_of_ocaml_Url= + [0, + urldecode, + urlencode, + default_http_port, + default_https_port, + path_of_path_string, + encode_arguments, + decode_arguments, + url_of_string, + string_of_url, + [0, + host, + port, + protocol, + path_string, + path, + arguments$0, + get_fragment, + set_fragment, + get$2, + set$0, + as_string]]; + caml_register_global(1659,Js_of_ocaml_Url,"Js_of_ocaml__Url"); + var Js_of_ocaml_Lib_version=[0,s,git_version]; + caml_register_global + (1660,Js_of_ocaml_Lib_version,"Js_of_ocaml__Lib_version"); + function update_file(name,content) + {var oc=caml_call1(Stdlib[60],name); + caml_call2(Stdlib[66],oc,content); + return caml_call1(Stdlib[76],oc)} + function set_channel_flusher(out_channel,f) + {var + f$0= + caml_js_wrap_callback + (function(s){return caml_call1(f,caml_string_of_jsbytes(s))}); + return runtime.caml_ml_set_channel_output(out_channel,f$0)} + function set_channel_filler(in_channel,f) + {var f$0=caml_js_wrap_callback(f); + return runtime.caml_ml_set_channel_refill(in_channel,f$0)} + function mount(path,f) + {return runtime.caml_mount_autoload + (path, + caml_js_wrap_callback + (function(prefix,path){return caml_call2(f,prefix,path)}))} + function unmount(path){return runtime.caml_unmount(path)} + if(caml_call2(String[68],git_version,cst$38)) + var js_of_ocaml_version=s; + else + var + _co_=caml_call2(Stdlib[28],cst$41,git_version), + js_of_ocaml_version=caml_call2(Stdlib[28],s,_co_); + var + _v_=runtime.caml_create_file, + _w_=runtime.caml_read_file_content, + Js_of_ocaml_Sys_js= + [0, + set_channel_flusher, + set_channel_filler, + function(_dm_){return runtime.caml_list_mount_point(_dm_)}, + unmount, + mount, + _w_, + _v_, + update_file, + js_of_ocaml_version]; + caml_register_global(1661,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js"); + function empty_resize_observer_options(param){return {}} + var t2$0=Unsafe[1].ResizeObserver; + function is_supported$0(param){return caml_call1(Optdef[5],t2$0)} + function observe(node,f,box,param) + {var t1=caml_js_wrap_callback(f),t4=new t2$0(t1); + if(box) + {var box$0=box[1],t8={};t8.box = box$0;t4.observe(node,t8)} + else + t4.observe(node); + return t4} + var + Js_of_ocaml_ResizeObserver= + [0,empty_resize_observer_options,t2$0,is_supported$0,observe]; + caml_register_global + (1662,Js_of_ocaml_ResizeObserver,"Js_of_ocaml__ResizeObserver"); + var t4$1=Unsafe[1].PerformanceObserver; + function is_supported$1(param){return caml_call1(Optdef[5],t4$1)} + function observe$0(entry_types,f) + {var + _dl_= + caml_call1 + (caml_call1(Stdlib_List[19],caml_jsstring_of_string),entry_types), + t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dl_)), + t5={}; + t5.entryTypes = t1; + var t3=caml_js_wrap_callback(f),t6=new t4$1(t3); + t6.observe(t5); + return t6} + var Js_of_ocaml_PerformanceObserve=[0,t4$1,is_supported$1,observe$0]; + caml_register_global + (1663,Js_of_ocaml_PerformanceObserve,"Js_of_ocaml__PerformanceObserver"); + function empty_mutation_observer_init(param){return {}} + var t2$1=Unsafe[1].MutationObserver; + function is_supported$2(param){return caml_call1(Optdef[5],t2$1)} + function observe$1 + (node, + f, + child_list, + attributes, + character_data, + subtree, + attribute_old_value, + character_data_old_value, + attribute_filter, + param) + {function opt_iter(x,f) + {if(x){var x$0=x[1];return caml_call1(f,x$0)}return 0} + var t1=caml_js_wrap_callback(f),t19=new t2$1(t1),t18={}; + opt_iter(child_list,function(t3){return t18.childList = t3}); + opt_iter(attributes,function(t5){return t18.attributes = t5}); + opt_iter(character_data,function(t7){return t18.characterData = t7}); + opt_iter(subtree,function(t9){return t18.subtree = t9}); + opt_iter + (attribute_old_value,function(t11){return t18.attributeOldValue = t11}); + opt_iter + (character_data_old_value, + function(t13){return t18.characterDataOldValue = t13}); + opt_iter + (attribute_filter, + function(l) + {var t15=caml_js_from_array(caml_call1(Stdlib_Array[12],l)); + return t18.attributeFilter = t15}); + t19.observe(node,t18); + return t19} + var + Js_of_ocaml_MutationObserver= + [0,empty_mutation_observer_init,t2$1,is_supported$2,observe$1]; + caml_register_global + (1664,Js_of_ocaml_MutationObserver,"Js_of_ocaml__MutationObserver"); + var t1=Unsafe[1].Object; + function create$0(param){return new t1()} + function add$0(t,k,v){return t[k.concat("_")] = v} + function remove(t,k){return delete t[k.concat("_")]} + function find(t,k){return t[k.concat("_")]} + function keys(t) + {var + t10=Unsafe[1].Object, + t11=t10.keys(t), + res=[0,0], + _dh_=t11.length - 1 | 0, + _dg_=0; + if(! (_dh_ < 0)) + {var i=_dg_; + for(;;) + {var + _di_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, + t15=caml_call2(Optdef[8],t11[i],_di_), + t14=t15.length - 1 | 0, + _dj_=res[1]; + res[1] = [0,t15.substring(0,t14),_dj_]; + var _dk_=i + 1 | 0; + if(_dh_ !== i){var i=_dk_;continue} + break}} + return caml_call1(Stdlib_List[9],res[1])} + var Js_of_ocaml_Jstable=[0,create$0,add$0,remove,find,keys]; + caml_register_global(1665,Js_of_ocaml_Jstable,"Js_of_ocaml__Jstable"); + var t11$1=Unsafe[1].JSON; + function reviver(this$0,key,value) + {if(typeof value === "string")return caml_string_of_jsbytes(value); + if + (value instanceof array_length + && + 4 + === + value.length + && + 255 + === + value[0]) + return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]); + return value} + var t3$0=caml_js_wrap_meth_callback(reviver); + function unsafe_input(t2){return t11$1.parse(t2,t3$0)} + var mlInt64_constr=t5.constructor; + function t10(key,value) + {var _df_=Stdlib_Obj[13]; + return caml_call2(symbol$8,runtime.caml_obj_tag(value),_df_) + ?caml_jsbytes_of_string(value) + :value instanceof mlInt64_constr + ?caml_js_from_array([0,255,value.lo,value.mi,value.hi]) + :value} + function output(t9){return t11$1.stringify(t9,t10)} + var Js_of_ocaml_Json=[0,output,unsafe_input]; + caml_register_global(1667,Js_of_ocaml_Json,"Js_of_ocaml__Json"); + function string_of_name(param) + {var _de_=param; + if(74 <= _de_) + {if(111 <= _de_) + switch(_de_) + {case 111:return cst_palevioletred; + case 112:return cst_papayawhip; + case 113:return cst_peachpuff; + case 114:return cst_peru; + case 115:return cst_pink; + case 116:return cst_plum; + case 117:return cst_powderblue; + case 118:return cst_purple; + case 119:return cst_red; + case 120:return cst_rosybrown; + case 121:return cst_royalblue; + case 122:return cst_saddlebrown; + case 123:return cst_salmon; + case 124:return cst_sandybrown; + case 125:return cst_seagreen; + case 126:return cst_seashell; + case 127:return cst_sienna; + case 128:return cst_silver; + case 129:return cst_skyblue; + case 130:return cst_slateblue; + case 131:return cst_slategray; + case 132:return cst_slategrey; + case 133:return cst_snow; + case 134:return cst_springgreen; + case 135:return cst_steelblue; + case 136:return cst_tan; + case 137:return cst_teal; + case 138:return cst_thistle; + case 139:return cst_tomato; + case 140:return cst_turquoise; + case 141:return cst_violet; + case 142:return cst_wheat; + case 143:return cst_white; + case 144:return cst_whitesmoke; + case 145:return cst_yellow; + default:return cst_yellowgreen} + switch(_de_) + {case 74:return cst_lightpink; + case 75:return cst_lightsalmon; + case 76:return cst_lightseagreen; + case 77:return cst_lightskyblue; + case 78:return cst_lightslategray; + case 79:return cst_lightslategrey; + case 80:return cst_lightsteelblue; + case 81:return cst_lightyellow; + case 82:return cst_lime; + case 83:return cst_limegreen; + case 84:return cst_linen; + case 85:return cst_magenta; + case 86:return cst_maroon; + case 87:return cst_mediumaquamarine; + case 88:return cst_mediumblue; + case 89:return cst_mediumorchid; + case 90:return cst_mediumpurple; + case 91:return cst_mediumseagreen; + case 92:return cst_mediumslateblue; + case 93:return cst_mediumspringgreen; + case 94:return cst_mediumturquoise; + case 95:return cst_mediumvioletred; + case 96:return cst_midnightblue; + case 97:return cst_mintcream; + case 98:return cst_mistyrose; + case 99:return cst_moccasin; + case 100:return cst_navajowhite; + case 101:return cst_navy; + case 102:return cst_oldlace; + case 103:return cst_olive; + case 104:return cst_olivedrab; + case 105:return cst_orange; + case 106:return cst_orangered; + case 107:return cst_orchid; + case 108:return cst_palegoldenrod; + case 109:return cst_palegreen; + default:return cst_paleturquoise}} + if(37 <= _de_) + switch(_de_) + {case 37:return cst_darkslategrey; + case 38:return cst_darkturquoise; + case 39:return cst_darkviolet; + case 40:return cst_deeppink; + case 41:return cst_deepskyblue; + case 42:return cst_dimgray; + case 43:return cst_dimgrey; + case 44:return cst_dodgerblue; + case 45:return cst_firebrick; + case 46:return cst_floralwhite; + case 47:return cst_forestgreen; + case 48:return cst_fuchsia; + case 49:return cst_gainsboro; + case 50:return cst_ghostwhite; + case 51:return cst_gold; + case 52:return cst_goldenrod; + case 53:return cst_gray; + case 54:return cst_grey; + case 55:return cst_green; + case 56:return cst_greenyellow; + case 57:return cst_honeydew; + case 58:return cst_hotpink; + case 59:return cst_indianred; + case 60:return cst_indigo; + case 61:return cst_ivory; + case 62:return cst_khaki; + case 63:return cst_lavender; + case 64:return cst_lavenderblush; + case 65:return cst_lawngreen; + case 66:return cst_lemonchiffon; + case 67:return cst_lightblue; + case 68:return cst_lightcoral; + case 69:return cst_lightcyan; + case 70:return cst_lightgoldenrodyellow; + case 71:return cst_lightgray; + case 72:return cst_lightgreen; + default:return cst_lightgrey} + switch(_de_) + {case 0:return cst_aliceblue; + case 1:return cst_antiquewhite; + case 2:return cst_aqua; + case 3:return cst_aquamarine; + case 4:return cst_azure; + case 5:return cst_beige; + case 6:return cst_bisque; + case 7:return cst_black; + case 8:return cst_blanchedalmond; + case 9:return cst_blue; + case 10:return cst_blueviolet; + case 11:return cst_brown; + case 12:return cst_burlywood; + case 13:return cst_cadetblue; + case 14:return cst_chartreuse; + case 15:return cst_chocolate; + case 16:return cst_coral; + case 17:return cst_cornflowerblue; + case 18:return cst_cornsilk; + case 19:return cst_crimson; + case 20:return cst_cyan; + case 21:return cst_darkblue; + case 22:return cst_darkcyan; + case 23:return cst_darkgoldenrod; + case 24:return cst_darkgray; + case 25:return cst_darkgreen; + case 26:return cst_darkgrey; + case 27:return cst_darkkhaki; + case 28:return cst_darkmagenta; + case 29:return cst_darkolivegreen; + case 30:return cst_darkorange; + case 31:return cst_darkorchid; + case 32:return cst_darkred; + case 33:return cst_darksalmon; + case 34:return cst_darkseagreen; + case 35:return cst_darkslateblue; + default:return cst_darkslategray}} + function name_of_string(s) + {var switch$0=caml_string_compare(s,cst_lightgrey$0); + if(0 <= switch$0) + {if(! (0 < switch$0))return 73; + var switch$1=caml_string_compare(s,cst_paleturquoise$0); + if(0 <= switch$1) + {if(! (0 < switch$1))return 110; + var switch$2=caml_string_compare(s,cst_skyblue$0); + if(0 <= switch$2) + {if(! (0 < switch$2))return 129; + var switch$3=caml_string_compare(s,cst_thistle$0); + if(0 <= switch$3) + {if(! (0 < switch$3))return 138; + if(! caml_string_notequal(s,cst_tomato$0))return 139; + if(! caml_string_notequal(s,cst_turquoise$0))return 140; + if(! caml_string_notequal(s,cst_violet$0))return 141; + if(! caml_string_notequal(s,cst_wheat$0))return 142; + if(! caml_string_notequal(s,cst_white$0))return 143; + if(! caml_string_notequal(s,cst_whitesmoke$0))return 144; + if(! caml_string_notequal(s,cst_yellow$0))return 145; + if(! caml_string_notequal(s,cst_yellowgreen$0))return 146} + else + {if(! caml_string_notequal(s,cst_slateblue$0))return 130; + if(! caml_string_notequal(s,cst_slategray$0))return 131; + if(! caml_string_notequal(s,cst_slategrey$0))return 132; + if(! caml_string_notequal(s,cst_snow$0))return 133; + if(! caml_string_notequal(s,cst_springgreen$0))return 134; + if(! caml_string_notequal(s,cst_steelblue$0))return 135; + if(! caml_string_notequal(s,cst_tan$0))return 136; + if(! caml_string_notequal(s,cst_teal$0))return 137}} + else + {var switch$4=caml_string_compare(s,cst_rosybrown$0); + if(0 <= switch$4) + {if(! (0 < switch$4))return 120; + if(! caml_string_notequal(s,cst_royalblue$0))return 121; + if(! caml_string_notequal(s,cst_saddlebrown$0))return 122; + if(! caml_string_notequal(s,cst_salmon$0))return 123; + if(! caml_string_notequal(s,cst_sandybrown$0))return 124; + if(! caml_string_notequal(s,cst_seagreen$0))return 125; + if(! caml_string_notequal(s,cst_seashell$0))return 126; + if(! caml_string_notequal(s,cst_sienna$0))return 127; + if(! caml_string_notequal(s,cst_silver$0))return 128} + else + {if(! caml_string_notequal(s,cst_palevioletred$0))return 111; + if(! caml_string_notequal(s,cst_papayawhip$0))return 112; + if(! caml_string_notequal(s,cst_peachpuff$0))return 113; + if(! caml_string_notequal(s,cst_peru$0))return 114; + if(! caml_string_notequal(s,cst_pink$0))return 115; + if(! caml_string_notequal(s,cst_plum$0))return 116; + if(! caml_string_notequal(s,cst_powderblue$0))return 117; + if(! caml_string_notequal(s,cst_purple$0))return 118; + if(! caml_string_notequal(s,cst_red$0))return 119}}} + else + {var switch$5=caml_string_compare(s,cst_mediumslateblue$0); + if(0 <= switch$5) + {if(! (0 < switch$5))return 92; + var switch$6=caml_string_compare(s,cst_navy$0); + if(0 <= switch$6) + {if(! (0 < switch$6))return 101; + if(! caml_string_notequal(s,cst_oldlace$0))return 102; + if(! caml_string_notequal(s,cst_olive$0))return 103; + if(! caml_string_notequal(s,cst_olivedrab$0))return 104; + if(! caml_string_notequal(s,cst_orange$0))return 105; + if(! caml_string_notequal(s,cst_orangered$0))return 106; + if(! caml_string_notequal(s,cst_orchid$0))return 107; + if(! caml_string_notequal(s,cst_palegoldenrod$0))return 108; + if(! caml_string_notequal(s,cst_palegreen$0))return 109} + else + {if(! caml_string_notequal(s,cst_mediumspringgreen$0))return 93; + if(! caml_string_notequal(s,cst_mediumturquoise$0))return 94; + if(! caml_string_notequal(s,cst_mediumvioletred$0))return 95; + if(! caml_string_notequal(s,cst_midnightblue$0))return 96; + if(! caml_string_notequal(s,cst_mintcream$0))return 97; + if(! caml_string_notequal(s,cst_mistyrose$0))return 98; + if(! caml_string_notequal(s,cst_moccasin$0))return 99; + if(! caml_string_notequal(s,cst_navajowhite$0))return 100}} + else + {var switch$7=caml_string_compare(s,cst_limegreen$0); + if(0 <= switch$7) + {if(! (0 < switch$7))return 83; + if(! caml_string_notequal(s,cst_linen$0))return 84; + if(! caml_string_notequal(s,cst_magenta$0))return 85; + if(! caml_string_notequal(s,cst_maroon$0))return 86; + if(! caml_string_notequal(s,cst_mediumaquamarine$0))return 87; + if(! caml_string_notequal(s,cst_mediumblue$0))return 88; + if(! caml_string_notequal(s,cst_mediumorchid$0))return 89; + if(! caml_string_notequal(s,cst_mediumpurple$0))return 90; + if(! caml_string_notequal(s,cst_mediumseagreen$0))return 91} + else + {if(! caml_string_notequal(s,cst_lightpink$0))return 74; + if(! caml_string_notequal(s,cst_lightsalmon$0))return 75; + if(! caml_string_notequal(s,cst_lightseagreen$0))return 76; + if(! caml_string_notequal(s,cst_lightskyblue$0))return 77; + if(! caml_string_notequal(s,cst_lightslategray$0))return 78; + if(! caml_string_notequal(s,cst_lightslategrey$0))return 79; + if(! caml_string_notequal(s,cst_lightsteelblue$0))return 80; + if(! caml_string_notequal(s,cst_lightyellow$0))return 81; + if(! caml_string_notequal(s,cst_lime$0))return 82}}}} + else + {var switch$8=caml_string_compare(s,cst_darkslategray$0); + if(0 <= switch$8) + {if(! (0 < switch$8))return 36; + var switch$9=caml_string_compare(s,cst_greenyellow$0); + if(0 <= switch$9) + {if(! (0 < switch$9))return 56; + var switch$10=caml_string_compare(s,cst_lavenderblush$0); + if(0 <= switch$10) + {if(! (0 < switch$10))return 64; + if(! caml_string_notequal(s,cst_lawngreen$0))return 65; + if(! caml_string_notequal(s,cst_lemonchiffon$0))return 66; + if(! caml_string_notequal(s,cst_lightblue$0))return 67; + if(! caml_string_notequal(s,cst_lightcoral$0))return 68; + if(! caml_string_notequal(s,cst_lightcyan$0))return 69; + if(! caml_string_notequal(s,cst_lightgoldenrodyellow$0)) + return 70; + if(! caml_string_notequal(s,cst_lightgray$0))return 71; + if(! caml_string_notequal(s,cst_lightgreen$0))return 72} + else + {if(! caml_string_notequal(s,cst_grey$0))return 54; + if(! caml_string_notequal(s,cst_honeydew$0))return 57; + if(! caml_string_notequal(s,cst_hotpink$0))return 58; + if(! caml_string_notequal(s,cst_indianred$0))return 59; + if(! caml_string_notequal(s,cst_indigo$0))return 60; + if(! caml_string_notequal(s,cst_ivory$0))return 61; + if(! caml_string_notequal(s,cst_khaki$0))return 62; + if(! caml_string_notequal(s,cst_lavender$0))return 63}} + else + {var switch$11=caml_string_compare(s,cst_floralwhite$0); + if(0 <= switch$11) + {if(! (0 < switch$11))return 46; + if(! caml_string_notequal(s,cst_forestgreen$0))return 47; + if(! caml_string_notequal(s,cst_fuchsia$0))return 48; + if(! caml_string_notequal(s,cst_gainsboro$0))return 49; + if(! caml_string_notequal(s,cst_ghostwhite$0))return 50; + if(! caml_string_notequal(s,cst_gold$0))return 51; + if(! caml_string_notequal(s,cst_goldenrod$0))return 52; + if(! caml_string_notequal(s,cst_gray$0))return 53; + if(! caml_string_notequal(s,cst_green$0))return 55} + else + {if(! caml_string_notequal(s,cst_darkslategrey$0))return 37; + if(! caml_string_notequal(s,cst_darkturquoise$0))return 38; + if(! caml_string_notequal(s,cst_darkviolet$0))return 39; + if(! caml_string_notequal(s,cst_deeppink$0))return 40; + if(! caml_string_notequal(s,cst_deepskyblue$0))return 41; + if(! caml_string_notequal(s,cst_dimgray$0))return 42; + if(! caml_string_notequal(s,cst_dimgrey$0))return 43; + if(! caml_string_notequal(s,cst_dodgerblue$0))return 44; + if(! caml_string_notequal(s,cst_firebrick$0))return 45}}} + else + {var switch$12=caml_string_compare(s,cst_cornsilk$0); + if(0 <= switch$12) + {if(! (0 < switch$12))return 18; + var switch$13=caml_string_compare(s,cst_darkkhaki$0); + if(0 <= switch$13) + {if(! (0 < switch$13))return 27; + if(! caml_string_notequal(s,cst_darkmagenta$0))return 28; + if(! caml_string_notequal(s,cst_darkolivegreen$0))return 29; + if(! caml_string_notequal(s,cst_darkorange$0))return 30; + if(! caml_string_notequal(s,cst_darkorchid$0))return 31; + if(! caml_string_notequal(s,cst_darkred$0))return 32; + if(! caml_string_notequal(s,cst_darksalmon$0))return 33; + if(! caml_string_notequal(s,cst_darkseagreen$0))return 34; + if(! caml_string_notequal(s,cst_darkslateblue$0))return 35} + else + {if(! caml_string_notequal(s,cst_crimson$0))return 19; + if(! caml_string_notequal(s,cst_cyan$0))return 20; + if(! caml_string_notequal(s,cst_darkblue$0))return 21; + if(! caml_string_notequal(s,cst_darkcyan$0))return 22; + if(! caml_string_notequal(s,cst_darkgoldenrod$0))return 23; + if(! caml_string_notequal(s,cst_darkgray$0))return 24; + if(! caml_string_notequal(s,cst_darkgreen$0))return 25; + if(! caml_string_notequal(s,cst_darkgrey$0))return 26}} + else + {var switch$14=caml_string_compare(s,cst_blue$0); + if(0 <= switch$14) + {if(! (0 < switch$14))return 9; + if(! caml_string_notequal(s,cst_blueviolet$0))return 10; + if(! caml_string_notequal(s,cst_brown$0))return 11; + if(! caml_string_notequal(s,cst_burlywood$0))return 12; + if(! caml_string_notequal(s,cst_cadetblue$0))return 13; + if(! caml_string_notequal(s,cst_chartreuse$0))return 14; + if(! caml_string_notequal(s,cst_chocolate$0))return 15; + if(! caml_string_notequal(s,cst_coral$0))return 16; + if(! caml_string_notequal(s,cst_cornflowerblue$0))return 17} + else + {if(! caml_string_notequal(s,cst_aliceblue$0))return 0; + if(! caml_string_notequal(s,cst_antiquewhite$0))return 1; + if(! caml_string_notequal(s,cst_aqua$0))return 2; + if(! caml_string_notequal(s,cst_aquamarine$0))return 3; + if(! caml_string_notequal(s,cst_azure$0))return 4; + if(! caml_string_notequal(s,cst_beige$0))return 5; + if(! caml_string_notequal(s,cst_bisque$0))return 6; + if(! caml_string_notequal(s,cst_black$0))return 7; + if(! caml_string_notequal(s,cst_blanchedalmond$0))return 8}}}} + var _dd_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name); + throw [0,Stdlib[6],_dd_]} + function rgb_of_name(param) + {var _dc_=param; + if(74 <= _dc_) + {if(111 <= _dc_) + switch(_dc_) + {case 111:return _bq_; + case 112:return _br_; + case 113:return _bs_; + case 114:return _bt_; + case 115:return _bu_; + case 116:return _bv_; + case 117:return _bw_; + case 118:return _bx_; + case 119:return _by_; + case 120:return _bz_; + case 121:return _bA_; + case 122:return _bB_; + case 123:return _bC_; + case 124:return _bD_; + case 125:return _bE_; + case 126:return _bF_; + case 127:return _bG_; + case 128:return _bH_; + case 129:return _bI_; + case 130:return _bJ_; + case 131:return _bK_; + case 132:return _bL_; + case 133:return _bM_; + case 134:return _bN_; + case 135:return _bO_; + case 136:return _bP_; + case 137:return _bQ_; + case 138:return _bR_; + case 139:return _bS_; + case 140:return _bT_; + case 141:return _bU_; + case 142:return _bV_; + case 143:return _bW_; + case 144:return _bX_; + case 145:return _bY_; + default:return _bZ_} + switch(_dc_) + {case 74:return _aR_; + case 75:return _aS_; + case 76:return _aT_; + case 77:return _aU_; + case 78:return _aV_; + case 79:return _aW_; + case 80:return _aX_; + case 81:return _aY_; + case 82:return _aZ_; + case 83:return _a0_; + case 84:return _a1_; + case 85:return _a2_; + case 86:return _a3_; + case 87:return _a4_; + case 88:return _a5_; + case 89:return _a6_; + case 90:return _a7_; + case 91:return _a8_; + case 92:return _a9_; + case 93:return _a__; + case 94:return _a$_; + case 95:return _ba_; + case 96:return _bb_; + case 97:return _bc_; + case 98:return _bd_; + case 99:return _be_; + case 100:return _bf_; + case 101:return _bg_; + case 102:return _bh_; + case 103:return _bi_; + case 104:return _bj_; + case 105:return _bk_; + case 106:return _bl_; + case 107:return _bm_; + case 108:return _bn_; + case 109:return _bo_; + default:return _bp_}} + if(37 <= _dc_) + switch(_dc_) + {case 37:return _ag_; + case 38:return _ah_; + case 39:return _ai_; + case 40:return _aj_; + case 41:return _ak_; + case 42:return _al_; + case 43:return _am_; + case 44:return _an_; + case 45:return _ao_; + case 46:return _ap_; + case 47:return _aq_; + case 48:return _ar_; + case 49:return _as_; + case 50:return _at_; + case 51:return _au_; + case 52:return _av_; + case 53:return _aw_; + case 54:return _ax_; + case 55:return _ay_; + case 56:return _az_; + case 57:return _aA_; + case 58:return _aB_; + case 59:return _aC_; + case 60:return _aD_; + case 61:return _aE_; + case 62:return _aF_; + case 63:return _aG_; + case 64:return _aH_; + case 65:return _aI_; + case 66:return _aJ_; + case 67:return _aK_; + case 68:return _aL_; + case 69:return _aM_; + case 70:return _aN_; + case 71:return _aO_; + case 72:return _aP_; + default:return _aQ_} + switch(_dc_) + {case 0:return _x_; + case 1:return _y_; + case 2:return _z_; + case 3:return _A_; + case 4:return _B_; + case 5:return _C_; + case 6:return _D_; + case 7:return _E_; + case 8:return _F_; + case 9:return _G_; + case 10:return _H_; + case 11:return _I_; + case 12:return _J_; + case 13:return _K_; + case 14:return _L_; + case 15:return _M_; + case 16:return _N_; + case 17:return _O_; + case 18:return _P_; + case 19:return _Q_; + case 20:return _R_; + case 21:return _S_; + case 22:return _T_; + case 23:return _U_; + case 24:return _V_; + case 25:return _W_; + case 26:return _X_; + case 27:return _Y_; + case 28:return _Z_; + case 29:return ___; + case 30:return _$_; + case 31:return _aa_; + case 32:return _ab_; + case 33:return _ac_; + case 34:return _ad_; + case 35:return _ae_; + default:return _af_}} + function rgb(a,r,g,b) + {if(a){var a$0=a[1];return [3,[0,r,g,b,a$0]]}return [1,[0,r,g,b]]} + function hsl(a,h,s,l) + {if(a){var a$0=a[1];return [6,[0,h,s,l,a$0]]}return [5,[0,h,s,l]]} + function string_of_t(param) + {switch(param[0]) + {case 0:var n=param[1];return string_of_name(n); + case 1: + var match=param[1],b=match[3],g=match[2],r=match[1]; + return caml_call4(Stdlib_Printf[4],_b0_,r,g,b); + case 2: + var match$0=param[1],b$0=match$0[3],g$0=match$0[2],r$0=match$0[1]; + return caml_call4(Stdlib_Printf[4],_b1_,r$0,g$0,b$0); + case 3: + var + match$1=param[1], + a=match$1[4], + b$1=match$1[3], + g$1=match$1[2], + r$1=match$1[1]; + return caml_call5(Stdlib_Printf[4],_b2_,r$1,g$1,b$1,a); + case 4: + var + match$2=param[1], + a$0=match$2[4], + b$2=match$2[3], + g$2=match$2[2], + r$2=match$2[1]; + return caml_call5(Stdlib_Printf[4],_b3_,r$2,g$2,b$2,a$0); + case 5: + var match$3=param[1],l=match$3[3],s=match$3[2],h=match$3[1]; + return caml_call4(Stdlib_Printf[4],_b4_,h,s,l); + default: + var + match$4=param[1], + a$1=match$4[4], + l$0=match$4[3], + s$0=match$4[2], + h$0=match$4[1]; + return caml_call5(Stdlib_Printf[4],_b5_,h$0,s$0,l$0,a$1)}} + function hex_of_rgb(param) + {var blue=param[3],green=param[2],red=param[1]; + function in_range(i) + {var + _c__=caml_call2(symbol$5,i,0), + _c$_=_c__ || caml_call2(symbol$9,i,255); + if(_c$_) + {var + _da_=caml_call1(Stdlib[33],i), + _db_=caml_call2(Stdlib[28],_da_,cst_is_out_of_valid_range); + throw [0,Stdlib[6],_db_]} + return _c$_} + in_range(red); + in_range(green); + in_range(blue); + return caml_call4(Stdlib_Printf[4],_b6_,red,green,blue)} + function js_t_of_js_string(s) + {var + t0=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d), + t13=new t11(t0), + t2=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d$0), + t17=new t11(t2), + t4=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d), + t15=new t11(t4), + t6=caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d$0), + t19=new t11(t6), + t8=caml_jsbytes_of_string(cst_hsl_s_d_s_d_s_d), + t21=new t11(t8), + t10=caml_jsbytes_of_string(cst_hsla_s_d_s_d_s_d_d_d), + t23=new t11(t10); + if + (! + (t13.test(s) | 0) + && + ! + (t15.test(s) | 0) + && + ! + (t17.test(s) | 0) + && + ! + (t19.test(s) | 0) + && + ! + (t21.test(s) | 0) + && + ! + (t23.test(s) | 0)) + {var _c7_=caml_string_of_jsstring(s); + if(caml_call2(Stdlib_List[36],_c7_,_b7_))return s; + var + _c8_=caml_string_of_jsstring(s), + _c9_=caml_call2(Stdlib[28],_c8_,cst_is_not_a_valid_color); + throw [0,Stdlib[6],_c9_]} + return s} + function js(c) + {if(0 === c[0]) + {var n=c[1];return caml_jsstring_of_string(string_of_name(n))} + return caml_jsstring_of_string(string_of_t(c))} + function ml(c) + {var s=caml_string_of_jsstring(c); + try + {var _cU_=[0,name_of_string(s)];return _cU_} + catch(_cV_) + {_cV_ = caml_wrap_exception(_cV_); + if(_cV_[1] === Stdlib[6]) + {var + fail= + function(param) + {var _c6_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0); + throw [0,Stdlib[6],_c6_]}, + re_rgb=regexp(cst_rgba_d_d_d_d_d), + re_rgb_pct=regexp(cst_rgba_d_d_d_d_d$0), + re_hsl=regexp(cst_hsla_d_d_d_d_d), + i_of_s_o= + function(param) + {if(param) + {var i=param[1]; + try + {var _c4_=caml_int_of_string(i);return _c4_} + catch(_c5_) + {_c5_ = caml_wrap_exception(_c5_); + if(_c5_[1] === Stdlib[6]) + var s=_c5_[2]; + else + {if(_c5_[1] !== Stdlib[7])throw _c5_;var s=_c5_[2]} + var + _c1_=caml_call2(Stdlib[28],cst$39,s), + _c2_=caml_call2(Stdlib[28],i,_c1_), + _c3_=caml_call2(Stdlib[28],cst_color_conversion_error,_c2_); + throw [0,Stdlib[6],_c3_]}} + return fail(0)}, + f_of_s= + function(f) + {try + {var _cZ_=caml_float_of_string(f);return _cZ_} + catch(_c0_) + {_c0_ = caml_wrap_exception(_c0_); + if(_c0_[1] === Stdlib[6]) + var s=_c0_[2]; + else + {if(_c0_[1] !== Stdlib[7])throw _c0_;var s=_c0_[2]} + var + _cW_=caml_call2(Stdlib[28],cst$40,s), + _cX_=caml_call2(Stdlib[28],f,_cW_), + _cY_=caml_call2(Stdlib[28],cst_color_conversion_error$0,_cX_); + throw [0,Stdlib[6],_cY_]}}, + match=string_match(re_rgb,s,0); + if(match) + {var + r=match[1], + red=matched_group(r,2), + green=matched_group(r,3), + blue=matched_group(r,4), + alpha=matched_group(r,5), + match$0=matched_group(r,1); + if(match$0) + {var _cC_=match$0[1]; + if(! caml_string_notequal(_cC_,cst_rgb)) + {if(alpha)return fail(0); + var _cG_=i_of_s_o(blue),_cH_=i_of_s_o(green); + return [1,[0,i_of_s_o(red),_cH_,_cG_]]} + if(! caml_string_notequal(_cC_,cst_rgba)) + {if(alpha) + {var + a=alpha[1], + _cD_=f_of_s(a), + _cE_=i_of_s_o(blue), + _cF_=i_of_s_o(green); + return [3,[0,i_of_s_o(red),_cF_,_cE_,_cD_]]} + return fail(0)}} + return fail(0)} + var match$1=string_match(re_rgb_pct,s,0); + if(match$1) + {var + r$0=match$1[1], + red$0=matched_group(r$0,2), + green$0=matched_group(r$0,3), + blue$0=matched_group(r$0,4), + alpha$0=matched_group(r$0,5), + match$2=matched_group(r$0,1); + if(match$2) + {var _cI_=match$2[1]; + if(! caml_string_notequal(_cI_,cst_rgb$0)) + {if(alpha$0)return fail(0); + var _cM_=i_of_s_o(blue$0),_cN_=i_of_s_o(green$0); + return [2,[0,i_of_s_o(red$0),_cN_,_cM_]]} + if(! caml_string_notequal(_cI_,cst_rgba$0)) + {if(alpha$0) + {var + a$0=alpha$0[1], + _cJ_=f_of_s(a$0), + _cK_=i_of_s_o(blue$0), + _cL_=i_of_s_o(green$0); + return [4,[0,i_of_s_o(red$0),_cL_,_cK_,_cJ_]]} + return fail(0)}} + return fail(0)} + var match$3=string_match(re_hsl,s,0); + if(match$3) + {var + r$1=match$3[1], + red$1=matched_group(r$1,2), + green$1=matched_group(r$1,3), + blue$1=matched_group(r$1,4), + alpha$1=matched_group(r$1,5), + match$4=matched_group(r$1,1); + if(match$4) + {var _cO_=match$4[1]; + if(! caml_string_notequal(_cO_,cst_hsl)) + {if(alpha$1)return fail(0); + var _cS_=i_of_s_o(blue$1),_cT_=i_of_s_o(green$1); + return [5,[0,i_of_s_o(red$1),_cT_,_cS_]]} + if(! caml_string_notequal(_cO_,cst_hsla)) + {if(alpha$1) + {var + a$1=alpha$1[1], + _cP_=f_of_s(a$1), + _cQ_=i_of_s_o(blue$1), + _cR_=i_of_s_o(green$1); + return [6,[0,i_of_s_o(red$1),_cR_,_cQ_,_cP_]]} + return fail(0)}} + return fail(0)} + return fail(0)} + throw _cV_}} + function string_of_t$0(param) + {if(typeof param === "number") + return cst_0; + else + switch(param[0]) + {case 0: + var f=param[1];return caml_call3(Stdlib_Printf[4],_b8_,f,cst_em$0); + case 1: + var f$0=param[1]; + return caml_call3(Stdlib_Printf[4],_b9_,f$0,cst_ex); + case 2: + var f$1=param[1]; + return caml_call3(Stdlib_Printf[4],_b__,f$1,cst_px); + case 3: + var f$2=param[1]; + return caml_call3(Stdlib_Printf[4],_b$_,f$2,cst_gd); + case 4: + var f$3=param[1]; + return caml_call3(Stdlib_Printf[4],_ca_,f$3,cst_rem); + case 5: + var f$4=param[1]; + return caml_call3(Stdlib_Printf[4],_cb_,f$4,cst_vw); + case 6: + var f$5=param[1]; + return caml_call3(Stdlib_Printf[4],_cc_,f$5,cst_vh); + case 7: + var f$6=param[1]; + return caml_call3(Stdlib_Printf[4],_cd_,f$6,cst_vm); + case 8: + var f$7=param[1]; + return caml_call3(Stdlib_Printf[4],_ce_,f$7,cst_ch); + case 9: + var f$8=param[1]; + return caml_call3(Stdlib_Printf[4],_cf_,f$8,cst_mm); + case 10: + var f$9=param[1]; + return caml_call3(Stdlib_Printf[4],_cg_,f$9,cst_cm); + case 11: + var f$10=param[1]; + return caml_call3(Stdlib_Printf[4],_ch_,f$10,cst_in); + case 12: + var f$11=param[1]; + return caml_call3(Stdlib_Printf[4],_ci_,f$11,cst_pt); + default: + var f$12=param[1]; + return caml_call3(Stdlib_Printf[4],_cj_,f$12,cst_pc)}} + function js$0(t){return caml_jsstring_of_string(string_of_t$0(t))} + function ml$0(t) + {var s=caml_string_of_jsstring(t); + if(caml_call2(String[68],s,cst_0$0))return 0; + function fail(param) + {var _cB_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length); + throw [0,Stdlib[6],_cB_]} + var re=regexp(cst_d_d_s_S),match=string_match(re,s,0); + if(match) + {var r=match[1],match$0=matched_group(r,1); + if(match$0) + {var f=match$0[1]; + try + {var _cz_=caml_float_of_string(f)} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Stdlib[6]) + {var + s$0=exn[2], + _cy_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0); + throw [0,Stdlib[6],_cy_]} + throw exn} + var f$0=_cz_} + else + var f$0=fail(0); + var match$1=matched_group(r,2); + if(match$1) + {var _cA_=match$1[1],switch$0=caml_string_compare(_cA_,cst_pc$0); + if(0 <= switch$0) + {if(! (0 < switch$0))return [13,f$0]; + if(! caml_string_notequal(_cA_,cst_pt$0))return [12,f$0]; + if(! caml_string_notequal(_cA_,cst_px$0))return [2,f$0]; + if(! caml_string_notequal(_cA_,cst_rem$0))return [4,f$0]; + if(! caml_string_notequal(_cA_,cst_vh$0))return [6,f$0]; + if(! caml_string_notequal(_cA_,cst_vm$0))return [7,f$0]; + if(! caml_string_notequal(_cA_,cst_vw$0))return [5,f$0]} + else + {if(! caml_string_notequal(_cA_,cst_ch$0))return [8,f$0]; + if(! caml_string_notequal(_cA_,cst_cm$0))return [10,f$0]; + if(! caml_string_notequal(_cA_,cst_em$1))return [0,f$0]; + if(! caml_string_notequal(_cA_,cst_ex$0))return [1,f$0]; + if(! caml_string_notequal(_cA_,cst_gd$0))return [3,f$0]; + if(! caml_string_notequal(_cA_,cst_in$0))return [11,f$0]; + if(! caml_string_notequal(_cA_,cst_mm$0))return [9,f$0]} + return fail(0)} + return fail(0)} + return fail(0)} + var Length=[0,string_of_t$0,js$0,ml$0]; + function string_of_t$1(param) + {switch(param[0]) + {case 0: + var f=param[1];return caml_call3(Stdlib_Printf[4],_ck_,f,cst_deg); + case 1: + var f$0=param[1]; + return caml_call3(Stdlib_Printf[4],_cl_,f$0,cst_grad); + case 2: + var f$1=param[1]; + return caml_call3(Stdlib_Printf[4],_cm_,f$1,cst_rad); + default: + var f$2=param[1]; + return caml_call3(Stdlib_Printf[4],_cn_,f$2,cst_turns)}} + function js$1(t){return caml_jsstring_of_string(string_of_t$1(t))} + function ml$1(j) + {var s=caml_string_of_jsstring(j),re=regexp(cst_d_d_deg_grad_rad_turns); + function fail(param) + {var _cx_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0); + throw [0,Stdlib[6],_cx_]} + var match=string_match(re,s,0); + if(match) + {var r=match[1],match$0=matched_group(r,1); + if(match$0) + {var f=match$0[1]; + try + {var _cv_=caml_float_of_string(f)} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Stdlib[6]) + {var + s$0=exn[2], + _cu_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0); + throw [0,Stdlib[6],_cu_]} + throw exn} + var f$0=_cv_} + else + var f$0=fail(0); + var match$1=matched_group(r,2); + if(match$1) + {var _cw_=match$1[1]; + if(! caml_string_notequal(_cw_,cst_deg$0))return [0,f$0]; + if(! caml_string_notequal(_cw_,cst_grad$0))return [1,f$0]; + if(! caml_string_notequal(_cw_,cst_rad$0))return [2,f$0]; + if(! caml_string_notequal(_cw_,cst_turns$0))return [3,f$0]} + return fail(0)} + return fail(0)} + var + Angle=[0,string_of_t$1,js$1,ml$1], + Js_of_ocaml_CSS= + [0, + [0, + string_of_name, + rgb_of_name, + hex_of_rgb, + rgb, + hsl, + string_of_t, + js, + ml, + js_t_of_js_string], + Length, + Angle]; + caml_register_global(1668,Js_of_ocaml_CSS,"Js_of_ocaml__CSS"); + function listen(opt,target,typ,cb) + {if(opt)var sth=opt[1],capture=sth;else var capture=0; + var _ct_=! ! capture; + return addEventListener + (target, + typ, + full_handler(function(n,e){return ! ! caml_call2(cb,n,e)}), + _ct_)} + var Js_of_ocaml_Dom_events=[0,Event$0,listen,removeEventListener]; + caml_register_global + (1669,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events"); + var + t0="http://www.w3.org/2000/svg", + SVGError=[248,cst_Js_of_ocaml_Dom_svg_SVGErr,caml_fresh_oo_id(0)]; + function createElement$0(t2,name) + {var t1=caml_jsstring_of_string(name); + return t2.createElementNS("http://www.w3.org/2000/svg",t1)} + function unsafeCreateElement$0(doc,name){return createElement$0(doc,name)} + function createA$0(doc){return unsafeCreateElement$0(doc,cst_a$2)} + function createAltGlyph(doc) + {return unsafeCreateElement$0(doc,cst_altglyph)} + function createAltGlyphDef(doc) + {return unsafeCreateElement$0(doc,cst_altglyphdef)} + function createAltGlyphItem(doc) + {return unsafeCreateElement$0(doc,cst_altglyphitem)} + function createAnimate(doc){return unsafeCreateElement$0(doc,cst_animate)} + function createAnimateColor(doc) + {return unsafeCreateElement$0(doc,cst_animatecolor)} + function createAnimateMotion(doc) + {return unsafeCreateElement$0(doc,cst_animatemotion)} + function createAnimateTransform(doc) + {return unsafeCreateElement$0(doc,cst_animatetransform)} + function createCircle(doc){return unsafeCreateElement$0(doc,cst_circle)} + function createClipPath(doc) + {return unsafeCreateElement$0(doc,cst_clippath)} + function createCursor(doc){return unsafeCreateElement$0(doc,cst_cursor)} + function createDefs(doc){return unsafeCreateElement$0(doc,cst_defs)} + function createDesc(doc){return unsafeCreateElement$0(doc,cst_desc)} + function createEllipse(doc){return unsafeCreateElement$0(doc,cst_ellipse)} + function createFilter(doc){return unsafeCreateElement$0(doc,cst_filter)} + function createFont(doc){return unsafeCreateElement$0(doc,cst_font)} + function createFontFace(doc) + {return unsafeCreateElement$0(doc,cst_font_face)} + function createFontFaceFormat(doc) + {return unsafeCreateElement$0(doc,cst_font_face_format)} + function createFontFaceName(doc) + {return unsafeCreateElement$0(doc,cst_font_face_name)} + function createFontFaceSrc(doc) + {return unsafeCreateElement$0(doc,cst_font_face_src)} + function createFontFaceUri(doc) + {return unsafeCreateElement$0(doc,cst_font_face_uri)} + function createForeignObject(doc) + {return unsafeCreateElement$0(doc,cst_foreignObject)} + function createG(doc){return unsafeCreateElement$0(doc,cst_g$0)} + function createGlyph(doc){return unsafeCreateElement$0(doc,cst_glyph)} + function createGlyphRef(doc) + {return unsafeCreateElement$0(doc,cst_glyphref)} + function createhkern(doc){return unsafeCreateElement$0(doc,cst_hkern)} + function createImage(doc){return unsafeCreateElement$0(doc,cst_image)} + function createLineElement(doc) + {return unsafeCreateElement$0(doc,cst_line)} + function createLinearElement(doc) + {return unsafeCreateElement$0(doc,cst_lineargradient)} + function createMask(doc){return unsafeCreateElement$0(doc,cst_mask)} + function createMetaData(doc) + {return unsafeCreateElement$0(doc,cst_metadata)} + function createMissingGlyph(doc) + {return unsafeCreateElement$0(doc,cst_missing_glyph)} + function createMPath(doc){return unsafeCreateElement$0(doc,cst_mpath)} + function createPath(doc){return unsafeCreateElement$0(doc,cst_path)} + function createPattern(doc){return unsafeCreateElement$0(doc,cst_pattern)} + function createPolygon(doc){return unsafeCreateElement$0(doc,cst_polygon)} + function createPolyline(doc) + {return unsafeCreateElement$0(doc,cst_polyline)} + function createRadialgradient(doc) + {return unsafeCreateElement$0(doc,cst_radialgradient)} + function createRect(doc){return unsafeCreateElement$0(doc,cst_rect)} + function createScript$0(doc) + {return unsafeCreateElement$0(doc,cst_script$2)} + function createSet(doc){return unsafeCreateElement$0(doc,cst_set)} + function createStop(doc){return unsafeCreateElement$0(doc,cst_stop)} + function createStyle$0(doc){return unsafeCreateElement$0(doc,cst_style$2)} + function createSvg(doc){return unsafeCreateElement$0(doc,cst_svg)} + function createSwitch(doc){return unsafeCreateElement$0(doc,cst_switch)} + function createSymbol(doc){return unsafeCreateElement$0(doc,cst_symbol)} + function createTextElement(doc) + {return unsafeCreateElement$0(doc,cst_text$0)} + function createTextpath(doc) + {return unsafeCreateElement$0(doc,cst_textpath)} + function createTitle$0(doc){return unsafeCreateElement$0(doc,cst_title$2)} + function createTref(doc){return unsafeCreateElement$0(doc,cst_tref)} + function createTspan(doc){return unsafeCreateElement$0(doc,cst_tspan)} + function createUse(doc){return unsafeCreateElement$0(doc,cst_use)} + function createView(doc){return unsafeCreateElement$0(doc,cst_view)} + function createvkern(doc){return unsafeCreateElement$0(doc,cst_vkern)} + var svg_element=Unsafe[1].SVGElement,document$0=Unsafe[1].document; + function getElementById$0(id) + {function _cq_(e){if(e instanceof svg_element)return e;throw Stdlib[8]} + function _cr_(param){throw Stdlib[8]} + var + t6=caml_jsstring_of_string(id), + t7=Unsafe[1].document, + _cs_=t7.getElementById(t6); + return caml_call3(Opt[7],_cs_,_cr_,_cq_)} + function element$2(e){return e instanceof svg_element?e:no_handler} + function unsafeCoerce$0(e,tag) + {var t9=e.tagName,_cp_=caml_jsstring_of_string(tag); + return t9.toLowerCase() === _cp_?e:no_handler} + function a$0(e){return unsafeCoerce$0(e,cst_a$3)} + function altGlyph(e){return unsafeCoerce$0(e,cst_altglyph$0)} + function altGlyphDef(e){return unsafeCoerce$0(e,cst_altglyphdef$0)} + function altGlyphItem(e){return unsafeCoerce$0(e,cst_altglyphitem$0)} + function animate(e){return unsafeCoerce$0(e,cst_animate$0)} + function animateColor(e){return unsafeCoerce$0(e,cst_animatecolor$0)} + function animateMotion(e){return unsafeCoerce$0(e,cst_animatemotion$0)} + function animateTransform(e) + {return unsafeCoerce$0(e,cst_animatetransform$0)} + function circle(e){return unsafeCoerce$0(e,cst_circle$0)} + function clipPath(e){return unsafeCoerce$0(e,cst_clippath$0)} + function cursor(e){return unsafeCoerce$0(e,cst_cursor$0)} + function defs(e){return unsafeCoerce$0(e,cst_defs$0)} + function desc(e){return unsafeCoerce$0(e,cst_desc$0)} + function ellipse(e){return unsafeCoerce$0(e,cst_ellipse$0)} + function filter(e){return unsafeCoerce$0(e,cst_filter$0)} + function font(e){return unsafeCoerce$0(e,cst_font$0)} + function fontFace(e){return unsafeCoerce$0(e,cst_font_face$0)} + function fontFaceFormat(e) + {return unsafeCoerce$0(e,cst_font_face_format$0)} + function fontFaceName(e){return unsafeCoerce$0(e,cst_font_face_name$0)} + function fontFaceSrc(e){return unsafeCoerce$0(e,cst_font_face_src$0)} + function fontFaceUri(e){return unsafeCoerce$0(e,cst_font_face_uri$0)} + function foreignObject(e){return unsafeCoerce$0(e,cst_foreignobject)} + function g(e){return unsafeCoerce$0(e,cst_g$1)} + function glyph(e){return unsafeCoerce$0(e,cst_glyph$0)} + function glyphRef(e){return unsafeCoerce$0(e,cst_glyphref$0)} + function hkern(e){return unsafeCoerce$0(e,cst_hkern$0)} + function image(e){return unsafeCoerce$0(e,cst_image$0)} + function lineElement(e){return unsafeCoerce$0(e,cst_line$0)} + function linearElement(e){return unsafeCoerce$0(e,cst_lineargradient$0)} + function mask(e){return unsafeCoerce$0(e,cst_mask$0)} + function metaData(e){return unsafeCoerce$0(e,cst_metadata$0)} + function missingGlyph(e){return unsafeCoerce$0(e,cst_missing_glyph$0)} + function mPath(e){return unsafeCoerce$0(e,cst_mpath$0)} + function path$0(e){return unsafeCoerce$0(e,cst_path$0)} + function pattern(e){return unsafeCoerce$0(e,cst_pattern$0)} + function polygon(e){return unsafeCoerce$0(e,cst_polygon$0)} + function polyline(e){return unsafeCoerce$0(e,cst_polyline$0)} + function radialgradient(e){return unsafeCoerce$0(e,cst_radialgradient$0)} + function rect(e){return unsafeCoerce$0(e,cst_rect$0)} + function script$0(e){return unsafeCoerce$0(e,cst_script$3)} + function set$1(e){return unsafeCoerce$0(e,cst_set$0)} + function stop(e){return unsafeCoerce$0(e,cst_stop$0)} + function style$0(e){return unsafeCoerce$0(e,cst_style$3)} + function svg(e){return unsafeCoerce$0(e,cst_svg$0)} + function switch$0(e){return unsafeCoerce$0(e,cst_switch$0)} + function symbol$12(e){return unsafeCoerce$0(e,cst_symbol$0)} + function textElement(e){return unsafeCoerce$0(e,cst_text$1)} + function textpath(e){return unsafeCoerce$0(e,cst_textpath$0)} + function title$0(e){return unsafeCoerce$0(e,cst_title$3)} + function tref(e){return unsafeCoerce$0(e,cst_tref$0)} + function tspan(e){return unsafeCoerce$0(e,cst_tspan$0)} + function use(e){return unsafeCoerce$0(e,cst_use$0)} + function view(e){return unsafeCoerce$0(e,cst_view$0)} + function vkern(e){return unsafeCoerce$0(e,cst_vkern$0)} + var + Js_of_ocaml_Dom_svg= + [0, + t0, + SVGError, + createElement$0, + createA$0, + createAltGlyph, + createAltGlyphDef, + createAltGlyphItem, + createAnimate, + createAnimateColor, + createAnimateMotion, + createAnimateTransform, + createCircle, + createClipPath, + createCursor, + createDefs, + createDesc, + createEllipse, + createFilter, + createFont, + createFontFace, + createFontFaceFormat, + createFontFaceName, + createFontFaceSrc, + createFontFaceUri, + createForeignObject, + createG, + createGlyph, + createGlyphRef, + createhkern, + createImage, + createLineElement, + createLinearElement, + createMask, + createMetaData, + createMissingGlyph, + createMPath, + createPath, + createPattern, + createPolygon, + createPolyline, + createRadialgradient, + createRect, + createScript$0, + createSet, + createStop, + createStyle$0, + createSvg, + createSwitch, + createSymbol, + createTextElement, + createTextpath, + createTitle$0, + createTref, + createTspan, + createUse, + createView, + createvkern, + svg_element, + document$0, + getElementById$0, + [0, + element$2, + a$0, + altGlyph, + altGlyphDef, + altGlyphItem, + animate, + animateColor, + animateMotion, + animateTransform, + circle, + clipPath, + cursor, + defs, + desc, + ellipse, + filter, + font, + fontFace, + fontFaceFormat, + fontFaceName, + fontFaceSrc, + fontFaceUri, + foreignObject, + g, + glyph, + glyphRef, + hkern, + image, + lineElement, + linearElement, + mask, + metaData, + missingGlyph, + mPath, + path$0, + pattern, + polygon, + polyline, + radialgradient, + rect, + script$0, + set$1, + stop, + style$0, + svg, + switch$0, + symbol$12, + textElement, + textpath, + title$0, + tref, + tspan, + use, + view, + vkern]]; + caml_register_global(1670,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); + function withCredentials(b) + {var t1={},t0=! ! b;t1.withCredentials = t0;return t1} + var + eventSource=Unsafe[1].EventSource, + eventSource_options=Unsafe[1].EventSource, + Js_of_ocaml_EventSource= + [0,withCredentials,eventSource,eventSource_options,addEventListener]; + caml_register_global + (1671,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource"); + var + console=runtime.caml_js_get_console(0), + Js_of_ocaml_Firebug=[0,console]; + caml_register_global(1672,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug"); + function empty_position_options(param){return {}} + var + t1$0=Unsafe[1].navigator, + geolocation=caml_call1(Optdef[5],t1$0)?t1$0.geolocation:t1$0; + function is_supported$3(param){return caml_call1(Optdef[5],geolocation)} + var + Js_of_ocaml_Geolocation= + [0,empty_position_options,geolocation,is_supported$3]; + caml_register_global + (1673,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation"); + function empty_intersection_observer_op(param){return {}} + var intersectionObserver_unsafe=Unsafe[1].IntersectionObserver; + function is_supported$4(param) + {return caml_call1(Optdef[5],intersectionObserver_unsafe)} + var + Js_of_ocaml_IntersectionObserv= + [0, + empty_intersection_observer_op, + is_supported$4, + intersectionObserver_unsafe]; + caml_register_global + (1674,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); + function object_options(param){return {"localeMatcher":"best fit"}} + function options(param) + {return {"localeMatcher":"best fit", + "usage":"sort", + "sensitivity":"variant", + "ignorePunctuation":t4, + "numeric":t4, + "caseFirst":"false"}} + var Collator=[0,object_options,options]; + function options$0(param) + {return {"localeMatcher":"best fit", + "timeZone":t39, + "hour12":t39, + "hourCycle":t39, + "formatMatcher":"best fit", + "weekday":t39, + "era":t39, + "year":t39, + "month":t39, + "day":t39, + "hour":t39, + "minute":t39, + "second":t39, + "timeZoneName":t39}} + var DateTimeFormat=[0,object_options,options$0]; + function options$1(param) + {return {"localeMatcher":"best fit", + "style":"decimal", + "currency":t39, + "currencyDisplay":t39, + "useGrouping":t25, + "minimumIntegerDigits":t39, + "minimumFractionDigits":t39, + "maximumFractionDigits":t39, + "minimumSignificantDigits":t39, + "maximumSignificantDigits":t39}} + var NumberFormat=[0,object_options,options$1]; + function options$2(param) + {return {"localeMatcher":"best fit","type":"cardinal"}} + var + PluralRules=[0,object_options,options$2], + intl=Unsafe[1].Intl, + t35=Unsafe[1].Intl, + collator_constr=t35.Collator, + t37=Unsafe[1].Intl, + dateTimeFormat_constr=t37.DateTimeFormat, + t39$0=Unsafe[1].Intl, + numberFormat_constr=t39$0.NumberFormat, + t41=Unsafe[1].Intl, + pluralRules_constr=t41.PluralRules; + function is_supported$5(param){return caml_call1(Optdef[5],intl)} + var + Js_of_ocaml_Intl= + [0, + Collator, + DateTimeFormat, + NumberFormat, + PluralRules, + intl, + collator_constr, + dateTimeFormat_constr, + numberFormat_constr, + pluralRules_constr, + is_supported$5]; + caml_register_global(1675,Js_of_ocaml_Intl,"Js_of_ocaml__Intl"); + var Js_of_ocaml$0=[0]; + caml_register_global(1676,Js_of_ocaml$0,"Js_of_ocaml"); + return} + (globalThis)); + + +//# 1 "../../runtimes/jsoo/.runtime_jsoo.objs/runtime_jsoo.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_int_of_string=runtime.caml_int_of_string, + caml_js_from_array=runtime.caml_js_from_array, + caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, + caml_jsstring_of_string=runtime.caml_jsstring_of_string, + caml_register_global=runtime.caml_register_global, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) + {return f.length == 7 + ?f(a0,a1,a2,a3,a4,a5,a6) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])} + var + global_data=runtime.caml_get_global_data(), + partial=[4,0,0,0,[12,46,0]], + cst_No_rule_applies_in_the_giv= + caml_string_of_jsbytes + ("No rule applies in the given context to give a value to the variable"), + cst_A_conflict_happened_betwee= + caml_string_of_jsbytes + ("A conflict happened between two rules giving a value to the variable"), + cst_A_failure_happened_in_the_= + caml_string_of_jsbytes("A failure happened in the assertion"), + cst_Begin_call=caml_string_of_jsbytes("Begin call"), + cst_End_call=caml_string_of_jsbytes("End call"), + cst_Variable_definition=caml_string_of_jsbytes("Variable definition"), + cst_Decision_taken=caml_string_of_jsbytes("Decision taken"), + cst_date_of_jsoo_invalid_date= + caml_string_of_jsbytes("date_of_jsoo: invalid date"), + Stdlib_Format=global_data.Stdlib__Format, + Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, + Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, + Yojson=global_data.Yojson, + Stdlib_List=global_data.Stdlib__List, + Stdlib_Array=global_data.Stdlib__Array, + Stdlib_String=global_data.Stdlib__String, + Stdlib=global_data.Stdlib, + Runtime_jsoo=[0]; + caml_register_global(52,Runtime_jsoo,"Runtime_jsoo"); + var + _a_= + [0, + [2, + 0, + [11, + caml_string_of_jsbytes(" in file "), + [2, + 0, + [11, + caml_string_of_jsbytes(", position "), + [4, + 0, + 0, + 0, + [12, + 58, + [4, + 0, + 0, + 0, + [11,caml_string_of_jsbytes("--"),[4,0,0,0,[12,58,partial]]]]]]]]]], + caml_string_of_jsbytes("%s in file %s, position %d:%d--%d:%d.")]; + function duration_of_jsoo(d) + {return caml_call3(Runtime_ocaml_Runtime[60],d.years,d.months,d.days)} + function duration_to_jsoo(d) + {var + match=caml_call1(Runtime_ocaml_Runtime[61],d), + days=match[3], + months=match[2], + years=match[1]; + return {"years":years,"months":months,"days":days}} + function date_of_jsoo(d) + {var d$0=runtime.caml_string_of_jsstring(d); + if(caml_call2(Stdlib_String[14],d$0,84)) + var + _r_=caml_call1(caml_call1(Stdlib_String[16],84),d$0), + d$1=caml_call1(Stdlib_List[5],_r_); + else + var d$1=d$0; + var match=caml_call2(Stdlib_String[16],45,d$1); + if(match) + {var _s_=match[2]; + if(_s_) + {var _t_=_s_[2]; + if(_t_ && ! _t_[2]) + {var + day=_t_[1], + month=_s_[1], + year=match[1], + _u_=caml_int_of_string(day), + _v_=caml_int_of_string(month), + _w_=caml_int_of_string(year); + return caml_call3(Runtime_ocaml_Runtime[57],_w_,_v_,_u_)}}} + return caml_call1(Stdlib[2],cst_date_of_jsoo_invalid_date)} + function date_to_jsoo(d) + {return caml_jsstring_of_string(caml_call1(Runtime_ocaml_Runtime[56],d))} + function t19(param) + {return caml_js_wrap_meth_callback + (function(param) + {var _i_=caml_call1(Runtime_ocaml_Runtime[23],0); + function _j_(evt) + {if(3 === evt[0]) + var + pos=evt[1], + _q_= + caml_call2(Stdlib_List[19],caml_jsstring_of_string,pos[6]), + t12=caml_js_from_array(caml_call1(Stdlib_Array[12],_q_)), + t7=caml_jsstring_of_string(pos[1]), + _l_= + caml_call1 + (Js_of_ocaml_Js[4], + {"fileName":t7, + "startLine":pos[2], + "endLine":pos[4], + "startColumn":pos[3], + "endColumn":pos[5], + "lawHeadings":t12}); + else + var _l_=Js_of_ocaml_Js[3]; + if(2 === evt[0]) + var v=evt[2],_m_=v; + else + var _m_=caml_call1(Runtime_ocaml_Runtime[10],0); + var + _n_=caml_call1(Runtime_ocaml_Runtime[9],_m_), + t15= + caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_n_)); + if(3 === evt[0]) + var _o_=0; + else + var + info=evt[1], + _o_=caml_call2(Stdlib_List[19],caml_jsstring_of_string,info); + var + t14= + caml_js_from_array(caml_call1(Stdlib_Array[12],_o_)); + switch(evt[0]) + {case 0:var _p_=cst_Begin_call;break; + case 1:var _p_=cst_End_call;break; + case 2:var _p_=cst_Variable_definition;break; + default:var _p_=cst_Decision_taken} + var t13=caml_jsstring_of_string(_p_); + return {"eventType":t13, + "information":t14, + "loggedValueJson":t15, + "sourcePosition":_l_}} + var _k_=caml_call2(Stdlib_List[19],_j_,_i_); + return caml_js_from_array(caml_call1(Stdlib_Array[12],_k_))})} + function t18(param) + {return caml_js_wrap_meth_callback + (function(param) + {var + _d_=caml_call1(Runtime_ocaml_Runtime[23],0), + _e_=caml_call1(Runtime_ocaml_Runtime[24][1],_d_); + function _f_(event) + {var + _h_=caml_call1(Runtime_ocaml_Runtime[20],event), + t6= + caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_h_)); + return {"data":t6}} + var _g_=caml_call1(caml_call1(Stdlib_List[19],_f_),_e_); + return caml_js_from_array(caml_call1(Stdlib_Array[12],_g_))})} + function t17(param) + {return caml_js_wrap_meth_callback(Runtime_ocaml_Runtime[25])} + var + event_manager= + {"resetLog":caml_js_wrap_meth_callback(t17), + "retrieveEvents":caml_js_wrap_meth_callback(t18), + "retrieveRawEvents":caml_js_wrap_meth_callback(t19)}; + function execute_or_throw_error(f) + {function throw_error(descr,pos) + {var + t21= + caml_jsstring_of_string + (caml_call7 + (Stdlib_Format[133],_a_,descr,pos[1],pos[2],pos[3],pos[4],pos[5])); + function t23(param){return t21} + var + _c_= + caml_call1 + (Js_of_ocaml_Js[33][9], + {"name":"NoValueProvided", + "message":t21, + "stack":Js_of_ocaml_Js[6][1], + "toString":caml_js_wrap_meth_callback(t23)}); + return caml_call1(Js_of_ocaml_Js[33][5],_c_)} + try + {var _b_=caml_call1(f,0);return _b_} + catch(exn) + {exn = caml_wrap_exception(exn); + if(exn[1] === Runtime_ocaml_Runtime[8]) + {var pos=exn[2]; + return throw_error(cst_No_rule_applies_in_the_giv,pos)} + if(exn[1] === Runtime_ocaml_Runtime[4]) + {var pos$0=exn[2]; + return throw_error(cst_A_conflict_happened_betwee,pos$0)} + if(exn[1] === Runtime_ocaml_Runtime[3]) + {var pos$1=exn[2]; + return throw_error(cst_A_failure_happened_in_the_,pos$1)} + throw exn}} + var + Runtime_jsoo_Runtime= + [0, + event_manager, + duration_of_jsoo, + duration_to_jsoo, + date_of_jsoo, + date_to_jsoo, + execute_or_throw_error]; + caml_register_global(62,Runtime_jsoo_Runtime,"Runtime_jsoo__Runtime"); + return} + (globalThis)); + + +//# 1 "law_source/.law_source.objs/law_source.cma.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_js_from_array=runtime.caml_js_from_array, + caml_js_to_array=runtime.caml_js_to_array, + caml_js_wrap_callback=runtime.caml_js_wrap_callback, + caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback, + caml_register_global=runtime.caml_register_global, + caml_string_notequal=runtime.caml_string_notequal, + caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, + caml_string_of_jsstring=runtime.caml_string_of_jsstring, + caml_wrap_exception=runtime.caml_wrap_exception; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + function caml_call2(f,a0,a1) + {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} + function caml_call3(f,a0,a1,a2) + {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} + function caml_call4(f,a0,a1,a2,a3) + {return f.length == 4 + ?f(a0,a1,a2,a3) + :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + var + global_data=runtime.caml_get_global_data(), + cst_0$66=caml_string_of_jsbytes("0"), + cst_0$65=caml_string_of_jsbytes("0"), + cst_0$63=caml_string_of_jsbytes("0"), + cst_0$64=caml_string_of_jsbytes("0"), + cst_0$62=caml_string_of_jsbytes("0"), + cst_1$27=caml_string_of_jsbytes("1."), + cst_0_5$0=caml_string_of_jsbytes("0.5"), + cst_0$61=caml_string_of_jsbytes("0."), + cst_12$10=caml_string_of_jsbytes("12."), + cst_12$8=caml_string_of_jsbytes("12."), + cst_1$26=caml_string_of_jsbytes("1."), + cst_12$9=caml_string_of_jsbytes("12."), + cst_12$7=caml_string_of_jsbytes("12."), + cst_12$5=caml_string_of_jsbytes("12."), + cst_1$25=caml_string_of_jsbytes("1."), + cst_12$6=caml_string_of_jsbytes("12."), + cst_0$60=caml_string_of_jsbytes("0"), + cst_1$24=caml_string_of_jsbytes("1"), + cst_0_0369=caml_string_of_jsbytes("0.0369"), + cst_1$23=caml_string_of_jsbytes("1"), + cst_0_0567=caml_string_of_jsbytes("0.0567"), + cst_1$22=caml_string_of_jsbytes("1"), + cst_0_16$1=caml_string_of_jsbytes("0.16"), + cst_0_08$0=caml_string_of_jsbytes("0.08"), + cst_0_04=caml_string_of_jsbytes("0.04"), + cst_0$59=caml_string_of_jsbytes("0"), + cst_0$57=caml_string_of_jsbytes("0."), + cst_0$58=caml_string_of_jsbytes("0."), + cst_1$21=caml_string_of_jsbytes("1"), + cst_0_232=caml_string_of_jsbytes("0.232"), + cst_0$56=caml_string_of_jsbytes("0"), + cst_1$20=caml_string_of_jsbytes("1"), + cst_0_2379=caml_string_of_jsbytes("0.2379"), + cst_0$55=caml_string_of_jsbytes("0"), + cst_1$19=caml_string_of_jsbytes("1"), + cst_0_2437=caml_string_of_jsbytes("0.2437"), + cst_0$54=caml_string_of_jsbytes("0"), + cst_1$18=caml_string_of_jsbytes("1"), + cst_0_2496=caml_string_of_jsbytes("0.2496"), + cst_0$53=caml_string_of_jsbytes("0"), + cst_1$17=caml_string_of_jsbytes("1"), + cst_0_2555=caml_string_of_jsbytes("0.2555"), + cst_0$52=caml_string_of_jsbytes("0"), + cst_1$16=caml_string_of_jsbytes("1"), + cst_0_2613=caml_string_of_jsbytes("0.2613"), + cst_0$51=caml_string_of_jsbytes("0"), + cst_1$15=caml_string_of_jsbytes("1"), + cst_0_2672=caml_string_of_jsbytes("0.2672"), + cst_0$50=caml_string_of_jsbytes("0"), + cst_1$14=caml_string_of_jsbytes("1"), + cst_0_2804=caml_string_of_jsbytes("0.2804"), + cst_0$49=caml_string_of_jsbytes("0"), + cst_1$13=caml_string_of_jsbytes("1"), + cst_0_2936=caml_string_of_jsbytes("0.2936"), + cst_0$48=caml_string_of_jsbytes("0"), + cst_1$12=caml_string_of_jsbytes("1"), + cst_0_3068=caml_string_of_jsbytes("0.3068"), + cst_0$47=caml_string_of_jsbytes("0"), + cst_1$11=caml_string_of_jsbytes("1"), + cst_0_32$0=caml_string_of_jsbytes("0.32"), + cst_0$46=caml_string_of_jsbytes("0"), + cst_1$10=caml_string_of_jsbytes("1"), + cst_0_32=caml_string_of_jsbytes("0.32"), + cst_0$45=caml_string_of_jsbytes("0"), + cst_1$9=caml_string_of_jsbytes("1"), + cst_0_16$0=caml_string_of_jsbytes("0.16"), + cst_0$44=caml_string_of_jsbytes("0"), + cst_1$8=caml_string_of_jsbytes("1"), + cst_0_08=caml_string_of_jsbytes("0.08"), + cst_0$43=caml_string_of_jsbytes("0"), + cst_2$15=caml_string_of_jsbytes("2"), + cst_2$16=caml_string_of_jsbytes("2"), + cst_0_41=caml_string_of_jsbytes("0.41"), + cst_0$42=caml_string_of_jsbytes("0"), + cst_2$13=caml_string_of_jsbytes("2"), + cst_2$14=caml_string_of_jsbytes("2"), + cst_0_205=caml_string_of_jsbytes("0.205"), + cst_0$41=caml_string_of_jsbytes("0"), + cst_2$11=caml_string_of_jsbytes("2"), + cst_2$12=caml_string_of_jsbytes("2"), + cst_0_1025=caml_string_of_jsbytes("0.1025"), + cst_0$40=caml_string_of_jsbytes("0"), + cst_0_20234=caml_string_of_jsbytes("0.20234"), + cst_0_10117=caml_string_of_jsbytes("0.10117"), + cst_0_05059=caml_string_of_jsbytes("0.05059"), + cst_12$4=caml_string_of_jsbytes("12."), + cst_12$2=caml_string_of_jsbytes("12."), + cst_1$7=caml_string_of_jsbytes("1."), + cst_12$3=caml_string_of_jsbytes("12."), + cst_12$1=caml_string_of_jsbytes("12."), + cst_12=caml_string_of_jsbytes("12."), + cst_1$6=caml_string_of_jsbytes("1."), + cst_12$0=caml_string_of_jsbytes("12."), + cst_0$39=caml_string_of_jsbytes("0"), + cst_1$5=caml_string_of_jsbytes("1"), + cst_1$4=caml_string_of_jsbytes("1"), + cst_2$10=caml_string_of_jsbytes("2"), + cst_0$37=caml_string_of_jsbytes("0"), + cst_0_145=caml_string_of_jsbytes("0.145"), + cst_0$38=caml_string_of_jsbytes("0"), + cst_0$35=caml_string_of_jsbytes("0"), + cst_0_1393=caml_string_of_jsbytes("0.1393"), + cst_0$36=caml_string_of_jsbytes("0"), + cst_0$33=caml_string_of_jsbytes("0"), + cst_0_1335=caml_string_of_jsbytes("0.1335"), + cst_0$34=caml_string_of_jsbytes("0"), + cst_0$31=caml_string_of_jsbytes("0"), + cst_0_1278=caml_string_of_jsbytes("0.1278"), + cst_0$32=caml_string_of_jsbytes("0"), + cst_0$29=caml_string_of_jsbytes("0"), + cst_0_122=caml_string_of_jsbytes("0.122"), + cst_0$30=caml_string_of_jsbytes("0"), + cst_0$27=caml_string_of_jsbytes("0"), + cst_0_1163=caml_string_of_jsbytes("0.1163"), + cst_0$28=caml_string_of_jsbytes("0"), + cst_0$25=caml_string_of_jsbytes("0"), + cst_0_1105=caml_string_of_jsbytes("0.1105"), + cst_0$26=caml_string_of_jsbytes("0"), + cst_0$23=caml_string_of_jsbytes("0"), + cst_0_0976=caml_string_of_jsbytes("0.0976"), + cst_0$24=caml_string_of_jsbytes("0"), + cst_0$21=caml_string_of_jsbytes("0"), + cst_0_0847=caml_string_of_jsbytes("0.0847"), + cst_0$22=caml_string_of_jsbytes("0"), + cst_0$19=caml_string_of_jsbytes("0"), + cst_0_0717=caml_string_of_jsbytes("0.0717"), + cst_0$20=caml_string_of_jsbytes("0"), + cst_0$17=caml_string_of_jsbytes("0"), + cst_5728=caml_string_of_jsbytes("5728"), + cst_0$18=caml_string_of_jsbytes("0"), + cst_0$15=caml_string_of_jsbytes("0"), + cst_0_0588$0=caml_string_of_jsbytes("0.0588"), + cst_0$16=caml_string_of_jsbytes("0"), + cst_1$3=caml_string_of_jsbytes("1"), + cst_0_0588=caml_string_of_jsbytes("0.0588"), + cst_0$14=caml_string_of_jsbytes("0"), + cst_1$2=caml_string_of_jsbytes("1."), + cst_0_5=caml_string_of_jsbytes("0.5"), + cst_0$12=caml_string_of_jsbytes("0."), + cst_0$13=caml_string_of_jsbytes("0."), + cst_2$9=caml_string_of_jsbytes("2"), + cst_0_0463$0=caml_string_of_jsbytes("0.0463"), + cst_0$11=caml_string_of_jsbytes("0"), + cst_2$8=caml_string_of_jsbytes("2"), + cst_0_0539=caml_string_of_jsbytes("0.0539"), + cst_0$10=caml_string_of_jsbytes("0"), + cst_2$7=caml_string_of_jsbytes("2"), + cst_0_0615=caml_string_of_jsbytes("0.0615"), + cst_0$9=caml_string_of_jsbytes("0"), + cst_2$6=caml_string_of_jsbytes("2"), + cst_0_069=caml_string_of_jsbytes("0.069"), + cst_0$8=caml_string_of_jsbytes("0"), + cst_2$5=caml_string_of_jsbytes("2"), + cst_0_0766=caml_string_of_jsbytes("0.0766"), + cst_0$7=caml_string_of_jsbytes("0"), + cst_2$4=caml_string_of_jsbytes("2"), + cst_0_0842=caml_string_of_jsbytes("0.0842"), + cst_0$6=caml_string_of_jsbytes("0"), + cst_2$3=caml_string_of_jsbytes("2"), + cst_0_0918=caml_string_of_jsbytes("0.0918"), + cst_0$5=caml_string_of_jsbytes("0"), + cst_2$2=caml_string_of_jsbytes("2"), + cst_0_1089=caml_string_of_jsbytes("0.1089"), + cst_0$4=caml_string_of_jsbytes("0"), + cst_2$1=caml_string_of_jsbytes("2"), + cst_0_1259=caml_string_of_jsbytes("0.1259"), + cst_0$3=caml_string_of_jsbytes("0"), + cst_2$0=caml_string_of_jsbytes("2"), + cst_0_143=caml_string_of_jsbytes("0.143"), + cst_0$2=caml_string_of_jsbytes("0"), + cst_2=caml_string_of_jsbytes("2"), + cst_0_16=caml_string_of_jsbytes("0.16"), + cst_0$1=caml_string_of_jsbytes("0"), + cst_3$1=caml_string_of_jsbytes("3"), + cst_3$2=caml_string_of_jsbytes("3"), + cst_0_0463=caml_string_of_jsbytes("0.0463"), + cst_0$0=caml_string_of_jsbytes("0"), + cst_1$1=caml_string_of_jsbytes("1"), + cst_1$0=caml_string_of_jsbytes("1"), + cst_562800$0=caml_string_of_jsbytes("562800"), + cst_5628600=caml_string_of_jsbytes("5628600"), + cst_568400$0=caml_string_of_jsbytes("568400"), + cst_5684900=caml_string_of_jsbytes("5684900"), + cst_577500$0=caml_string_of_jsbytes("577500"), + cst_5775900=caml_string_of_jsbytes("5775900"), + cst_582700$0=caml_string_of_jsbytes("582700"), + cst_5827900=caml_string_of_jsbytes("5827900"), + cst_559500$0=caml_string_of_jsbytes("559500"), + cst_5595000=caml_string_of_jsbytes("5595000"), + cst_562800=caml_string_of_jsbytes("562800"), + cst_7877000=caml_string_of_jsbytes("7877000"), + cst_568400=caml_string_of_jsbytes("568400"), + cst_7955800=caml_string_of_jsbytes("7955800"), + cst_577500=caml_string_of_jsbytes("577500"), + cst_8083100=caml_string_of_jsbytes("8083100"), + cst_582700=caml_string_of_jsbytes("582700"), + cst_8155800=caml_string_of_jsbytes("8155800"), + cst_559500=caml_string_of_jsbytes("559500"), + cst_7830000=caml_string_of_jsbytes("7830000"), + cst_3$0=caml_string_of_jsbytes("3"), + cst_3=caml_string_of_jsbytes("3"), + cst_169$0=caml_string_of_jsbytes("169."), + cst_0_55$0=caml_string_of_jsbytes("0.55"), + cst_169=caml_string_of_jsbytes("169."), + cst_0_55=caml_string_of_jsbytes("0.55"), + cst_41316=caml_string_of_jsbytes("41316"), + cst_41440=caml_string_of_jsbytes("41440"), + cst_41481=caml_string_of_jsbytes("41481"), + cst_42228=caml_string_of_jsbytes("42228"), + cst_1003=caml_string_of_jsbytes("1003"), + cst_757=caml_string_of_jsbytes("757"), + cst_1015=caml_string_of_jsbytes("1015"), + cst_766=caml_string_of_jsbytes("766"), + cst_1025=caml_string_of_jsbytes("1025"), + cst_774=caml_string_of_jsbytes("774"), + cst_1057=caml_string_of_jsbytes("1057"), + cst_798=caml_string_of_jsbytes("798"), + cst_1085=caml_string_of_jsbytes("1085"), + cst_819=caml_string_of_jsbytes("819"), + cst_1107=caml_string_of_jsbytes("1107"), + cst_835=caml_string_of_jsbytes("835"), + cst_1127=caml_string_of_jsbytes("1127"), + cst_851=caml_string_of_jsbytes("851"), + cst_0=caml_string_of_jsbytes("0"), + cst_1=caml_string_of_jsbytes("-1"), + cst_i_avait_enfant_charge_avan= + caml_string_of_jsbytes + ("i_avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"), + cst_i_personne_charge_effectiv= + caml_string_of_jsbytes + ("i_personne_charge_effective_permanente_remplit_titre_I_in"), + cst_i_personne_charge_effectiv$0= + caml_string_of_jsbytes + ("i_personne_charge_effective_permanente_est_parent_in"), + cst_i_r_sidence_in=caml_string_of_jsbytes("i_r\xc3\xa9sidence_in"), + cst_i_ressources_m_nage_in= + caml_string_of_jsbytes("i_ressources_m\xc3\xa9nage_in"), + cst_i_enfants_in=caml_string_of_jsbytes("i_enfants_in"), + cst_i_date_courante_in=caml_string_of_jsbytes("i_date_courante_in"), + cst_date_courante_in$2=caml_string_of_jsbytes("date_courante_in"), + cst_r_sidence_in$1=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_date_courante_in$1=caml_string_of_jsbytes("date_courante_in"), + cst_avait_enfant_charge_avant_= + caml_string_of_jsbytes + ("avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012_in"), + cst_enfants_charge_in= + caml_string_of_jsbytes("enfants_\xc3\xa0_charge_in"), + cst_date_courante_in$0=caml_string_of_jsbytes("date_courante_in"), + cst_r_sidence_in$0=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_ressources_m_nage_in= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_in"), + cst_personne_charge_effective_= + caml_string_of_jsbytes + ("personne_charge_effective_permanente_remplit_titre_I_in"), + cst_personne_charge_effective_$0= + caml_string_of_jsbytes + ("personne_charge_effective_permanente_est_parent_in"), + cst_enfants_in=caml_string_of_jsbytes("enfants_in"), + cst_r_sidence_in=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_prestation_courante_in= + caml_string_of_jsbytes("prestation_courante_in"), + cst_date_courante_in=caml_string_of_jsbytes("date_courante_in"), + cst_r_gime_outre_mer_l751_1= + caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"), + cst_ge_l512_3_2=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"), + cst_conditions_hors_ge= + caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), + cst_droit_ouvert=caml_string_of_jsbytes("droit_ouvert"), + cst_le_plus_g=caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9"), + cst_b_n_ficie_titre_personnel_= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), + cst_a_d_j_ouvert_droit_aux_all= + caml_string_of_jsbytes + ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), + cst_prise_en_charge=caml_string_of_jsbytes("prise_en_charge"), + cst_date_de_naissance=caml_string_of_jsbytes("date_de_naissance"), + cst_r_muneration_mensuelle= + caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), + cst_obligation_scolaire=caml_string_of_jsbytes("obligation_scolaire"), + cst_identifiant=caml_string_of_jsbytes("identifiant"), + cst_d_b_n_ficie_titre_personne= + caml_string_of_jsbytes + ("d_b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), + cst_d_a_d_j_ouvert_droit_aux_a= + caml_string_of_jsbytes + ("d_a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), + cst_d_prise_en_charge=caml_string_of_jsbytes("d_prise_en_charge"), + cst_d_date_de_naissance=caml_string_of_jsbytes("d_date_de_naissance"), + cst_d_r_muneration_mensuelle= + caml_string_of_jsbytes("d_r\xc3\xa9muneration_mensuelle"), + cst_d_identifiant=caml_string_of_jsbytes("d_identifiant"), + cst_i_montant_vers=caml_string_of_jsbytes("i_montant_vers\xc3\xa9"), + cst_montant=caml_string_of_jsbytes("montant"), + cst_brut_horaire=caml_string_of_jsbytes("brut_horaire"), + cst_montant_vers=caml_string_of_jsbytes("montant_vers\xc3\xa9"), + cst_ge_minimum_alin_a_1_l521_3= + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + cst_Guadeloupe=caml_string_of_jsbytes("Guadeloupe"), + cst_Guyane=caml_string_of_jsbytes("Guyane"), + cst_Martinique=caml_string_of_jsbytes("Martinique"), + cst_LaR_union=caml_string_of_jsbytes("LaR\xc3\xa9union"), + cst_SaintBarth_lemy=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"), + cst_SaintMartin=caml_string_of_jsbytes("SaintMartin"), + cst_M_tropole=caml_string_of_jsbytes("M\xc3\xa9tropole"), + cst_SaintPierreEtMiquelon=caml_string_of_jsbytes("SaintPierreEtMiquelon"), + cst_Mayotte=caml_string_of_jsbytes("Mayotte"), + cst_PrestationAccueilJeuneEnfa= + caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), + cst_AllocationsFamiliales=caml_string_of_jsbytes("AllocationsFamiliales"), + cst_Compl_mentFamilial= + caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), + cst_AllocationLogement=caml_string_of_jsbytes("AllocationLogement"), + cst_Allocation_ducationEnfantH= + caml_string_of_jsbytes + ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"), + cst_AllocationSoutienFamilial= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationRentr_eScolaire= + caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"), + cst_AllocationJournali_rePrese= + caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"), + cst_Normal=caml_string_of_jsbytes("Normal"), + cst_AllocationVers_eAuxService= + caml_string_of_jsbytes("AllocationVers\xc3\xa9eAuxServicesSociaux"), + cst_Compl_te=caml_string_of_jsbytes("Compl\xc3\xa8te"), + cst_Partag_e=caml_string_of_jsbytes("Partag\xc3\xa9e"), + cst_Z_ro=caml_string_of_jsbytes("Z\xc3\xa9ro"), + cst_Avant=caml_string_of_jsbytes("Avant"), + cst_Pendant=caml_string_of_jsbytes("Pendant"), + cst_Apr_s=caml_string_of_jsbytes("Apr\xc3\xa8s"), + cst_GardeAltern_ePartageAlloca= + caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"), + cst_GardeAltern_eAllocataireUn= + caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"), + cst_EffectiveEtPermanente=caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_ServicesSociauxAllocationV= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"), + cst_ServicesSociauxAllocationV$0= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"), + cst_The_function_conditions_ho= + caml_string_of_jsbytes + ("The function 'conditions_hors_age' translation isn't yet supported..."), + cst_The_function_droit_ouvert_= + caml_string_of_jsbytes + ("The function 'droit_ouvert' translation isn't yet supported..."), + cst_Guadeloupe$0=caml_string_of_jsbytes("Guadeloupe"), + cst_Guyane$0=caml_string_of_jsbytes("Guyane"), + cst_LaReunion=caml_string_of_jsbytes("LaReunion"), + cst_Martinique$0=caml_string_of_jsbytes("Martinique"), + cst_Mayotte$0=caml_string_of_jsbytes("Mayotte"), + cst_Metropole=caml_string_of_jsbytes("Metropole"), + cst_SaintBarthelemy=caml_string_of_jsbytes("SaintBarthelemy"), + cst_SaintMartin$0=caml_string_of_jsbytes("SaintMartin"), + cst_SaintPierreEtMiquelon$0= + caml_string_of_jsbytes("SaintPierreEtMiquelon"), + cst_AllocationEducationEnfantH= + caml_string_of_jsbytes("AllocationEducationEnfantHandicape"), + cst_AllocationJournalierePrese= + caml_string_of_jsbytes("AllocationJournalierePresenceParentale"), + cst_AllocationLogement$0=caml_string_of_jsbytes("AllocationLogement"), + cst_AllocationRentreeScolaire= + caml_string_of_jsbytes("AllocationRentreeScolaire"), + cst_AllocationSoutienFamilial$0= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationsFamiliales$0= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_ComplementFamilial=caml_string_of_jsbytes("ComplementFamilial"), + cst_PrestationAccueilJeuneEnfa$0= + caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), + cst_AllocationVerseeAuxService= + caml_string_of_jsbytes("AllocationVerseeAuxServicesSociaux"), + cst_Normal$0=caml_string_of_jsbytes("Normal"), + cst_Complete=caml_string_of_jsbytes("Complete"), + cst_Partagee=caml_string_of_jsbytes("Partagee"), + cst_Zero=caml_string_of_jsbytes("Zero"), + cst_Apres=caml_string_of_jsbytes("Apres"), + cst_Avant$0=caml_string_of_jsbytes("Avant"), + cst_Pendant$0=caml_string_of_jsbytes("Pendant"), + cst_EffectiveEtPermanente$0= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_GardeAlterneeAllocataireUn= + caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"), + cst_GardeAlterneePartageAlloca= + caml_string_of_jsbytes("GardeAlterneePartageAllocations"), + cst_ServicesSociauxAllocationV$1= + caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"), + cst_ServicesSociauxAllocationV$2= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVerseeAuxServicesSociaux"), + cst_AllocationsFamilialesLib= + caml_string_of_jsbytes("AllocationsFamilialesLib"), + cst_0$398=caml_string_of_jsbytes("0"), + cst_0$399=caml_string_of_jsbytes("0"), + cst_0$400=caml_string_of_jsbytes("0."), + cst_0$397=caml_string_of_jsbytes("0"), + cst_0$393=caml_string_of_jsbytes("0"), + cst_0$394=caml_string_of_jsbytes("0"), + cst_0$395=caml_string_of_jsbytes("0"), + cst_0$396=caml_string_of_jsbytes("0"), + cst_100$13=caml_string_of_jsbytes("100."), + cst_49$0=caml_string_of_jsbytes("49"), + cst_0_01$1=caml_string_of_jsbytes("0.01"), + cst_0$392=caml_string_of_jsbytes("0"), + cst_1$275=caml_string_of_jsbytes("1"), + cst_1$274=caml_string_of_jsbytes("1"), + cst_0$391=caml_string_of_jsbytes("0"), + cst_1$273=caml_string_of_jsbytes("1"), + cst_3$93=caml_string_of_jsbytes("3"), + cst_0_2$1=caml_string_of_jsbytes("0.2"), + cst_3$94=caml_string_of_jsbytes("3"), + cst_0$390=caml_string_of_jsbytes("0"), + cst_2_4=caml_string_of_jsbytes("2.4"), + cst_3$92=caml_string_of_jsbytes("3"), + cst_0$388=caml_string_of_jsbytes("0"), + cst_0$389=caml_string_of_jsbytes("0"), + cst_100$12=caml_string_of_jsbytes("100."), + cst_49=caml_string_of_jsbytes("49"), + cst_0_01$0=caml_string_of_jsbytes("0.01"), + cst_0$387=caml_string_of_jsbytes("0"), + cst_50$3=caml_string_of_jsbytes("50"), + cst_0$385=caml_string_of_jsbytes("0"), + cst_0$386=caml_string_of_jsbytes("0"), + cst_0$384=caml_string_of_jsbytes("0"), + cst_0$383=caml_string_of_jsbytes("0"), + cst_0$382=caml_string_of_jsbytes("0"), + cst_100$11=caml_string_of_jsbytes("100."), + cst_0_01=caml_string_of_jsbytes("0.01"), + cst_4999=caml_string_of_jsbytes("4999"), + cst_0_75$12=caml_string_of_jsbytes("0.75"), + cst_0_75$11=caml_string_of_jsbytes("0.75"), + cst_0$379=caml_string_of_jsbytes("0"), + cst_158700=caml_string_of_jsbytes("158700"), + cst_191300=caml_string_of_jsbytes("191300"), + cst_1$270=caml_string_of_jsbytes("1"), + cst_205500=caml_string_of_jsbytes("205500"), + cst_2$109=caml_string_of_jsbytes("2"), + cst_211300=caml_string_of_jsbytes("211300"), + cst_3$89=caml_string_of_jsbytes("3"), + cst_217100=caml_string_of_jsbytes("217100"), + cst_4$85=caml_string_of_jsbytes("4"), + cst_222900=caml_string_of_jsbytes("222900"), + cst_5$132=caml_string_of_jsbytes("5"), + cst_228000=caml_string_of_jsbytes("228000"), + cst_5$133=caml_string_of_jsbytes("5"), + cst_19800=caml_string_of_jsbytes("19800"), + cst_228000$0=caml_string_of_jsbytes("228000"), + cst_0$380=caml_string_of_jsbytes("0"), + cst_139300=caml_string_of_jsbytes("139300"), + cst_170600=caml_string_of_jsbytes("170600"), + cst_1$271=caml_string_of_jsbytes("1"), + cst_184700=caml_string_of_jsbytes("184700"), + cst_2$110=caml_string_of_jsbytes("2"), + cst_191200=caml_string_of_jsbytes("191200"), + cst_3$90=caml_string_of_jsbytes("3"), + cst_197700$0=caml_string_of_jsbytes("197700"), + cst_4$86=caml_string_of_jsbytes("4"), + cst_204200=caml_string_of_jsbytes("204200"), + cst_5$134=caml_string_of_jsbytes("5"), + cst_218700=caml_string_of_jsbytes("218700"), + cst_5$135=caml_string_of_jsbytes("5"), + cst_19100$1=caml_string_of_jsbytes("19100"), + cst_218700$0=caml_string_of_jsbytes("218700"), + cst_0$381=caml_string_of_jsbytes("0"), + cst_130600=caml_string_of_jsbytes("130600"), + cst_158400=caml_string_of_jsbytes("158400"), + cst_1$272=caml_string_of_jsbytes("1"), + cst_172600=caml_string_of_jsbytes("172600"), + cst_2$111=caml_string_of_jsbytes("2"), + cst_179800$0=caml_string_of_jsbytes("179800"), + cst_3$91=caml_string_of_jsbytes("3"), + cst_187000=caml_string_of_jsbytes("187000"), + cst_4$87=caml_string_of_jsbytes("4"), + cst_194200=caml_string_of_jsbytes("194200"), + cst_5$136=caml_string_of_jsbytes("5"), + cst_208600$0=caml_string_of_jsbytes("208600"), + cst_5$137=caml_string_of_jsbytes("5"), + cst_18200=caml_string_of_jsbytes("18200"), + cst_208600$1=caml_string_of_jsbytes("208600"), + cst_0$376=caml_string_of_jsbytes("0"), + cst_160400=caml_string_of_jsbytes("160400"), + cst_193400=caml_string_of_jsbytes("193400"), + cst_1$267=caml_string_of_jsbytes("1"), + cst_207800=caml_string_of_jsbytes("207800"), + cst_2$106=caml_string_of_jsbytes("2"), + cst_213700=caml_string_of_jsbytes("213700"), + cst_3$86=caml_string_of_jsbytes("3"), + cst_219600=caml_string_of_jsbytes("219600"), + cst_4$82=caml_string_of_jsbytes("4"), + cst_225500$0=caml_string_of_jsbytes("225500"), + cst_5$126=caml_string_of_jsbytes("5"), + cst_230500$1=caml_string_of_jsbytes("230500"), + cst_5$127=caml_string_of_jsbytes("5"), + cst_20000=caml_string_of_jsbytes("20000"), + cst_230500$2=caml_string_of_jsbytes("230500"), + cst_0$377=caml_string_of_jsbytes("0"), + cst_140800$0=caml_string_of_jsbytes("140800"), + cst_172500$0=caml_string_of_jsbytes("172500"), + cst_1$268=caml_string_of_jsbytes("1"), + cst_186700=caml_string_of_jsbytes("186700"), + cst_2$107=caml_string_of_jsbytes("2"), + cst_193300=caml_string_of_jsbytes("193300"), + cst_3$87=caml_string_of_jsbytes("3"), + cst_199900$1=caml_string_of_jsbytes("199900"), + cst_4$83=caml_string_of_jsbytes("4"), + cst_206500=caml_string_of_jsbytes("206500"), + cst_5$128=caml_string_of_jsbytes("5"), + cst_221100=caml_string_of_jsbytes("221100"), + cst_5$129=caml_string_of_jsbytes("5"), + cst_19300$0=caml_string_of_jsbytes("19300"), + cst_221100$0=caml_string_of_jsbytes("221100"), + cst_0$378=caml_string_of_jsbytes("0"), + cst_132000$0=caml_string_of_jsbytes("132000"), + cst_180100$1=caml_string_of_jsbytes("180100"), + cst_1$269=caml_string_of_jsbytes("1"), + cst_174500=caml_string_of_jsbytes("174500"), + cst_2$108=caml_string_of_jsbytes("2"), + cst_181800$0=caml_string_of_jsbytes("181800"), + cst_3$88=caml_string_of_jsbytes("3"), + cst_189100=caml_string_of_jsbytes("189100"), + cst_4$84=caml_string_of_jsbytes("4"), + cst_196400=caml_string_of_jsbytes("196400"), + cst_5$130=caml_string_of_jsbytes("5"), + cst_210900=caml_string_of_jsbytes("210900"), + cst_5$131=caml_string_of_jsbytes("5"), + cst_18400=caml_string_of_jsbytes("18400"), + cst_210900$0=caml_string_of_jsbytes("210900"), + cst_0$373=caml_string_of_jsbytes("0"), + cst_163300=caml_string_of_jsbytes("163300"), + cst_196900=caml_string_of_jsbytes("196900"), + cst_1$264=caml_string_of_jsbytes("1"), + cst_211600=caml_string_of_jsbytes("211600"), + cst_2$103=caml_string_of_jsbytes("2"), + cst_217600$0=caml_string_of_jsbytes("217600"), + cst_3$83=caml_string_of_jsbytes("3"), + cst_223600=caml_string_of_jsbytes("223600"), + cst_4$79=caml_string_of_jsbytes("4"), + cst_229600=caml_string_of_jsbytes("229600"), + cst_5$120=caml_string_of_jsbytes("5"), + cst_234600=caml_string_of_jsbytes("234600"), + cst_5$121=caml_string_of_jsbytes("5"), + cst_20400=caml_string_of_jsbytes("20400"), + cst_234600$0=caml_string_of_jsbytes("234600"), + cst_0$374=caml_string_of_jsbytes("0"), + cst_143300=caml_string_of_jsbytes("143300"), + cst_175600=caml_string_of_jsbytes("175600"), + cst_1$265=caml_string_of_jsbytes("1"), + cst_190100=caml_string_of_jsbytes("190100"), + cst_2$104=caml_string_of_jsbytes("2"), + cst_196600=caml_string_of_jsbytes("196600"), + cst_3$84=caml_string_of_jsbytes("3"), + cst_203500=caml_string_of_jsbytes("203500"), + cst_4$80=caml_string_of_jsbytes("4"), + cst_210200=caml_string_of_jsbytes("210200"), + cst_5$122=caml_string_of_jsbytes("5"), + cst_225100=caml_string_of_jsbytes("225100"), + cst_5$123=caml_string_of_jsbytes("5"), + cst_19600=caml_string_of_jsbytes("19600"), + cst_225100$0=caml_string_of_jsbytes("225100"), + cst_0$375=caml_string_of_jsbytes("0"), + cst_134400=caml_string_of_jsbytes("134400"), + cst_163000$0=caml_string_of_jsbytes("163000"), + cst_1$266=caml_string_of_jsbytes("1"), + cst_177700=caml_string_of_jsbytes("177700"), + cst_2$105=caml_string_of_jsbytes("2"), + cst_185100=caml_string_of_jsbytes("185100"), + cst_3$85=caml_string_of_jsbytes("3"), + cst_192500$0=caml_string_of_jsbytes("192500"), + cst_4$81=caml_string_of_jsbytes("4"), + cst_199900$0=caml_string_of_jsbytes("199900"), + cst_5$124=caml_string_of_jsbytes("5"), + cst_214700=caml_string_of_jsbytes("214700"), + cst_5$125=caml_string_of_jsbytes("5"), + cst_18700=caml_string_of_jsbytes("18700"), + cst_214700$0=caml_string_of_jsbytes("214700"), + cst_0$370=caml_string_of_jsbytes("0"), + cst_167200=caml_string_of_jsbytes("167200"), + cst_201600=caml_string_of_jsbytes("201600"), + cst_1$261=caml_string_of_jsbytes("1"), + cst_216700=caml_string_of_jsbytes("216700"), + cst_2$100=caml_string_of_jsbytes("2"), + cst_222800=caml_string_of_jsbytes("222800"), + cst_3$80=caml_string_of_jsbytes("3"), + cst_229000=caml_string_of_jsbytes("229000"), + cst_4$76=caml_string_of_jsbytes("4"), + cst_235100=caml_string_of_jsbytes("235100"), + cst_5$114=caml_string_of_jsbytes("5"), + cst_240200=caml_string_of_jsbytes("240200"), + cst_5$115=caml_string_of_jsbytes("5"), + cst_20900$0=caml_string_of_jsbytes("20900"), + cst_240200$0=caml_string_of_jsbytes("240200"), + cst_0$371=caml_string_of_jsbytes("0"), + cst_146700=caml_string_of_jsbytes("146700"), + cst_179800=caml_string_of_jsbytes("179800"), + cst_1$262=caml_string_of_jsbytes("1"), + cst_194700=caml_string_of_jsbytes("194700"), + cst_2$101=caml_string_of_jsbytes("2"), + cst_201500=caml_string_of_jsbytes("201500"), + cst_3$81=caml_string_of_jsbytes("3"), + cst_208400=caml_string_of_jsbytes("208400"), + cst_4$77=caml_string_of_jsbytes("4"), + cst_215200=caml_string_of_jsbytes("215200"), + cst_5$116=caml_string_of_jsbytes("5"), + cst_230500=caml_string_of_jsbytes("230500"), + cst_5$117=caml_string_of_jsbytes("5"), + cst_20100$0=caml_string_of_jsbytes("20100"), + cst_230500$0=caml_string_of_jsbytes("230500"), + cst_0$372=caml_string_of_jsbytes("0"), + cst_137600=caml_string_of_jsbytes("137600"), + cst_166900=caml_string_of_jsbytes("166900"), + cst_1$263=caml_string_of_jsbytes("1"), + cst_182000=caml_string_of_jsbytes("182000"), + cst_2$102=caml_string_of_jsbytes("2"), + cst_189500=caml_string_of_jsbytes("189500"), + cst_3$82=caml_string_of_jsbytes("3"), + cst_197100=caml_string_of_jsbytes("197100"), + cst_4$78=caml_string_of_jsbytes("4"), + cst_204700$0=caml_string_of_jsbytes("204700"), + cst_5$118=caml_string_of_jsbytes("5"), + cst_219900=caml_string_of_jsbytes("219900"), + cst_5$119=caml_string_of_jsbytes("5"), + cst_19100$0=caml_string_of_jsbytes("19100"), + cst_219900$0=caml_string_of_jsbytes("219900"), + cst_0$367=caml_string_of_jsbytes("0"), + cst_167400=caml_string_of_jsbytes("167400"), + cst_201800=caml_string_of_jsbytes("201800"), + cst_1$258=caml_string_of_jsbytes("1"), + cst_216900=caml_string_of_jsbytes("216900"), + cst_2$97=caml_string_of_jsbytes("2"), + cst_223000=caml_string_of_jsbytes("223000"), + cst_3$77=caml_string_of_jsbytes("3"), + cst_229200=caml_string_of_jsbytes("229200"), + cst_4$73=caml_string_of_jsbytes("4"), + cst_235300=caml_string_of_jsbytes("235300"), + cst_5$108=caml_string_of_jsbytes("5"), + cst_240400=caml_string_of_jsbytes("240400"), + cst_5$109=caml_string_of_jsbytes("5"), + cst_20900=caml_string_of_jsbytes("20900"), + cst_240400$0=caml_string_of_jsbytes("240400"), + cst_0$368=caml_string_of_jsbytes("0"), + cst_146800=caml_string_of_jsbytes("146800"), + cst_180000=caml_string_of_jsbytes("180000"), + cst_1$259=caml_string_of_jsbytes("1"), + cst_194900=caml_string_of_jsbytes("194900"), + cst_2$98=caml_string_of_jsbytes("2"), + cst_201700$0=caml_string_of_jsbytes("201700"), + cst_3$78=caml_string_of_jsbytes("3"), + cst_208600=caml_string_of_jsbytes("208600"), + cst_4$74=caml_string_of_jsbytes("4"), + cst_215400=caml_string_of_jsbytes("215400"), + cst_5$110=caml_string_of_jsbytes("5"), + cst_230700=caml_string_of_jsbytes("230700"), + cst_5$111=caml_string_of_jsbytes("5"), + cst_20100=caml_string_of_jsbytes("20100"), + cst_230700$0=caml_string_of_jsbytes("230700"), + cst_0$369=caml_string_of_jsbytes("0"), + cst_137700=caml_string_of_jsbytes("137700"), + cst_167100=caml_string_of_jsbytes("167100"), + cst_1$260=caml_string_of_jsbytes("1"), + cst_182200=caml_string_of_jsbytes("182200"), + cst_2$99=caml_string_of_jsbytes("2"), + cst_189700=caml_string_of_jsbytes("189700"), + cst_3$79=caml_string_of_jsbytes("3"), + cst_197300=caml_string_of_jsbytes("197300"), + cst_4$75=caml_string_of_jsbytes("4"), + cst_204900=caml_string_of_jsbytes("204900"), + cst_5$112=caml_string_of_jsbytes("5"), + cst_220100=caml_string_of_jsbytes("220100"), + cst_5$113=caml_string_of_jsbytes("5"), + cst_19100=caml_string_of_jsbytes("19100"), + cst_220100$0=caml_string_of_jsbytes("220100"), + cst_0$364=caml_string_of_jsbytes("0"), + cst_169100=caml_string_of_jsbytes("169100"), + cst_203800=caml_string_of_jsbytes("203800"), + cst_1$255=caml_string_of_jsbytes("1"), + cst_219100=caml_string_of_jsbytes("219100"), + cst_2$94=caml_string_of_jsbytes("2"), + cst_225200=caml_string_of_jsbytes("225200"), + cst_3$74=caml_string_of_jsbytes("3"), + cst_231500=caml_string_of_jsbytes("231500"), + cst_4$70=caml_string_of_jsbytes("4"), + cst_237700=caml_string_of_jsbytes("237700"), + cst_5$102=caml_string_of_jsbytes("5"), + cst_242800$1=caml_string_of_jsbytes("242800"), + cst_5$103=caml_string_of_jsbytes("5"), + cst_21100=caml_string_of_jsbytes("21100"), + cst_242800$2=caml_string_of_jsbytes("242800"), + cst_0$365=caml_string_of_jsbytes("0"), + cst_148300=caml_string_of_jsbytes("148300"), + cst_181800=caml_string_of_jsbytes("181800"), + cst_1$256=caml_string_of_jsbytes("1"), + cst_196800=caml_string_of_jsbytes("196800"), + cst_2$95=caml_string_of_jsbytes("2"), + cst_203700=caml_string_of_jsbytes("203700"), + cst_3$75=caml_string_of_jsbytes("3"), + cst_210700=caml_string_of_jsbytes("210700"), + cst_4$71=caml_string_of_jsbytes("4"), + cst_217600=caml_string_of_jsbytes("217600"), + cst_5$104=caml_string_of_jsbytes("5"), + cst_233000=caml_string_of_jsbytes("233000"), + cst_5$105=caml_string_of_jsbytes("5"), + cst_20300=caml_string_of_jsbytes("20300"), + cst_233000$0=caml_string_of_jsbytes("233000"), + cst_0$366=caml_string_of_jsbytes("0"), + cst_139100=caml_string_of_jsbytes("139100"), + cst_168800=caml_string_of_jsbytes("168800"), + cst_1$257=caml_string_of_jsbytes("1"), + cst_184000$1=caml_string_of_jsbytes("184000"), + cst_2$96=caml_string_of_jsbytes("2"), + cst_191600=caml_string_of_jsbytes("191600"), + cst_3$76=caml_string_of_jsbytes("3"), + cst_199300=caml_string_of_jsbytes("199300"), + cst_4$72=caml_string_of_jsbytes("4"), + cst_206900=caml_string_of_jsbytes("206900"), + cst_5$106=caml_string_of_jsbytes("5"), + cst_222300=caml_string_of_jsbytes("222300"), + cst_5$107=caml_string_of_jsbytes("5"), + cst_19300=caml_string_of_jsbytes("19300"), + cst_222300$0=caml_string_of_jsbytes("222300"), + cst_0$361=caml_string_of_jsbytes("0"), + cst_171100=caml_string_of_jsbytes("171100"), + cst_206200=caml_string_of_jsbytes("206200"), + cst_1$252=caml_string_of_jsbytes("1"), + cst_221700=caml_string_of_jsbytes("221700"), + cst_2$91=caml_string_of_jsbytes("2"), + cst_227900=caml_string_of_jsbytes("227900"), + cst_3$71=caml_string_of_jsbytes("3"), + cst_234300=caml_string_of_jsbytes("234300"), + cst_4$67=caml_string_of_jsbytes("4"), + cst_240600=caml_string_of_jsbytes("240600"), + cst_5$96=caml_string_of_jsbytes("5"), + cst_245700=caml_string_of_jsbytes("245700"), + cst_5$97=caml_string_of_jsbytes("5"), + cst_21400=caml_string_of_jsbytes("21400"), + cst_245700$0=caml_string_of_jsbytes("245700"), + cst_0$362=caml_string_of_jsbytes("0"), + cst_150100=caml_string_of_jsbytes("150100"), + cst_184000$0=caml_string_of_jsbytes("184000"), + cst_1$253=caml_string_of_jsbytes("1"), + cst_199200=caml_string_of_jsbytes("199200"), + cst_2$92=caml_string_of_jsbytes("2"), + cst_206100=caml_string_of_jsbytes("206100"), + cst_3$72=caml_string_of_jsbytes("3"), + cst_213200=caml_string_of_jsbytes("213200"), + cst_4$68=caml_string_of_jsbytes("4"), + cst_220200=caml_string_of_jsbytes("220200"), + cst_5$98=caml_string_of_jsbytes("5"), + cst_235800=caml_string_of_jsbytes("235800"), + cst_5$99=caml_string_of_jsbytes("5"), + cst_20500=caml_string_of_jsbytes("20500"), + cst_235800$0=caml_string_of_jsbytes("235800"), + cst_0$363=caml_string_of_jsbytes("0"), + cst_140800=caml_string_of_jsbytes("140800"), + cst_170800=caml_string_of_jsbytes("170800"), + cst_1$254=caml_string_of_jsbytes("1"), + cst_186200=caml_string_of_jsbytes("186200"), + cst_2$93=caml_string_of_jsbytes("2"), + cst_193900=caml_string_of_jsbytes("193900"), + cst_3$73=caml_string_of_jsbytes("3"), + cst_201700=caml_string_of_jsbytes("201700"), + cst_4$69=caml_string_of_jsbytes("4"), + cst_209400=caml_string_of_jsbytes("209400"), + cst_5$100=caml_string_of_jsbytes("5"), + cst_225000=caml_string_of_jsbytes("225000"), + cst_5$101=caml_string_of_jsbytes("5"), + cst_19500=caml_string_of_jsbytes("19500"), + cst_225000$0=caml_string_of_jsbytes("225000"), + cst_0$358=caml_string_of_jsbytes("0"), + cst_26084=caml_string_of_jsbytes("26084"), + cst_31435=caml_string_of_jsbytes("31435"), + cst_1$249=caml_string_of_jsbytes("1"), + cst_33798=caml_string_of_jsbytes("33798"), + cst_2$88=caml_string_of_jsbytes("2"), + cst_34743=caml_string_of_jsbytes("34743"), + cst_3$68=caml_string_of_jsbytes("3"), + cst_35719=caml_string_of_jsbytes("35719"), + cst_4$64=caml_string_of_jsbytes("4"), + cst_36679=caml_string_of_jsbytes("36679"), + cst_5$90=caml_string_of_jsbytes("5"), + cst_37457=caml_string_of_jsbytes("37457"), + cst_5$91=caml_string_of_jsbytes("5"), + cst_3262=caml_string_of_jsbytes("3262"), + cst_37457$0=caml_string_of_jsbytes("37457"), + cst_0$359=caml_string_of_jsbytes("0"), + cst_22883=caml_string_of_jsbytes("22883"), + cst_28051=caml_string_of_jsbytes("28051"), + cst_1$250=caml_string_of_jsbytes("1"), + cst_30368=caml_string_of_jsbytes("30368"), + cst_2$89=caml_string_of_jsbytes("2"), + cst_31420=caml_string_of_jsbytes("31420"), + cst_3$69=caml_string_of_jsbytes("3"), + cst_32502=caml_string_of_jsbytes("32502"), + cst_4$65=caml_string_of_jsbytes("4"), + cst_33569=caml_string_of_jsbytes("33569"), + cst_5$92=caml_string_of_jsbytes("5"), + cst_35947=caml_string_of_jsbytes("35947"), + cst_5$93=caml_string_of_jsbytes("5"), + cst_3125=caml_string_of_jsbytes("3125"), + cst_35947$0=caml_string_of_jsbytes("35947"), + cst_0$360=caml_string_of_jsbytes("0"), + cst_21465=caml_string_of_jsbytes("21465"), + cst_26038=caml_string_of_jsbytes("26038"), + cst_1$251=caml_string_of_jsbytes("1"), + cst_28386=caml_string_of_jsbytes("28386"), + cst_2$90=caml_string_of_jsbytes("2"), + cst_29560=caml_string_of_jsbytes("29560"), + cst_3$70=caml_string_of_jsbytes("3"), + cst_30749=caml_string_of_jsbytes("30749"), + cst_4$66=caml_string_of_jsbytes("4"), + cst_31923=caml_string_of_jsbytes("31923"), + cst_5$94=caml_string_of_jsbytes("5"), + cst_34301=caml_string_of_jsbytes("34301"), + cst_5$95=caml_string_of_jsbytes("5"), + cst_2973=caml_string_of_jsbytes("2973"), + cst_34301$0=caml_string_of_jsbytes("34301"), + cst_0$355=caml_string_of_jsbytes("0"), + cst_26397=caml_string_of_jsbytes("26397"), + cst_31812=caml_string_of_jsbytes("31812"), + cst_1$246=caml_string_of_jsbytes("1"), + cst_34204=caml_string_of_jsbytes("34204"), + cst_2$85=caml_string_of_jsbytes("2"), + cst_35160=caml_string_of_jsbytes("35160"), + cst_3$65=caml_string_of_jsbytes("3"), + cst_36148=caml_string_of_jsbytes("36148"), + cst_4$61=caml_string_of_jsbytes("4"), + cst_37119=caml_string_of_jsbytes("37119"), + cst_5$84=caml_string_of_jsbytes("5"), + cst_37906=caml_string_of_jsbytes("37906"), + cst_5$85=caml_string_of_jsbytes("5"), + cst_3301=caml_string_of_jsbytes("3301"), + cst_37906$0=caml_string_of_jsbytes("37906"), + cst_0$356=caml_string_of_jsbytes("0"), + cst_23158=caml_string_of_jsbytes("23158"), + cst_28388=caml_string_of_jsbytes("28388"), + cst_1$247=caml_string_of_jsbytes("1"), + cst_30732=caml_string_of_jsbytes("30732"), + cst_2$86=caml_string_of_jsbytes("2"), + cst_31797$2=caml_string_of_jsbytes("31797"), + cst_3$66=caml_string_of_jsbytes("3"), + cst_32892=caml_string_of_jsbytes("32892"), + cst_4$62=caml_string_of_jsbytes("4"), + cst_33972=caml_string_of_jsbytes("33972"), + cst_5$86=caml_string_of_jsbytes("5"), + cst_36378=caml_string_of_jsbytes("36378"), + cst_5$87=caml_string_of_jsbytes("5"), + cst_3163=caml_string_of_jsbytes("3163"), + cst_36378$0=caml_string_of_jsbytes("36378"), + cst_0$357=caml_string_of_jsbytes("0"), + cst_21723=caml_string_of_jsbytes("21723"), + cst_26350=caml_string_of_jsbytes("26350"), + cst_1$248=caml_string_of_jsbytes("1"), + cst_28727=caml_string_of_jsbytes("28727"), + cst_2$87=caml_string_of_jsbytes("2"), + cst_29915=caml_string_of_jsbytes("29915"), + cst_3$67=caml_string_of_jsbytes("3"), + cst_31118=caml_string_of_jsbytes("31118"), + cst_4$63=caml_string_of_jsbytes("4"), + cst_32306=caml_string_of_jsbytes("32306"), + cst_5$88=caml_string_of_jsbytes("5"), + cst_34713=caml_string_of_jsbytes("34713"), + cst_5$89=caml_string_of_jsbytes("5"), + cst_3009=caml_string_of_jsbytes("3009"), + cst_34713$0=caml_string_of_jsbytes("34713"), + cst_0$352=caml_string_of_jsbytes("0"), + cst_26714$0=caml_string_of_jsbytes("26714"), + cst_32194=caml_string_of_jsbytes("32194"), + cst_1$243=caml_string_of_jsbytes("1"), + cst_34614=caml_string_of_jsbytes("34614"), + cst_2$82=caml_string_of_jsbytes("2"), + cst_35582=caml_string_of_jsbytes("35582"), + cst_3$62=caml_string_of_jsbytes("3"), + cst_36582=caml_string_of_jsbytes("36582"), + cst_4$58=caml_string_of_jsbytes("4"), + cst_37564=caml_string_of_jsbytes("37564"), + cst_5$78=caml_string_of_jsbytes("5"), + cst_38361=caml_string_of_jsbytes("38361"), + cst_5$79=caml_string_of_jsbytes("5"), + cst_3341=caml_string_of_jsbytes("3341"), + cst_38361$0=caml_string_of_jsbytes("38361"), + cst_0$353=caml_string_of_jsbytes("0"), + cst_23436=caml_string_of_jsbytes("23436"), + cst_28729=caml_string_of_jsbytes("28729"), + cst_1$244=caml_string_of_jsbytes("1"), + cst_31101=caml_string_of_jsbytes("31101"), + cst_2$83=caml_string_of_jsbytes("2"), + cst_32179=caml_string_of_jsbytes("32179"), + cst_3$63=caml_string_of_jsbytes("3"), + cst_33287=caml_string_of_jsbytes("33287"), + cst_4$59=caml_string_of_jsbytes("4"), + cst_34380=caml_string_of_jsbytes("34380"), + cst_5$80=caml_string_of_jsbytes("5"), + cst_36815=caml_string_of_jsbytes("36815"), + cst_5$81=caml_string_of_jsbytes("5"), + cst_3201=caml_string_of_jsbytes("3201"), + cst_36815$0=caml_string_of_jsbytes("36815"), + cst_0$354=caml_string_of_jsbytes("0"), + cst_21984=caml_string_of_jsbytes("21984"), + cst_26666=caml_string_of_jsbytes("26666"), + cst_1$245=caml_string_of_jsbytes("1"), + cst_29072=caml_string_of_jsbytes("29072"), + cst_2$84=caml_string_of_jsbytes("2"), + cst_30274=caml_string_of_jsbytes("30274"), + cst_3$64=caml_string_of_jsbytes("3"), + cst_31491=caml_string_of_jsbytes("31491"), + cst_4$60=caml_string_of_jsbytes("4"), + cst_32694=caml_string_of_jsbytes("32694"), + cst_5$82=caml_string_of_jsbytes("5"), + cst_35130=caml_string_of_jsbytes("35130"), + cst_5$83=caml_string_of_jsbytes("5"), + cst_3045=caml_string_of_jsbytes("3045"), + cst_35130$0=caml_string_of_jsbytes("35130"), + cst_0$349=caml_string_of_jsbytes("0"), + cst_27195=caml_string_of_jsbytes("27195"), + cst_32773=caml_string_of_jsbytes("32773"), + cst_1$240=caml_string_of_jsbytes("1"), + cst_35237=caml_string_of_jsbytes("35237"), + cst_2$79=caml_string_of_jsbytes("2"), + cst_36222=caml_string_of_jsbytes("36222"), + cst_3$59=caml_string_of_jsbytes("3"), + cst_37240=caml_string_of_jsbytes("37240"), + cst_4$55=caml_string_of_jsbytes("4"), + cst_38240=caml_string_of_jsbytes("38240"), + cst_5$72=caml_string_of_jsbytes("5"), + cst_39051=caml_string_of_jsbytes("39051"), + cst_5$73=caml_string_of_jsbytes("5"), + cst_3401=caml_string_of_jsbytes("3401"), + cst_39051$0=caml_string_of_jsbytes("39051"), + cst_0$350=caml_string_of_jsbytes("0"), + cst_23858=caml_string_of_jsbytes("23858"), + cst_29246=caml_string_of_jsbytes("29246"), + cst_1$241=caml_string_of_jsbytes("1"), + cst_31661=caml_string_of_jsbytes("31661"), + cst_2$80=caml_string_of_jsbytes("2"), + cst_32758=caml_string_of_jsbytes("32758"), + cst_3$60=caml_string_of_jsbytes("3"), + cst_33886=caml_string_of_jsbytes("33886"), + cst_4$56=caml_string_of_jsbytes("4"), + cst_34999=caml_string_of_jsbytes("34999"), + cst_5$74=caml_string_of_jsbytes("5"), + cst_37478=caml_string_of_jsbytes("37478"), + cst_5$75=caml_string_of_jsbytes("5"), + cst_3259=caml_string_of_jsbytes("3259"), + cst_37478$0=caml_string_of_jsbytes("37478"), + cst_0$351=caml_string_of_jsbytes("0"), + cst_22380=caml_string_of_jsbytes("22380"), + cst_27146=caml_string_of_jsbytes("27146"), + cst_1$242=caml_string_of_jsbytes("1"), + cst_29595=caml_string_of_jsbytes("29595"), + cst_2$81=caml_string_of_jsbytes("2"), + cst_30819=caml_string_of_jsbytes("30819"), + cst_3$61=caml_string_of_jsbytes("3"), + cst_32058=caml_string_of_jsbytes("32058"), + cst_4$57=caml_string_of_jsbytes("4"), + cst_33282=caml_string_of_jsbytes("33282"), + cst_5$76=caml_string_of_jsbytes("5"), + cst_35762=caml_string_of_jsbytes("35762"), + cst_5$77=caml_string_of_jsbytes("5"), + cst_3100=caml_string_of_jsbytes("3100"), + cst_35762$0=caml_string_of_jsbytes("35762"), + cst_0$346=caml_string_of_jsbytes("0"), + cst_27956=caml_string_of_jsbytes("27956"), + cst_33691=caml_string_of_jsbytes("33691"), + cst_1$237=caml_string_of_jsbytes("1"), + cst_36224=caml_string_of_jsbytes("36224"), + cst_2$76=caml_string_of_jsbytes("2"), + cst_37236=caml_string_of_jsbytes("37236"), + cst_3$56=caml_string_of_jsbytes("3"), + cst_38283=caml_string_of_jsbytes("38283"), + cst_4$52=caml_string_of_jsbytes("4"), + cst_39311=caml_string_of_jsbytes("39311"), + cst_5$66=caml_string_of_jsbytes("5"), + cst_40144=caml_string_of_jsbytes("40144"), + cst_5$67=caml_string_of_jsbytes("5"), + cst_3496=caml_string_of_jsbytes("3496"), + cst_40144$0=caml_string_of_jsbytes("40144"), + cst_0$347=caml_string_of_jsbytes("0"), + cst_24526=caml_string_of_jsbytes("24526"), + cst_30065=caml_string_of_jsbytes("30065"), + cst_1$238=caml_string_of_jsbytes("1"), + cst_32548=caml_string_of_jsbytes("32548"), + cst_2$77=caml_string_of_jsbytes("2"), + cst_33675=caml_string_of_jsbytes("33675"), + cst_3$57=caml_string_of_jsbytes("3"), + cst_34865$0=caml_string_of_jsbytes("34865"), + cst_4$53=caml_string_of_jsbytes("4"), + cst_35979=caml_string_of_jsbytes("35979"), + cst_5$68=caml_string_of_jsbytes("5"), + cst_38527=caml_string_of_jsbytes("38527"), + cst_5$69=caml_string_of_jsbytes("5"), + cst_3350=caml_string_of_jsbytes("3350"), + cst_38527$0=caml_string_of_jsbytes("38527"), + cst_0$348=caml_string_of_jsbytes("0"), + cst_23007=caml_string_of_jsbytes("23007"), + cst_27906=caml_string_of_jsbytes("27906"), + cst_1$239=caml_string_of_jsbytes("1"), + cst_30424=caml_string_of_jsbytes("30424"), + cst_2$78=caml_string_of_jsbytes("2"), + cst_31682=caml_string_of_jsbytes("31682"), + cst_3$58=caml_string_of_jsbytes("3"), + cst_32956$0=caml_string_of_jsbytes("32956"), + cst_4$54=caml_string_of_jsbytes("4"), + cst_34214=caml_string_of_jsbytes("34214"), + cst_5$70=caml_string_of_jsbytes("5"), + cst_36733=caml_string_of_jsbytes("36733"), + cst_5$71=caml_string_of_jsbytes("5"), + cst_3187=caml_string_of_jsbytes("3187"), + cst_36733$0=caml_string_of_jsbytes("36733"), + cst_0$343=caml_string_of_jsbytes("0"), + cst_28728=caml_string_of_jsbytes("28728"), + cst_34621=caml_string_of_jsbytes("34621"), + cst_1$234=caml_string_of_jsbytes("1"), + cst_37224=caml_string_of_jsbytes("37224"), + cst_2$73=caml_string_of_jsbytes("2"), + cst_38264=caml_string_of_jsbytes("38264"), + cst_3$53=caml_string_of_jsbytes("3"), + cst_39340$0=caml_string_of_jsbytes("39340"), + cst_4$49=caml_string_of_jsbytes("4"), + cst_40396=caml_string_of_jsbytes("40396"), + cst_5$60=caml_string_of_jsbytes("5"), + cst_41252=caml_string_of_jsbytes("41252"), + cst_5$61=caml_string_of_jsbytes("5"), + cst_3592=caml_string_of_jsbytes("3592"), + cst_41252$0=caml_string_of_jsbytes("41252"), + cst_0$344=caml_string_of_jsbytes("0"), + cst_25203=caml_string_of_jsbytes("25203"), + cst_30895=caml_string_of_jsbytes("30895"), + cst_1$235=caml_string_of_jsbytes("1"), + cst_33446=caml_string_of_jsbytes("33446"), + cst_2$74=caml_string_of_jsbytes("2"), + cst_34604=caml_string_of_jsbytes("34604"), + cst_3$54=caml_string_of_jsbytes("3"), + cst_35796=caml_string_of_jsbytes("35796"), + cst_4$50=caml_string_of_jsbytes("4"), + cst_36972=caml_string_of_jsbytes("36972"), + cst_5$62=caml_string_of_jsbytes("5"), + cst_39590=caml_string_of_jsbytes("39590"), + cst_5$63=caml_string_of_jsbytes("5"), + cst_3442=caml_string_of_jsbytes("3442"), + cst_39590$0=caml_string_of_jsbytes("39590"), + cst_0$345=caml_string_of_jsbytes("0"), + cst_23642=caml_string_of_jsbytes("23642"), + cst_28676=caml_string_of_jsbytes("28676"), + cst_1$236=caml_string_of_jsbytes("1"), + cst_31264$0=caml_string_of_jsbytes("31264"), + cst_2$75=caml_string_of_jsbytes("2"), + cst_32556=caml_string_of_jsbytes("32556"), + cst_3$55=caml_string_of_jsbytes("3"), + cst_33866=caml_string_of_jsbytes("33866"), + cst_4$51=caml_string_of_jsbytes("4"), + cst_35158=caml_string_of_jsbytes("35158"), + cst_5$64=caml_string_of_jsbytes("5"), + cst_37778=caml_string_of_jsbytes("37778"), + cst_5$65=caml_string_of_jsbytes("5"), + cst_3275=caml_string_of_jsbytes("3275"), + cst_37778$0=caml_string_of_jsbytes("37778"), + cst_0$340=caml_string_of_jsbytes("0"), + cst_29575=caml_string_of_jsbytes("29575"), + cst_35642=caml_string_of_jsbytes("35642"), + cst_1$231=caml_string_of_jsbytes("1"), + cst_38322=caml_string_of_jsbytes("38322"), + cst_2$70=caml_string_of_jsbytes("2"), + cst_39393=caml_string_of_jsbytes("39393"), + cst_3$50=caml_string_of_jsbytes("3"), + cst_40501=caml_string_of_jsbytes("40501"), + cst_4$46=caml_string_of_jsbytes("4"), + cst_41588=caml_string_of_jsbytes("41588"), + cst_5$54=caml_string_of_jsbytes("5"), + cst_42469=caml_string_of_jsbytes("42469"), + cst_5$55=caml_string_of_jsbytes("5"), + cst_3698=caml_string_of_jsbytes("3698"), + cst_42469$0=caml_string_of_jsbytes("42469"), + cst_0$341=caml_string_of_jsbytes("0"), + cst_25946=caml_string_of_jsbytes("25946"), + cst_31806=caml_string_of_jsbytes("31806"), + cst_1$232=caml_string_of_jsbytes("1"), + cst_34433=caml_string_of_jsbytes("34433"), + cst_2$71=caml_string_of_jsbytes("2"), + cst_35625=caml_string_of_jsbytes("35625"), + cst_3$51=caml_string_of_jsbytes("3"), + cst_36852=caml_string_of_jsbytes("36852"), + cst_4$47=caml_string_of_jsbytes("4"), + cst_38063=caml_string_of_jsbytes("38063"), + cst_5$56=caml_string_of_jsbytes("5"), + cst_40758=caml_string_of_jsbytes("40758"), + cst_5$57=caml_string_of_jsbytes("5"), + cst_3544=caml_string_of_jsbytes("3544"), + cst_40758$0=caml_string_of_jsbytes("40758"), + cst_0$342=caml_string_of_jsbytes("0"), + cst_24339=caml_string_of_jsbytes("24339"), + cst_29522=caml_string_of_jsbytes("29522"), + cst_1$233=caml_string_of_jsbytes("1"), + cst_32186=caml_string_of_jsbytes("32186"), + cst_2$72=caml_string_of_jsbytes("2"), + cst_33516=caml_string_of_jsbytes("33516"), + cst_3$52=caml_string_of_jsbytes("3"), + cst_34865=caml_string_of_jsbytes("34865"), + cst_4$48=caml_string_of_jsbytes("4"), + cst_36195=caml_string_of_jsbytes("36195"), + cst_5$58=caml_string_of_jsbytes("5"), + cst_38892=caml_string_of_jsbytes("38892"), + cst_5$59=caml_string_of_jsbytes("5"), + cst_3372=caml_string_of_jsbytes("3372"), + cst_38892$0=caml_string_of_jsbytes("38892"), + cst_0$337=caml_string_of_jsbytes("0"), + cst_29670=caml_string_of_jsbytes("29670"), + cst_35757=caml_string_of_jsbytes("35757"), + cst_1$228=caml_string_of_jsbytes("1"), + cst_38445=caml_string_of_jsbytes("38445"), + cst_2$67=caml_string_of_jsbytes("2"), + cst_39519=caml_string_of_jsbytes("39519"), + cst_3$47=caml_string_of_jsbytes("3"), + cst_40601=caml_string_of_jsbytes("40601"), + cst_4$43=caml_string_of_jsbytes("4"), + cst_41721=caml_string_of_jsbytes("41721"), + cst_5$48=caml_string_of_jsbytes("5"), + cst_42605=caml_string_of_jsbytes("42605"), + cst_5$49=caml_string_of_jsbytes("5"), + cst_3710=caml_string_of_jsbytes("3710"), + cst_42605$0=caml_string_of_jsbytes("42605"), + cst_0$338=caml_string_of_jsbytes("0"), + cst_26029=caml_string_of_jsbytes("26029"), + cst_31908=caml_string_of_jsbytes("31908"), + cst_1$229=caml_string_of_jsbytes("1"), + cst_34643=caml_string_of_jsbytes("34643"), + cst_2$68=caml_string_of_jsbytes("2"), + cst_35739=caml_string_of_jsbytes("35739"), + cst_3$48=caml_string_of_jsbytes("3"), + cst_36970=caml_string_of_jsbytes("36970"), + cst_4$44=caml_string_of_jsbytes("4"), + cst_38185=caml_string_of_jsbytes("38185"), + cst_5$50=caml_string_of_jsbytes("5"), + cst_40888=caml_string_of_jsbytes("40888"), + cst_5$51=caml_string_of_jsbytes("5"), + cst_3555=caml_string_of_jsbytes("3555"), + cst_40888$0=caml_string_of_jsbytes("40888"), + cst_0$339=caml_string_of_jsbytes("0"), + cst_24417=caml_string_of_jsbytes("24417"), + cst_29616=caml_string_of_jsbytes("29616"), + cst_1$230=caml_string_of_jsbytes("1"), + cst_32289=caml_string_of_jsbytes("32289"), + cst_2$69=caml_string_of_jsbytes("2"), + cst_33623$0=caml_string_of_jsbytes("33623"), + cst_3$49=caml_string_of_jsbytes("3"), + cst_34977=caml_string_of_jsbytes("34977"), + cst_4$45=caml_string_of_jsbytes("4"), + cst_36311=caml_string_of_jsbytes("36311"), + cst_5$52=caml_string_of_jsbytes("5"), + cst_39016=caml_string_of_jsbytes("39016"), + cst_5$53=caml_string_of_jsbytes("5"), + cst_3383=caml_string_of_jsbytes("3383"), + cst_39016$0=caml_string_of_jsbytes("39016"), + cst_0$334=caml_string_of_jsbytes("0"), + cst_29996=caml_string_of_jsbytes("29996"), + cst_36149=caml_string_of_jsbytes("36149"), + cst_1$225=caml_string_of_jsbytes("1"), + cst_38868=caml_string_of_jsbytes("38868"), + cst_2$64=caml_string_of_jsbytes("2"), + cst_39954=caml_string_of_jsbytes("39954"), + cst_3$44=caml_string_of_jsbytes("3"), + cst_41078=caml_string_of_jsbytes("41078"), + cst_4$40=caml_string_of_jsbytes("4"), + cst_42180=caml_string_of_jsbytes("42180"), + cst_5$42=caml_string_of_jsbytes("5"), + cst_43074=caml_string_of_jsbytes("43074"), + cst_5$43=caml_string_of_jsbytes("5"), + cst_3751=caml_string_of_jsbytes("3751"), + cst_43074$0=caml_string_of_jsbytes("43074"), + cst_0$335=caml_string_of_jsbytes("0"), + cst_26315=caml_string_of_jsbytes("26315"), + cst_32259=caml_string_of_jsbytes("32259"), + cst_1$226=caml_string_of_jsbytes("1"), + cst_34923=caml_string_of_jsbytes("34923"), + cst_2$65=caml_string_of_jsbytes("2"), + cst_36132=caml_string_of_jsbytes("36132"), + cst_3$45=caml_string_of_jsbytes("3"), + cst_37373=caml_string_of_jsbytes("37373"), + cst_4$41=caml_string_of_jsbytes("4"), + cst_38605=caml_string_of_jsbytes("38605"), + cst_5$44=caml_string_of_jsbytes("5"), + cst_41338=caml_string_of_jsbytes("41338"), + cst_5$45=caml_string_of_jsbytes("5"), + cst_3594=caml_string_of_jsbytes("3594"), + cst_41338$0=caml_string_of_jsbytes("41338"), + cst_0$336=caml_string_of_jsbytes("0"), + cst_24686=caml_string_of_jsbytes("24686"), + cst_29942=caml_string_of_jsbytes("29942"), + cst_1$227=caml_string_of_jsbytes("1"), + cst_32644=caml_string_of_jsbytes("32644"), + cst_2$66=caml_string_of_jsbytes("2"), + cst_33993=caml_string_of_jsbytes("33993"), + cst_3$46=caml_string_of_jsbytes("3"), + cst_35362=caml_string_of_jsbytes("35362"), + cst_4$42=caml_string_of_jsbytes("4"), + cst_36710=caml_string_of_jsbytes("36710"), + cst_5$46=caml_string_of_jsbytes("5"), + cst_39445=caml_string_of_jsbytes("39445"), + cst_5$47=caml_string_of_jsbytes("5"), + cst_3420=caml_string_of_jsbytes("3420"), + cst_39445$0=caml_string_of_jsbytes("39445"), + cst_0$331=caml_string_of_jsbytes("0"), + cst_30296=caml_string_of_jsbytes("30296"), + cst_36510=caml_string_of_jsbytes("36510"), + cst_1$222=caml_string_of_jsbytes("1"), + cst_39257=caml_string_of_jsbytes("39257"), + cst_2$61=caml_string_of_jsbytes("2"), + cst_40354=caml_string_of_jsbytes("40354"), + cst_3$41=caml_string_of_jsbytes("3"), + cst_41489=caml_string_of_jsbytes("41489"), + cst_4$37=caml_string_of_jsbytes("4"), + cst_42602=caml_string_of_jsbytes("42602"), + cst_5$36=caml_string_of_jsbytes("5"), + cst_43505=caml_string_of_jsbytes("43505"), + cst_5$37=caml_string_of_jsbytes("5"), + cst_3789=caml_string_of_jsbytes("3789"), + cst_43505$0=caml_string_of_jsbytes("43505"), + cst_0$332=caml_string_of_jsbytes("0"), + cst_26578=caml_string_of_jsbytes("26578"), + cst_32582=caml_string_of_jsbytes("32582"), + cst_1$223=caml_string_of_jsbytes("1"), + cst_35272=caml_string_of_jsbytes("35272"), + cst_2$62=caml_string_of_jsbytes("2"), + cst_36493=caml_string_of_jsbytes("36493"), + cst_3$42=caml_string_of_jsbytes("3"), + cst_37751=caml_string_of_jsbytes("37751"), + cst_4$38=caml_string_of_jsbytes("4"), + cst_38991=caml_string_of_jsbytes("38991"), + cst_5$38=caml_string_of_jsbytes("5"), + cst_41751=caml_string_of_jsbytes("41751"), + cst_5$39=caml_string_of_jsbytes("5"), + cst_3630=caml_string_of_jsbytes("3630"), + cst_41751$0=caml_string_of_jsbytes("41751"), + cst_0$333=caml_string_of_jsbytes("0"), + cst_24933=caml_string_of_jsbytes("24933"), + cst_30241=caml_string_of_jsbytes("30241"), + cst_1$224=caml_string_of_jsbytes("1"), + cst_32970=caml_string_of_jsbytes("32970"), + cst_2$63=caml_string_of_jsbytes("2"), + cst_34333=caml_string_of_jsbytes("34333"), + cst_3$43=caml_string_of_jsbytes("3"), + cst_35716=caml_string_of_jsbytes("35716"), + cst_4$39=caml_string_of_jsbytes("4"), + cst_37077=caml_string_of_jsbytes("37077"), + cst_5$40=caml_string_of_jsbytes("5"), + cst_39839=caml_string_of_jsbytes("39839"), + cst_5$41=caml_string_of_jsbytes("5"), + cst_3454=caml_string_of_jsbytes("3454"), + cst_39839$0=caml_string_of_jsbytes("39839"), + cst_0$328=caml_string_of_jsbytes("0"), + cst_30947=caml_string_of_jsbytes("30947"), + cst_37295=caml_string_of_jsbytes("37295"), + cst_1$219=caml_string_of_jsbytes("1"), + cst_40101=caml_string_of_jsbytes("40101"), + cst_2$58=caml_string_of_jsbytes("2"), + cst_41222=caml_string_of_jsbytes("41222"), + cst_3$38=caml_string_of_jsbytes("3"), + cst_42381=caml_string_of_jsbytes("42381"), + cst_4$34=caml_string_of_jsbytes("4"), + cst_43518=caml_string_of_jsbytes("43518"), + cst_5$30=caml_string_of_jsbytes("5"), + cst_44440=caml_string_of_jsbytes("44440"), + cst_5$31=caml_string_of_jsbytes("5"), + cst_3870=caml_string_of_jsbytes("3870"), + cst_44440$0=caml_string_of_jsbytes("44440"), + cst_0$329=caml_string_of_jsbytes("0"), + cst_27149=caml_string_of_jsbytes("27149"), + cst_33283=caml_string_of_jsbytes("33283"), + cst_1$220=caml_string_of_jsbytes("1"), + cst_36030=caml_string_of_jsbytes("36030"), + cst_2$59=caml_string_of_jsbytes("2"), + cst_37278=caml_string_of_jsbytes("37278"), + cst_3$39=caml_string_of_jsbytes("3"), + cst_38563=caml_string_of_jsbytes("38563"), + cst_4$35=caml_string_of_jsbytes("4"), + cst_39829=caml_string_of_jsbytes("39829"), + cst_5$32=caml_string_of_jsbytes("5"), + cst_42649=caml_string_of_jsbytes("42649"), + cst_5$33=caml_string_of_jsbytes("5"), + cst_3708=caml_string_of_jsbytes("3708"), + cst_42659=caml_string_of_jsbytes("42659"), + cst_0$330=caml_string_of_jsbytes("0"), + cst_25469=caml_string_of_jsbytes("25469"), + cst_30891=caml_string_of_jsbytes("30891"), + cst_1$221=caml_string_of_jsbytes("1"), + cst_33679=caml_string_of_jsbytes("33679"), + cst_2$60=caml_string_of_jsbytes("2"), + cst_35071=caml_string_of_jsbytes("35071"), + cst_3$40=caml_string_of_jsbytes("3"), + cst_36484=caml_string_of_jsbytes("36484"), + cst_4$36=caml_string_of_jsbytes("4"), + cst_37874=caml_string_of_jsbytes("37874"), + cst_5$34=caml_string_of_jsbytes("5"), + cst_40696=caml_string_of_jsbytes("40696"), + cst_5$35=caml_string_of_jsbytes("5"), + cst_3528=caml_string_of_jsbytes("3528"), + cst_40696$0=caml_string_of_jsbytes("40696"), + cst_0$325=caml_string_of_jsbytes("0"), + cst_31123=caml_string_of_jsbytes("31123"), + cst_37508=caml_string_of_jsbytes("37508"), + cst_1$216=caml_string_of_jsbytes("1"), + cst_40330=caml_string_of_jsbytes("40330"), + cst_2$55=caml_string_of_jsbytes("2"), + cst_41457=caml_string_of_jsbytes("41457"), + cst_3$35=caml_string_of_jsbytes("3"), + cst_42623=caml_string_of_jsbytes("42623"), + cst_4$31=caml_string_of_jsbytes("4"), + cst_43766=caml_string_of_jsbytes("43766"), + cst_5$24=caml_string_of_jsbytes("5"), + cst_44693=caml_string_of_jsbytes("44693"), + cst_5$25=caml_string_of_jsbytes("5"), + cst_3892=caml_string_of_jsbytes("3892"), + cst_44693$0=caml_string_of_jsbytes("44693"), + cst_0$326=caml_string_of_jsbytes("0"), + cst_27304=caml_string_of_jsbytes("27304"), + cst_33473=caml_string_of_jsbytes("33473"), + cst_1$217=caml_string_of_jsbytes("1"), + cst_36235=caml_string_of_jsbytes("36235"), + cst_2$56=caml_string_of_jsbytes("2"), + cst_37490=caml_string_of_jsbytes("37490"), + cst_3$36=caml_string_of_jsbytes("3"), + cst_38783=caml_string_of_jsbytes("38783"), + cst_4$32=caml_string_of_jsbytes("4"), + cst_40056=caml_string_of_jsbytes("40056"), + cst_5$26=caml_string_of_jsbytes("5"), + cst_42892=caml_string_of_jsbytes("42892"), + cst_5$27=caml_string_of_jsbytes("5"), + cst_3729=caml_string_of_jsbytes("3729"), + cst_42892$0=caml_string_of_jsbytes("42892"), + cst_0$327=caml_string_of_jsbytes("0"), + cst_25614=caml_string_of_jsbytes("25614"), + cst_31067=caml_string_of_jsbytes("31067"), + cst_1$218=caml_string_of_jsbytes("1"), + cst_33871=caml_string_of_jsbytes("33871"), + cst_2$57=caml_string_of_jsbytes("2"), + cst_35271=caml_string_of_jsbytes("35271"), + cst_3$37=caml_string_of_jsbytes("3"), + cst_36692=caml_string_of_jsbytes("36692"), + cst_4$33=caml_string_of_jsbytes("4"), + cst_38090=caml_string_of_jsbytes("38090"), + cst_5$28=caml_string_of_jsbytes("5"), + cst_40928=caml_string_of_jsbytes("40928"), + cst_5$29=caml_string_of_jsbytes("5"), + cst_3548=caml_string_of_jsbytes("3548"), + cst_40928$0=caml_string_of_jsbytes("40928"), + cst_0$322=caml_string_of_jsbytes("0"), + cst_31148=caml_string_of_jsbytes("31148"), + cst_37538=caml_string_of_jsbytes("37538"), + cst_1$213=caml_string_of_jsbytes("1"), + cst_40362=caml_string_of_jsbytes("40362"), + cst_2$52=caml_string_of_jsbytes("2"), + cst_41490=caml_string_of_jsbytes("41490"), + cst_3$32=caml_string_of_jsbytes("3"), + cst_42657=caml_string_of_jsbytes("42657"), + cst_4$28=caml_string_of_jsbytes("4"), + cst_43801=caml_string_of_jsbytes("43801"), + cst_5$18=caml_string_of_jsbytes("5"), + cst_44729=caml_string_of_jsbytes("44729"), + cst_5$19=caml_string_of_jsbytes("5"), + cst_3895=caml_string_of_jsbytes("3895"), + cst_44729$0=caml_string_of_jsbytes("44729"), + cst_0$323=caml_string_of_jsbytes("0"), + cst_27326=caml_string_of_jsbytes("27326"), + cst_33500$0=caml_string_of_jsbytes("33500"), + cst_1$214=caml_string_of_jsbytes("1"), + cst_36264=caml_string_of_jsbytes("36264"), + cst_2$53=caml_string_of_jsbytes("2"), + cst_37520=caml_string_of_jsbytes("37520"), + cst_3$33=caml_string_of_jsbytes("3"), + cst_38814=caml_string_of_jsbytes("38814"), + cst_4$29=caml_string_of_jsbytes("4"), + cst_40088=caml_string_of_jsbytes("40088"), + cst_5$20=caml_string_of_jsbytes("5"), + cst_42926=caml_string_of_jsbytes("42926"), + cst_5$21=caml_string_of_jsbytes("5"), + cst_3732=caml_string_of_jsbytes("3732"), + cst_42926$0=caml_string_of_jsbytes("42926"), + cst_0$324=caml_string_of_jsbytes("0"), + cst_25634=caml_string_of_jsbytes("25634"), + cst_31092=caml_string_of_jsbytes("31092"), + cst_1$215=caml_string_of_jsbytes("1"), + cst_33898=caml_string_of_jsbytes("33898"), + cst_2$54=caml_string_of_jsbytes("2"), + cst_35299=caml_string_of_jsbytes("35299"), + cst_3$34=caml_string_of_jsbytes("3"), + cst_36721=caml_string_of_jsbytes("36721"), + cst_4$30=caml_string_of_jsbytes("4"), + cst_38120=caml_string_of_jsbytes("38120"), + cst_5$22=caml_string_of_jsbytes("5"), + cst_40961=caml_string_of_jsbytes("40961"), + cst_5$23=caml_string_of_jsbytes("5"), + cst_3551=caml_string_of_jsbytes("3551"), + cst_40961$0=caml_string_of_jsbytes("40961"), + cst_0$319=caml_string_of_jsbytes("0"), + cst_31382=caml_string_of_jsbytes("31382"), + cst_37820=caml_string_of_jsbytes("37820"), + cst_1$210=caml_string_of_jsbytes("1"), + cst_40665=caml_string_of_jsbytes("40665"), + cst_2$49=caml_string_of_jsbytes("2"), + cst_41801=caml_string_of_jsbytes("41801"), + cst_3$29=caml_string_of_jsbytes("3"), + cst_42977=caml_string_of_jsbytes("42977"), + cst_4$25=caml_string_of_jsbytes("4"), + cst_44130=caml_string_of_jsbytes("44130"), + cst_5$12=caml_string_of_jsbytes("5"), + cst_45064=caml_string_of_jsbytes("45064"), + cst_5$13=caml_string_of_jsbytes("5"), + cst_3924=caml_string_of_jsbytes("3924"), + cst_45064$0=caml_string_of_jsbytes("45064"), + cst_0$320=caml_string_of_jsbytes("0"), + cst_27531=caml_string_of_jsbytes("27531"), + cst_33751=caml_string_of_jsbytes("33751"), + cst_1$211=caml_string_of_jsbytes("1"), + cst_36536=caml_string_of_jsbytes("36536"), + cst_2$50=caml_string_of_jsbytes("2"), + cst_37801=caml_string_of_jsbytes("37801"), + cst_3$30=caml_string_of_jsbytes("3"), + cst_39105=caml_string_of_jsbytes("39105"), + cst_4$26=caml_string_of_jsbytes("4"), + cst_40389=caml_string_of_jsbytes("40389"), + cst_5$14=caml_string_of_jsbytes("5"), + cst_43248=caml_string_of_jsbytes("43248"), + cst_5$15=caml_string_of_jsbytes("5"), + cst_3760=caml_string_of_jsbytes("3760"), + cst_43248$0=caml_string_of_jsbytes("43248"), + cst_0$321=caml_string_of_jsbytes("0"), + cst_25826=caml_string_of_jsbytes("25826"), + cst_31325=caml_string_of_jsbytes("31325"), + cst_1$212=caml_string_of_jsbytes("1"), + cst_34152=caml_string_of_jsbytes("34152"), + cst_2$51=caml_string_of_jsbytes("2"), + cst_35564=caml_string_of_jsbytes("35564"), + cst_3$31=caml_string_of_jsbytes("3"), + cst_36996=caml_string_of_jsbytes("36996"), + cst_4$27=caml_string_of_jsbytes("4"), + cst_38406=caml_string_of_jsbytes("38406"), + cst_5$16=caml_string_of_jsbytes("5"), + cst_41268=caml_string_of_jsbytes("41268"), + cst_5$17=caml_string_of_jsbytes("5"), + cst_3578=caml_string_of_jsbytes("3578"), + cst_41268$0=caml_string_of_jsbytes("41268"), + cst_0$316=caml_string_of_jsbytes("0"), + cst_31476=caml_string_of_jsbytes("31476"), + cst_37933=caml_string_of_jsbytes("37933"), + cst_1$207=caml_string_of_jsbytes("1"), + cst_40787=caml_string_of_jsbytes("40787"), + cst_2$46=caml_string_of_jsbytes("2"), + cst_41927=caml_string_of_jsbytes("41927"), + cst_3$26=caml_string_of_jsbytes("3"), + cst_43106=caml_string_of_jsbytes("43106"), + cst_4$22=caml_string_of_jsbytes("4"), + cst_44262=caml_string_of_jsbytes("44262"), + cst_5$6=caml_string_of_jsbytes("5"), + cst_45200=caml_string_of_jsbytes("45200"), + cst_5$7=caml_string_of_jsbytes("5"), + cst_3936=caml_string_of_jsbytes("3936"), + cst_45200$0=caml_string_of_jsbytes("45200"), + cst_0$317=caml_string_of_jsbytes("0"), + cst_27614=caml_string_of_jsbytes("27614"), + cst_33853=caml_string_of_jsbytes("33853"), + cst_1$208=caml_string_of_jsbytes("1"), + cst_36646=caml_string_of_jsbytes("36646"), + cst_2$47=caml_string_of_jsbytes("2"), + cst_37915=caml_string_of_jsbytes("37915"), + cst_3$27=caml_string_of_jsbytes("3"), + cst_39222=caml_string_of_jsbytes("39222"), + cst_4$23=caml_string_of_jsbytes("4"), + cst_40510=caml_string_of_jsbytes("40510"), + cst_5$8=caml_string_of_jsbytes("5"), + cst_43378=caml_string_of_jsbytes("43378"), + cst_5$9=caml_string_of_jsbytes("5"), + cst_3771=caml_string_of_jsbytes("3771"), + cst_43378$0=caml_string_of_jsbytes("43378"), + cst_0$318=caml_string_of_jsbytes("0"), + cst_25904=caml_string_of_jsbytes("25904"), + cst_31419=caml_string_of_jsbytes("31419"), + cst_1$209=caml_string_of_jsbytes("1"), + cst_34255=caml_string_of_jsbytes("34255"), + cst_2$48=caml_string_of_jsbytes("2"), + cst_35670=caml_string_of_jsbytes("35670"), + cst_3$28=caml_string_of_jsbytes("3"), + cst_37107=caml_string_of_jsbytes("37107"), + cst_4$24=caml_string_of_jsbytes("4"), + cst_38521=caml_string_of_jsbytes("38521"), + cst_5$10=caml_string_of_jsbytes("5"), + cst_41392=caml_string_of_jsbytes("41392"), + cst_5$11=caml_string_of_jsbytes("5"), + cst_3588=caml_string_of_jsbytes("3588"), + cst_41392$0=caml_string_of_jsbytes("41392"), + cst_0$314=caml_string_of_jsbytes("0"), + cst_0$315=caml_string_of_jsbytes("0"), + cst_1229$5=caml_string_of_jsbytes("1229"), + cst_2710$1=caml_string_of_jsbytes("2710"), + cst_5422$7=caml_string_of_jsbytes("5422"), + cst_0$313=caml_string_of_jsbytes("0"), + cst_5422$5=caml_string_of_jsbytes("5422"), + cst_1229$4=caml_string_of_jsbytes("1229"), + cst_5422$6=caml_string_of_jsbytes("5422"), + cst_1272$5=caml_string_of_jsbytes("1272"), + cst_2805$1=caml_string_of_jsbytes("2805"), + cst_5612$7=caml_string_of_jsbytes("5612"), + cst_0$312=caml_string_of_jsbytes("0"), + cst_5612$5=caml_string_of_jsbytes("5612"), + cst_1272$4=caml_string_of_jsbytes("1272"), + cst_5612$6=caml_string_of_jsbytes("5612"), + cst_16_25$0=caml_string_of_jsbytes("16.25"), + cst_0_0234$1=caml_string_of_jsbytes("0.0234"), + cst_390000=caml_string_of_jsbytes("390000"), + cst_1500$1=caml_string_of_jsbytes("1500"), + cst_1000$4=caml_string_of_jsbytes("1000"), + cst_6_55957$0=caml_string_of_jsbytes("6.55957"), + cst_1$206=caml_string_of_jsbytes("1."), + cst_500$3=caml_string_of_jsbytes("500"), + cst_0$311=caml_string_of_jsbytes("0"), + cst_50$2=caml_string_of_jsbytes("50"), + cst_0$309=caml_string_of_jsbytes("0"), + cst_0$310=caml_string_of_jsbytes("0"), + cst_0$307=caml_string_of_jsbytes("0"), + cst_0$308=caml_string_of_jsbytes("0"), + cst_0$306=caml_string_of_jsbytes("0"), + cst_0$304=caml_string_of_jsbytes("0"), + cst_0$305=caml_string_of_jsbytes("0"), + cst_8708=caml_string_of_jsbytes("8708"), + cst_13559=caml_string_of_jsbytes("13559"), + cst_21362=caml_string_of_jsbytes("21362"), + cst_33196=caml_string_of_jsbytes("33196"), + cst_17607$0=caml_string_of_jsbytes("17607"), + cst_27365$0=caml_string_of_jsbytes("27365"), + cst_17607=caml_string_of_jsbytes("17607"), + cst_27365=caml_string_of_jsbytes("27365"), + cst_8414=caml_string_of_jsbytes("8414"), + cst_13100=caml_string_of_jsbytes("13100"), + cst_20640=caml_string_of_jsbytes("20640"), + cst_32073=caml_string_of_jsbytes("32073"), + cst_17012$0=caml_string_of_jsbytes("17012"), + cst_26440$0=caml_string_of_jsbytes("26440"), + cst_17012=caml_string_of_jsbytes("17012"), + cst_26440=caml_string_of_jsbytes("26440"), + cst_0$303=caml_string_of_jsbytes("0"), + cst_5612$3=caml_string_of_jsbytes("5612"), + cst_1272$3=caml_string_of_jsbytes("1272"), + cst_5612$4=caml_string_of_jsbytes("5612"), + cst_0$302=caml_string_of_jsbytes("0"), + cst_5422$3=caml_string_of_jsbytes("5422"), + cst_1229$3=caml_string_of_jsbytes("1229"), + cst_5422$4=caml_string_of_jsbytes("5422"), + cst_1500$0=caml_string_of_jsbytes("1500"), + cst_500$2=caml_string_of_jsbytes("500"), + cst_1000$3=caml_string_of_jsbytes("1000"), + cst_0$301=caml_string_of_jsbytes("0"), + cst_169$2=caml_string_of_jsbytes("169."), + cst_0_55$2=caml_string_of_jsbytes("0.55"), + cst_169$1=caml_string_of_jsbytes("169."), + cst_0_55$1=caml_string_of_jsbytes("0.55"), + cst_12$15=caml_string_of_jsbytes("12."), + cst_0$300=caml_string_of_jsbytes("0"), + cst_0$299=caml_string_of_jsbytes("0"), + cst_0$293=caml_string_of_jsbytes("0"), + cst_0$294=caml_string_of_jsbytes("0"), + cst_2$45=caml_string_of_jsbytes("2"), + cst_90100=caml_string_of_jsbytes("90100"), + cst_135000=caml_string_of_jsbytes("135000"), + cst_0$295=caml_string_of_jsbytes("0"), + cst_0$296=caml_string_of_jsbytes("0"), + cst_0$297=caml_string_of_jsbytes("0"), + cst_0$298=caml_string_of_jsbytes("0"), + cst_0$292=caml_string_of_jsbytes("0"), + cst_9500=caml_string_of_jsbytes("9500"), + cst_258900=caml_string_of_jsbytes("258900"), + cst_0$290=caml_string_of_jsbytes("0."), + cst_0$291=caml_string_of_jsbytes("0."), + cst_1_25$0=caml_string_of_jsbytes("1.25"), + cst_1_25=caml_string_of_jsbytes("1.25"), + cst_0$289=caml_string_of_jsbytes("0"), + cst_0$288=caml_string_of_jsbytes("0"), + cst_0$287=caml_string_of_jsbytes("0"), + cst_0$286=caml_string_of_jsbytes("0."), + cst_0$285=caml_string_of_jsbytes("0."), + cst_999840=caml_string_of_jsbytes("999840"), + cst_1041840=caml_string_of_jsbytes("1041840"), + cst_1083840=caml_string_of_jsbytes("1083840"), + cst_1153302=caml_string_of_jsbytes("1153302"), + cst_1100144=caml_string_of_jsbytes("1100144"), + cst_1088175=caml_string_of_jsbytes("1088175"), + cst_1$204=caml_string_of_jsbytes("1"), + cst_2$41=caml_string_of_jsbytes("2"), + cst_2$42=caml_string_of_jsbytes("2"), + cst_2$43=caml_string_of_jsbytes("2"), + cst_1$205=caml_string_of_jsbytes("1"), + cst_2$44=caml_string_of_jsbytes("2"), + cst_9=caml_string_of_jsbytes("9"), + cst_9$0=caml_string_of_jsbytes("9"), + cst_16=caml_string_of_jsbytes("16"), + cst_16$0=caml_string_of_jsbytes("16"), + cst_16$1=caml_string_of_jsbytes("16"), + cst_9$1=caml_string_of_jsbytes("9"), + cst_16$2=caml_string_of_jsbytes("16"), + cst_8=caml_string_of_jsbytes("8"), + cst_70=caml_string_of_jsbytes("70"), + cst_70$0=caml_string_of_jsbytes("70"), + cst_3000000=caml_string_of_jsbytes("3000000"), + cst_0_1$0=caml_string_of_jsbytes("0.1"), + cst_0_1=caml_string_of_jsbytes("0.1"), + cst_0_2=caml_string_of_jsbytes("0.2"), + cst_0_2$0=caml_string_of_jsbytes("0.2"), + cst_0$284=caml_string_of_jsbytes("0"), + cst_0$282=caml_string_of_jsbytes("0"), + cst_0$283=caml_string_of_jsbytes("0"), + cst_50$1=caml_string_of_jsbytes("50"), + cst_0$280=caml_string_of_jsbytes("0"), + cst_0$281=caml_string_of_jsbytes("0"), + cst_0_95$3=caml_string_of_jsbytes("0.95"), + cst_0_95$4=caml_string_of_jsbytes("0.95"), + cst_0$278=caml_string_of_jsbytes("0"), + cst_0$279=caml_string_of_jsbytes("0"), + cst_100$9=caml_string_of_jsbytes("100."), + cst_100$10=caml_string_of_jsbytes("100."), + cst_0_005$2=caml_string_of_jsbytes("0.005"), + cst_12$14=caml_string_of_jsbytes("12."), + cst_0$277=caml_string_of_jsbytes("0."), + cst_0_75$10=caml_string_of_jsbytes("0.75"), + cst_0_75$9=caml_string_of_jsbytes("0.75"), + cst_0_75$8=caml_string_of_jsbytes("0.75"), + cst_0$276=caml_string_of_jsbytes("0"), + cst_0_95$2=caml_string_of_jsbytes("0.95"), + cst_0$275=caml_string_of_jsbytes("0"), + cst_86900=caml_string_of_jsbytes("86900"), + cst_97100=caml_string_of_jsbytes("97100"), + cst_1$203=caml_string_of_jsbytes("1"), + cst_10200=caml_string_of_jsbytes("10200"), + cst_107300=caml_string_of_jsbytes("107300"), + cst_0$272=caml_string_of_jsbytes("0"), + cst_208500$0=caml_string_of_jsbytes("208500"), + cst_251500$0=caml_string_of_jsbytes("251500"), + cst_1$200=caml_string_of_jsbytes("1"), + cst_43000$0=caml_string_of_jsbytes("43000"), + cst_294500$0=caml_string_of_jsbytes("294500"), + cst_0$273=caml_string_of_jsbytes("0"), + cst_186000$0=caml_string_of_jsbytes("186000"), + cst_223900$0=caml_string_of_jsbytes("223900"), + cst_1$201=caml_string_of_jsbytes("1"), + cst_37900$0=caml_string_of_jsbytes("37900"), + cst_261800$0=caml_string_of_jsbytes("261800"), + cst_0$274=caml_string_of_jsbytes("0"), + cst_173600$0=caml_string_of_jsbytes("173600"), + cst_208200$0=caml_string_of_jsbytes("208200"), + cst_1$202=caml_string_of_jsbytes("1"), + cst_34600=caml_string_of_jsbytes("34600"), + cst_242800$0=caml_string_of_jsbytes("242800"), + cst_0$269=caml_string_of_jsbytes("0"), + cst_167800$0=caml_string_of_jsbytes("167800"), + cst_202500$1=caml_string_of_jsbytes("202500"), + cst_1$197=caml_string_of_jsbytes("1"), + cst_34700$0=caml_string_of_jsbytes("34700"), + cst_237200$0=caml_string_of_jsbytes("237200"), + cst_0$270=caml_string_of_jsbytes("0"), + cst_149600$0=caml_string_of_jsbytes("149600"), + cst_180100$0=caml_string_of_jsbytes("180100"), + cst_1$198=caml_string_of_jsbytes("1"), + cst_30500$2=caml_string_of_jsbytes("30500"), + cst_210600$0=caml_string_of_jsbytes("210600"), + cst_0$271=caml_string_of_jsbytes("0"), + cst_139700$0=caml_string_of_jsbytes("139700"), + cst_167600$0=caml_string_of_jsbytes("167600"), + cst_1$199=caml_string_of_jsbytes("1"), + cst_27900$0=caml_string_of_jsbytes("27900"), + cst_195500$0=caml_string_of_jsbytes("195500"), + cst_0$266=caml_string_of_jsbytes("0"), + cst_198100=caml_string_of_jsbytes("198100"), + cst_239000=caml_string_of_jsbytes("239000"), + cst_1$194=caml_string_of_jsbytes("1"), + cst_40900=caml_string_of_jsbytes("40900"), + cst_279900=caml_string_of_jsbytes("279900"), + cst_0$267=caml_string_of_jsbytes("0"), + cst_176800=caml_string_of_jsbytes("176800"), + cst_212800=caml_string_of_jsbytes("212800"), + cst_1$195=caml_string_of_jsbytes("1"), + cst_36000=caml_string_of_jsbytes("36000"), + cst_248800=caml_string_of_jsbytes("248800"), + cst_0$268=caml_string_of_jsbytes("0"), + cst_165000=caml_string_of_jsbytes("165000"), + cst_197900=caml_string_of_jsbytes("197900"), + cst_1$196=caml_string_of_jsbytes("1"), + cst_32900=caml_string_of_jsbytes("32900"), + cst_230800=caml_string_of_jsbytes("230800"), + cst_0$263=caml_string_of_jsbytes("0"), + cst_159500=caml_string_of_jsbytes("159500"), + cst_192500=caml_string_of_jsbytes("192500"), + cst_1$191=caml_string_of_jsbytes("1"), + cst_33000=caml_string_of_jsbytes("33000"), + cst_225500=caml_string_of_jsbytes("225500"), + cst_0$264=caml_string_of_jsbytes("0"), + cst_142200=caml_string_of_jsbytes("142200"), + cst_171200=caml_string_of_jsbytes("171200"), + cst_1$192=caml_string_of_jsbytes("1"), + cst_29000=caml_string_of_jsbytes("29000"), + cst_200200=caml_string_of_jsbytes("200200"), + cst_0$265=caml_string_of_jsbytes("0"), + cst_132800=caml_string_of_jsbytes("132800"), + cst_159300=caml_string_of_jsbytes("159300"), + cst_1$193=caml_string_of_jsbytes("1"), + cst_26500=caml_string_of_jsbytes("26500"), + cst_185800$0=caml_string_of_jsbytes("185800"), + cst_0$260=caml_string_of_jsbytes("0"), + cst_200100=caml_string_of_jsbytes("200100"), + cst_141400=caml_string_of_jsbytes("141400"), + cst_1$188=caml_string_of_jsbytes("1"), + cst_41300=caml_string_of_jsbytes("41300"), + cst_182700=caml_string_of_jsbytes("182700"), + cst_0$261=caml_string_of_jsbytes("0"), + cst_178600=caml_string_of_jsbytes("178600"), + cst_215000=caml_string_of_jsbytes("215000"), + cst_1$189=caml_string_of_jsbytes("1"), + cst_36400=caml_string_of_jsbytes("36400"), + cst_251400=caml_string_of_jsbytes("251400"), + cst_0$262=caml_string_of_jsbytes("0"), + cst_166700=caml_string_of_jsbytes("166700"), + cst_199900=caml_string_of_jsbytes("199900"), + cst_1$190=caml_string_of_jsbytes("1"), + cst_33200=caml_string_of_jsbytes("33200"), + cst_233100=caml_string_of_jsbytes("233100"), + cst_0$257=caml_string_of_jsbytes("0"), + cst_161100=caml_string_of_jsbytes("161100"), + cst_194400=caml_string_of_jsbytes("194400"), + cst_1$185=caml_string_of_jsbytes("1"), + cst_33300=caml_string_of_jsbytes("33300"), + cst_227700=caml_string_of_jsbytes("227700"), + cst_0$258=caml_string_of_jsbytes("0"), + cst_143600=caml_string_of_jsbytes("143600"), + cst_172900=caml_string_of_jsbytes("172900"), + cst_1$186=caml_string_of_jsbytes("1"), + cst_29300=caml_string_of_jsbytes("29300"), + cst_202200=caml_string_of_jsbytes("202200"), + cst_0$259=caml_string_of_jsbytes("0"), + cst_134100=caml_string_of_jsbytes("134100"), + cst_160900=caml_string_of_jsbytes("160900"), + cst_1$187=caml_string_of_jsbytes("1"), + cst_26800=caml_string_of_jsbytes("26800"), + cst_187700=caml_string_of_jsbytes("187700"), + cst_0$254=caml_string_of_jsbytes("0"), + cst_202500$0=caml_string_of_jsbytes("202500"), + cst_244300=caml_string_of_jsbytes("244300"), + cst_1$182=caml_string_of_jsbytes("1"), + cst_41800=caml_string_of_jsbytes("41800"), + cst_286100=caml_string_of_jsbytes("286100"), + cst_0$255=caml_string_of_jsbytes("0"), + cst_180700=caml_string_of_jsbytes("180700"), + cst_217500=caml_string_of_jsbytes("217500"), + cst_1$183=caml_string_of_jsbytes("1"), + cst_36800=caml_string_of_jsbytes("36800"), + cst_254300=caml_string_of_jsbytes("254300"), + cst_0$256=caml_string_of_jsbytes("0"), + cst_168700=caml_string_of_jsbytes("168700"), + cst_202300=caml_string_of_jsbytes("202300"), + cst_1$184=caml_string_of_jsbytes("1"), + cst_33600=caml_string_of_jsbytes("33600"), + cst_235900=caml_string_of_jsbytes("235900"), + cst_0$251=caml_string_of_jsbytes("0"), + cst_30871=caml_string_of_jsbytes("30871"), + cst_37243=caml_string_of_jsbytes("37243"), + cst_1$179=caml_string_of_jsbytes("1"), + cst_6372=caml_string_of_jsbytes("6372"), + cst_43615=caml_string_of_jsbytes("43615"), + cst_0$252=caml_string_of_jsbytes("0"), + cst_27548=caml_string_of_jsbytes("27548"), + cst_33148=caml_string_of_jsbytes("33148"), + cst_1$180=caml_string_of_jsbytes("1"), + cst_5610=caml_string_of_jsbytes("5610"), + cst_38768=caml_string_of_jsbytes("38768"), + cst_0$253=caml_string_of_jsbytes("0"), + cst_25718=caml_string_of_jsbytes("25718"), + cst_30840=caml_string_of_jsbytes("30840"), + cst_1$181=caml_string_of_jsbytes("1"), + cst_5122=caml_string_of_jsbytes("5122"), + cst_35962=caml_string_of_jsbytes("35962"), + cst_0$248=caml_string_of_jsbytes("0"), + cst_163000=caml_string_of_jsbytes("163000"), + cst_196700=caml_string_of_jsbytes("196700"), + cst_1$176=caml_string_of_jsbytes("1"), + cst_33700=caml_string_of_jsbytes("33700"), + cst_230400=caml_string_of_jsbytes("230400"), + cst_0$249=caml_string_of_jsbytes("0"), + cst_145300=caml_string_of_jsbytes("145300"), + cst_175000=caml_string_of_jsbytes("175000"), + cst_1$177=caml_string_of_jsbytes("1"), + cst_29700=caml_string_of_jsbytes("29700"), + cst_204700=caml_string_of_jsbytes("204700"), + cst_0$250=caml_string_of_jsbytes("0"), + cst_135700=caml_string_of_jsbytes("135700"), + cst_162800=caml_string_of_jsbytes("162800"), + cst_1$178=caml_string_of_jsbytes("1"), + cst_27100=caml_string_of_jsbytes("27100"), + cst_189900=caml_string_of_jsbytes("189900"), + cst_0$245=caml_string_of_jsbytes("0"), + cst_24849=caml_string_of_jsbytes("24849"), + cst_29987=caml_string_of_jsbytes("29987"), + cst_1$173=caml_string_of_jsbytes("1"), + cst_5138=caml_string_of_jsbytes("5138"), + cst_35125=caml_string_of_jsbytes("35125"), + cst_0$246=caml_string_of_jsbytes("0"), + cst_22151=caml_string_of_jsbytes("22151"), + cst_26679=caml_string_of_jsbytes("26679"), + cst_1$174=caml_string_of_jsbytes("1"), + cst_4528=caml_string_of_jsbytes("4528"), + cst_31207=caml_string_of_jsbytes("31207"), + cst_0$247=caml_string_of_jsbytes("0"), + cst_20687=caml_string_of_jsbytes("20687"), + cst_24818=caml_string_of_jsbytes("24818"), + cst_1$175=caml_string_of_jsbytes("1"), + cst_4131=caml_string_of_jsbytes("4131"), + cst_28949=caml_string_of_jsbytes("28949"), + cst_0$242=caml_string_of_jsbytes("0"), + cst_31241=caml_string_of_jsbytes("31241"), + cst_37689=caml_string_of_jsbytes("37689"), + cst_1$170=caml_string_of_jsbytes("1"), + cst_6448=caml_string_of_jsbytes("6448"), + cst_44137=caml_string_of_jsbytes("44137"), + cst_0$243=caml_string_of_jsbytes("0"), + cst_27879=caml_string_of_jsbytes("27879"), + cst_33556=caml_string_of_jsbytes("33556"), + cst_1$171=caml_string_of_jsbytes("1"), + cst_5677=caml_string_of_jsbytes("5677"), + cst_39233=caml_string_of_jsbytes("39233"), + cst_0$244=caml_string_of_jsbytes("0"), + cst_26027=caml_string_of_jsbytes("26027"), + cst_31210=caml_string_of_jsbytes("31210"), + cst_1$172=caml_string_of_jsbytes("1"), + cst_5183=caml_string_of_jsbytes("5183"), + cst_36393=caml_string_of_jsbytes("36393"), + cst_0$239=caml_string_of_jsbytes("0"), + cst_25147=caml_string_of_jsbytes("25147"), + cst_30347=caml_string_of_jsbytes("30347"), + cst_1$167=caml_string_of_jsbytes("1"), + cst_5200=caml_string_of_jsbytes("5200"), + cst_35547=caml_string_of_jsbytes("35547"), + cst_0$240=caml_string_of_jsbytes("0"), + cst_22417=caml_string_of_jsbytes("22417"), + cst_26999=caml_string_of_jsbytes("26999"), + cst_1$168=caml_string_of_jsbytes("1"), + cst_4582=caml_string_of_jsbytes("4582"), + cst_31581=caml_string_of_jsbytes("31581"), + cst_0$241=caml_string_of_jsbytes("0"), + cst_20935=caml_string_of_jsbytes("20935"), + cst_25116$0=caml_string_of_jsbytes("25116"), + cst_1$169=caml_string_of_jsbytes("1"), + cst_4181=caml_string_of_jsbytes("4181"), + cst_29297=caml_string_of_jsbytes("29297"), + cst_0$236=caml_string_of_jsbytes("0"), + cst_31616=caml_string_of_jsbytes("31616"), + cst_38141=caml_string_of_jsbytes("38141"), + cst_1$164=caml_string_of_jsbytes("1"), + cst_6525=caml_string_of_jsbytes("6525"), + cst_44666=caml_string_of_jsbytes("44666"), + cst_0$237=caml_string_of_jsbytes("0"), + cst_28214=caml_string_of_jsbytes("28214"), + cst_33959=caml_string_of_jsbytes("33959"), + cst_1$165=caml_string_of_jsbytes("1"), + cst_5745=caml_string_of_jsbytes("5745"), + cst_39704=caml_string_of_jsbytes("39704"), + cst_0$238=caml_string_of_jsbytes("0"), + cst_26339=caml_string_of_jsbytes("26339"), + cst_31584=caml_string_of_jsbytes("31584"), + cst_1$166=caml_string_of_jsbytes("1"), + cst_5245=caml_string_of_jsbytes("5245"), + cst_36829=caml_string_of_jsbytes("36829"), + cst_0$233=caml_string_of_jsbytes("0"), + cst_25449=caml_string_of_jsbytes("25449"), + cst_30711=caml_string_of_jsbytes("30711"), + cst_1$161=caml_string_of_jsbytes("1"), + cst_5262=caml_string_of_jsbytes("5262"), + cst_35973=caml_string_of_jsbytes("35973"), + cst_0$234=caml_string_of_jsbytes("0"), + cst_22686=caml_string_of_jsbytes("22686"), + cst_27323=caml_string_of_jsbytes("27323"), + cst_1$162=caml_string_of_jsbytes("1"), + cst_4637=caml_string_of_jsbytes("4637"), + cst_31960=caml_string_of_jsbytes("31960"), + cst_0$235=caml_string_of_jsbytes("0"), + cst_21186=caml_string_of_jsbytes("21186"), + cst_25417=caml_string_of_jsbytes("25417"), + cst_1$163=caml_string_of_jsbytes("1"), + cst_4231=caml_string_of_jsbytes("4231"), + cst_29648=caml_string_of_jsbytes("29648"), + cst_0$230=caml_string_of_jsbytes("0"), + cst_32185=caml_string_of_jsbytes("32185"), + cst_38827=caml_string_of_jsbytes("38827"), + cst_1$158=caml_string_of_jsbytes("1"), + cst_6642=caml_string_of_jsbytes("6642"), + cst_45469=caml_string_of_jsbytes("45469"), + cst_0$231=caml_string_of_jsbytes("0"), + cst_28722=caml_string_of_jsbytes("28722"), + cst_34570$0=caml_string_of_jsbytes("34570"), + cst_1$159=caml_string_of_jsbytes("1"), + cst_5848=caml_string_of_jsbytes("5848"), + cst_40418=caml_string_of_jsbytes("40418"), + cst_0$232=caml_string_of_jsbytes("0"), + cst_26813=caml_string_of_jsbytes("26813"), + cst_32152=caml_string_of_jsbytes("32152"), + cst_1$160=caml_string_of_jsbytes("1"), + cst_5339=caml_string_of_jsbytes("5339"), + cst_37491=caml_string_of_jsbytes("37491"), + cst_0$227=caml_string_of_jsbytes("0"), + cst_25907=caml_string_of_jsbytes("25907"), + cst_31264=caml_string_of_jsbytes("31264"), + cst_1$155=caml_string_of_jsbytes("1"), + cst_5357=caml_string_of_jsbytes("5357"), + cst_36621=caml_string_of_jsbytes("36621"), + cst_0$228=caml_string_of_jsbytes("0"), + cst_23094=caml_string_of_jsbytes("23094"), + cst_27814=caml_string_of_jsbytes("27814"), + cst_1$156=caml_string_of_jsbytes("1"), + cst_4720=caml_string_of_jsbytes("4720"), + cst_32534=caml_string_of_jsbytes("32534"), + cst_0$229=caml_string_of_jsbytes("0"), + cst_21567=caml_string_of_jsbytes("21567"), + cst_25874=caml_string_of_jsbytes("25874"), + cst_1$157=caml_string_of_jsbytes("1"), + cst_4307=caml_string_of_jsbytes("4307"), + cst_30181=caml_string_of_jsbytes("30181"), + cst_0$224=caml_string_of_jsbytes("0"), + cst_33086=caml_string_of_jsbytes("33086"), + cst_39914=caml_string_of_jsbytes("39914"), + cst_1$152=caml_string_of_jsbytes("1"), + cst_6828=caml_string_of_jsbytes("6828"), + cst_46742=caml_string_of_jsbytes("46742"), + cst_0$225=caml_string_of_jsbytes("0"), + cst_29526=caml_string_of_jsbytes("29526"), + cst_35538=caml_string_of_jsbytes("35538"), + cst_1$153=caml_string_of_jsbytes("1"), + cst_6012=caml_string_of_jsbytes("6012"), + cst_41550=caml_string_of_jsbytes("41550"), + cst_0$226=caml_string_of_jsbytes("0"), + cst_27564=caml_string_of_jsbytes("27564"), + cst_33052=caml_string_of_jsbytes("33052"), + cst_1$154=caml_string_of_jsbytes("1"), + cst_5488=caml_string_of_jsbytes("5488"), + cst_38541=caml_string_of_jsbytes("38541"), + cst_0$221=caml_string_of_jsbytes("0"), + cst_26632=caml_string_of_jsbytes("26632"), + cst_32139=caml_string_of_jsbytes("32139"), + cst_1$149=caml_string_of_jsbytes("1"), + cst_5507=caml_string_of_jsbytes("5507"), + cst_37646=caml_string_of_jsbytes("37646"), + cst_0$222=caml_string_of_jsbytes("0"), + cst_23741=caml_string_of_jsbytes("23741"), + cst_28593=caml_string_of_jsbytes("28593"), + cst_1$150=caml_string_of_jsbytes("1"), + cst_4852=caml_string_of_jsbytes("4852"), + cst_33445=caml_string_of_jsbytes("33445"), + cst_0$223=caml_string_of_jsbytes("0"), + cst_22171=caml_string_of_jsbytes("22171"), + cst_36598=caml_string_of_jsbytes("36598"), + cst_1$151=caml_string_of_jsbytes("1"), + cst_4428=caml_string_of_jsbytes("4428"), + cst_31026=caml_string_of_jsbytes("31026"), + cst_0$218=caml_string_of_jsbytes("0"), + cst_33999=caml_string_of_jsbytes("33999"), + cst_41016=caml_string_of_jsbytes("41016"), + cst_1$146=caml_string_of_jsbytes("1"), + cst_7016=caml_string_of_jsbytes("7016"), + cst_48032=caml_string_of_jsbytes("48032"), + cst_0$219=caml_string_of_jsbytes("0"), + cst_30341=caml_string_of_jsbytes("30341"), + cst_36519=caml_string_of_jsbytes("36519"), + cst_1$147=caml_string_of_jsbytes("1"), + cst_6178=caml_string_of_jsbytes("6178"), + cst_42697=caml_string_of_jsbytes("42697"), + cst_0$220=caml_string_of_jsbytes("0"), + cst_28325=caml_string_of_jsbytes("28325"), + cst_33964=caml_string_of_jsbytes("33964"), + cst_1$148=caml_string_of_jsbytes("1"), + cst_5639=caml_string_of_jsbytes("5639"), + cst_39605=caml_string_of_jsbytes("39605"), + cst_0$215=caml_string_of_jsbytes("0"), + cst_27367=caml_string_of_jsbytes("27367"), + cst_33026=caml_string_of_jsbytes("33026"), + cst_1$143=caml_string_of_jsbytes("1"), + cst_5659=caml_string_of_jsbytes("5659"), + cst_38685=caml_string_of_jsbytes("38685"), + cst_0$216=caml_string_of_jsbytes("0"), + cst_24396=caml_string_of_jsbytes("24396"), + cst_29382=caml_string_of_jsbytes("29382"), + cst_1$144=caml_string_of_jsbytes("1"), + cst_4986$0=caml_string_of_jsbytes("4986"), + cst_34368=caml_string_of_jsbytes("34368"), + cst_0$217=caml_string_of_jsbytes("0"), + cst_22783=caml_string_of_jsbytes("22783"), + cst_27332=caml_string_of_jsbytes("27332"), + cst_1$145=caml_string_of_jsbytes("1"), + cst_4550=caml_string_of_jsbytes("4550"), + cst_31882=caml_string_of_jsbytes("31882"), + cst_0$212=caml_string_of_jsbytes("0"), + cst_35002=caml_string_of_jsbytes("35002"), + cst_42226=caml_string_of_jsbytes("42226"), + cst_1$140=caml_string_of_jsbytes("1"), + cst_7223=caml_string_of_jsbytes("7223"), + cst_49449=caml_string_of_jsbytes("49449"), + cst_0$213=caml_string_of_jsbytes("0"), + cst_31236=caml_string_of_jsbytes("31236"), + cst_37596=caml_string_of_jsbytes("37596"), + cst_1$141=caml_string_of_jsbytes("1"), + cst_6360=caml_string_of_jsbytes("6360"), + cst_43957=caml_string_of_jsbytes("43957"), + cst_0$214=caml_string_of_jsbytes("0"), + cst_29161=caml_string_of_jsbytes("29161"), + cst_34966=caml_string_of_jsbytes("34966"), + cst_1$142=caml_string_of_jsbytes("1"), + cst_5805=caml_string_of_jsbytes("5805"), + cst_40773=caml_string_of_jsbytes("40773"), + cst_0$209=caml_string_of_jsbytes("0"), + cst_28174=caml_string_of_jsbytes("28174"), + cst_34000=caml_string_of_jsbytes("34000"), + cst_1$137=caml_string_of_jsbytes("1"), + cst_5826=caml_string_of_jsbytes("5826"), + cst_39826=caml_string_of_jsbytes("39826"), + cst_0$210=caml_string_of_jsbytes("0"), + cst_25116=caml_string_of_jsbytes("25116"), + cst_30249=caml_string_of_jsbytes("30249"), + cst_1$138=caml_string_of_jsbytes("1"), + cst_5133=caml_string_of_jsbytes("5133"), + cst_35382=caml_string_of_jsbytes("35382"), + cst_0$211=caml_string_of_jsbytes("0"), + cst_23455=caml_string_of_jsbytes("23455"), + cst_28138=caml_string_of_jsbytes("28138"), + cst_1$139=caml_string_of_jsbytes("1"), + cst_4684=caml_string_of_jsbytes("4684"), + cst_32823=caml_string_of_jsbytes("32823"), + cst_0$206=caml_string_of_jsbytes("0"), + cst_35114=caml_string_of_jsbytes("35114"), + cst_42361=caml_string_of_jsbytes("42361"), + cst_1$134=caml_string_of_jsbytes("1"), + cst_7246=caml_string_of_jsbytes("7246"), + cst_49607=caml_string_of_jsbytes("49607"), + cst_0$207=caml_string_of_jsbytes("0"), + cst_31336=caml_string_of_jsbytes("31336"), + cst_37716=caml_string_of_jsbytes("37716"), + cst_1$135=caml_string_of_jsbytes("1"), + cst_6380=caml_string_of_jsbytes("6380"), + cst_44098=caml_string_of_jsbytes("44098"), + cst_0$208=caml_string_of_jsbytes("0"), + cst_29254=caml_string_of_jsbytes("29254"), + cst_35078=caml_string_of_jsbytes("35078"), + cst_1$136=caml_string_of_jsbytes("1"), + cst_5824=caml_string_of_jsbytes("5824"), + cst_40903=caml_string_of_jsbytes("40903"), + cst_0$203=caml_string_of_jsbytes("0"), + cst_28264=caml_string_of_jsbytes("28264"), + cst_34109=caml_string_of_jsbytes("34109"), + cst_1$131=caml_string_of_jsbytes("1"), + cst_5845=caml_string_of_jsbytes("5845"), + cst_39953=caml_string_of_jsbytes("39953"), + cst_0$204=caml_string_of_jsbytes("0"), + cst_25196=caml_string_of_jsbytes("25196"), + cst_30346=caml_string_of_jsbytes("30346"), + cst_1$132=caml_string_of_jsbytes("1"), + cst_5149=caml_string_of_jsbytes("5149"), + cst_35495=caml_string_of_jsbytes("35495"), + cst_0$205=caml_string_of_jsbytes("0"), + cst_23530=caml_string_of_jsbytes("23530"), + cst_28228=caml_string_of_jsbytes("28228"), + cst_1$133=caml_string_of_jsbytes("1"), + cst_4699=caml_string_of_jsbytes("4699"), + cst_32928=caml_string_of_jsbytes("32928"), + cst_0$200=caml_string_of_jsbytes("0"), + cst_35500=caml_string_of_jsbytes("35500"), + cst_42827=caml_string_of_jsbytes("42827"), + cst_1$128=caml_string_of_jsbytes("1"), + cst_7326=caml_string_of_jsbytes("7326"), + cst_50153=caml_string_of_jsbytes("50153"), + cst_0$201=caml_string_of_jsbytes("0"), + cst_31681=caml_string_of_jsbytes("31681"), + cst_38131=caml_string_of_jsbytes("38131"), + cst_1$129=caml_string_of_jsbytes("1"), + cst_6450=caml_string_of_jsbytes("6450"), + cst_44583=caml_string_of_jsbytes("44583"), + cst_0$202=caml_string_of_jsbytes("0"), + cst_29576=caml_string_of_jsbytes("29576"), + cst_35464=caml_string_of_jsbytes("35464"), + cst_1$130=caml_string_of_jsbytes("1"), + cst_5888=caml_string_of_jsbytes("5888"), + cst_41353=caml_string_of_jsbytes("41353"), + cst_0$197=caml_string_of_jsbytes("0"), + cst_28575=caml_string_of_jsbytes("28575"), + cst_34484=caml_string_of_jsbytes("34484"), + cst_1$125=caml_string_of_jsbytes("1"), + cst_5909=caml_string_of_jsbytes("5909"), + cst_40392=caml_string_of_jsbytes("40392"), + cst_0$198=caml_string_of_jsbytes("0"), + cst_25473=caml_string_of_jsbytes("25473"), + cst_30680=caml_string_of_jsbytes("30680"), + cst_1$126=caml_string_of_jsbytes("1"), + cst_5206=caml_string_of_jsbytes("5206"), + cst_35885=caml_string_of_jsbytes("35885"), + cst_0$199=caml_string_of_jsbytes("0"), + cst_23789=caml_string_of_jsbytes("23789"), + cst_28539=caml_string_of_jsbytes("28539"), + cst_1$127=caml_string_of_jsbytes("1"), + cst_4751=caml_string_of_jsbytes("4751"), + cst_33290=caml_string_of_jsbytes("33290"), + cst_0$194=caml_string_of_jsbytes("0"), + cst_35855=caml_string_of_jsbytes("35855"), + cst_43255=caml_string_of_jsbytes("43255"), + cst_1$122=caml_string_of_jsbytes("1"), + cst_7399=caml_string_of_jsbytes("7399"), + cst_50655=caml_string_of_jsbytes("50655"), + cst_0$195=caml_string_of_jsbytes("0"), + cst_31998=caml_string_of_jsbytes("31998"), + cst_38512=caml_string_of_jsbytes("38512"), + cst_1$123=caml_string_of_jsbytes("1"), + cst_6515=caml_string_of_jsbytes("6515"), + cst_45029=caml_string_of_jsbytes("45029"), + cst_0$196=caml_string_of_jsbytes("0"), + cst_29872=caml_string_of_jsbytes("29872"), + cst_35819=caml_string_of_jsbytes("35819"), + cst_1$124=caml_string_of_jsbytes("1"), + cst_5947=caml_string_of_jsbytes("5947"), + cst_41767=caml_string_of_jsbytes("41767"), + cst_0$191=caml_string_of_jsbytes("0"), + cst_28861=caml_string_of_jsbytes("28861"), + cst_34829$0=caml_string_of_jsbytes("34829"), + cst_1$119=caml_string_of_jsbytes("1"), + cst_5968=caml_string_of_jsbytes("5968"), + cst_40796=caml_string_of_jsbytes("40796"), + cst_0$192=caml_string_of_jsbytes("0"), + cst_25728=caml_string_of_jsbytes("25728"), + cst_30987=caml_string_of_jsbytes("30987"), + cst_1$120=caml_string_of_jsbytes("1"), + cst_5258=caml_string_of_jsbytes("5258"), + cst_36244=caml_string_of_jsbytes("36244"), + cst_0$193=caml_string_of_jsbytes("0"), + cst_24027=caml_string_of_jsbytes("24027"), + cst_28824=caml_string_of_jsbytes("28824"), + cst_1$121=caml_string_of_jsbytes("1"), + cst_4799=caml_string_of_jsbytes("4799"), + cst_33623=caml_string_of_jsbytes("33623"), + cst_0$188=caml_string_of_jsbytes("0"), + cst_36626=caml_string_of_jsbytes("36626"), + cst_44185=caml_string_of_jsbytes("44185"), + cst_1$116=caml_string_of_jsbytes("1"), + cst_7558=caml_string_of_jsbytes("7558"), + cst_51744=caml_string_of_jsbytes("51744"), + cst_0$189=caml_string_of_jsbytes("0"), + cst_32686=caml_string_of_jsbytes("32686"), + cst_39340=caml_string_of_jsbytes("39340"), + cst_1$117=caml_string_of_jsbytes("1"), + cst_6655=caml_string_of_jsbytes("6655"), + cst_45997=caml_string_of_jsbytes("45997"), + cst_0$190=caml_string_of_jsbytes("0"), + cst_30514=caml_string_of_jsbytes("30514"), + cst_36589=caml_string_of_jsbytes("36589"), + cst_1$118=caml_string_of_jsbytes("1"), + cst_6075=caml_string_of_jsbytes("6075"), + cst_42665=caml_string_of_jsbytes("42665"), + cst_0$185=caml_string_of_jsbytes("0"), + cst_29482=caml_string_of_jsbytes("29482"), + cst_35578=caml_string_of_jsbytes("35578"), + cst_1$113=caml_string_of_jsbytes("1"), + cst_6096=caml_string_of_jsbytes("6096"), + cst_41673=caml_string_of_jsbytes("41673"), + cst_0$186=caml_string_of_jsbytes("0"), + cst_26281=caml_string_of_jsbytes("26281"), + cst_31653=caml_string_of_jsbytes("31653"), + cst_1$114=caml_string_of_jsbytes("1"), + cst_5371=caml_string_of_jsbytes("5371"), + cst_37023=caml_string_of_jsbytes("37023"), + cst_0$187=caml_string_of_jsbytes("0"), + cst_24544=caml_string_of_jsbytes("24544"), + cst_29444=caml_string_of_jsbytes("29444"), + cst_1$115=caml_string_of_jsbytes("1"), + cst_4902=caml_string_of_jsbytes("4902"), + cst_34346=caml_string_of_jsbytes("34346"), + cst_0$182=caml_string_of_jsbytes("0"), + cst_36835=caml_string_of_jsbytes("36835"), + cst_44437=caml_string_of_jsbytes("44437"), + cst_1$110=caml_string_of_jsbytes("1"), + cst_7601=caml_string_of_jsbytes("7601"), + cst_52039=caml_string_of_jsbytes("52039"), + cst_0$183=caml_string_of_jsbytes("0"), + cst_32872=caml_string_of_jsbytes("32872"), + cst_39564=caml_string_of_jsbytes("39564"), + cst_1$111=caml_string_of_jsbytes("1"), + cst_6693=caml_string_of_jsbytes("6693"), + cst_46259=caml_string_of_jsbytes("46259"), + cst_0$184=caml_string_of_jsbytes("0"), + cst_30688=caml_string_of_jsbytes("30688"), + cst_36798=caml_string_of_jsbytes("36798"), + cst_1$112=caml_string_of_jsbytes("1"), + cst_6110=caml_string_of_jsbytes("6110"), + cst_42908=caml_string_of_jsbytes("42908"), + cst_0$179=caml_string_of_jsbytes("0"), + cst_29650=caml_string_of_jsbytes("29650"), + cst_35781=caml_string_of_jsbytes("35781"), + cst_1$107=caml_string_of_jsbytes("1"), + cst_6131=caml_string_of_jsbytes("6131"), + cst_41911=caml_string_of_jsbytes("41911"), + cst_0$180=caml_string_of_jsbytes("0"), + cst_26431=caml_string_of_jsbytes("26431"), + cst_31833=caml_string_of_jsbytes("31833"), + cst_1$108=caml_string_of_jsbytes("1"), + cst_5402=caml_string_of_jsbytes("5402"), + cst_37234=caml_string_of_jsbytes("37234"), + cst_0$181=caml_string_of_jsbytes("0"), + cst_24684=caml_string_of_jsbytes("24684"), + cst_29612=caml_string_of_jsbytes("29612"), + cst_1$109=caml_string_of_jsbytes("1"), + cst_4930=caml_string_of_jsbytes("4930"), + cst_34542=caml_string_of_jsbytes("34542"), + cst_0$176=caml_string_of_jsbytes("0"), + cst_36864=caml_string_of_jsbytes("36864"), + cst_44473=caml_string_of_jsbytes("44473"), + cst_1$104=caml_string_of_jsbytes("1"), + cst_7607=caml_string_of_jsbytes("7607"), + cst_52081=caml_string_of_jsbytes("52081"), + cst_0$177=caml_string_of_jsbytes("0"), + cst_32898=caml_string_of_jsbytes("32898"), + cst_39596=caml_string_of_jsbytes("39596"), + cst_1$105=caml_string_of_jsbytes("1"), + cst_6698=caml_string_of_jsbytes("6698"), + cst_46296=caml_string_of_jsbytes("46296"), + cst_0$178=caml_string_of_jsbytes("0"), + cst_30713=caml_string_of_jsbytes("30713"), + cst_36827=caml_string_of_jsbytes("36827"), + cst_1$106=caml_string_of_jsbytes("1"), + cst_6115=caml_string_of_jsbytes("6115"), + cst_42942=caml_string_of_jsbytes("42942"), + cst_0$173=caml_string_of_jsbytes("0"), + cst_29674=caml_string_of_jsbytes("29674"), + cst_35810=caml_string_of_jsbytes("35810"), + cst_1$101=caml_string_of_jsbytes("1"), + cst_6136=caml_string_of_jsbytes("6136"), + cst_41945=caml_string_of_jsbytes("41945"), + cst_0$174=caml_string_of_jsbytes("0"), + cst_26452=caml_string_of_jsbytes("26452"), + cst_31858=caml_string_of_jsbytes("31858"), + cst_1$102=caml_string_of_jsbytes("1"), + cst_5406=caml_string_of_jsbytes("5406"), + cst_37264=caml_string_of_jsbytes("37264"), + cst_0$175=caml_string_of_jsbytes("0"), + cst_24704=caml_string_of_jsbytes("24704"), + cst_29636=caml_string_of_jsbytes("29636"), + cst_1$103=caml_string_of_jsbytes("1"), + cst_4934=caml_string_of_jsbytes("4934"), + cst_34570=caml_string_of_jsbytes("34570"), + cst_0$170=caml_string_of_jsbytes("0"), + cst_37140=caml_string_of_jsbytes("37140"), + cst_44807=caml_string_of_jsbytes("44807"), + cst_1$98=caml_string_of_jsbytes("1"), + cst_7664=caml_string_of_jsbytes("7664"), + cst_52472=caml_string_of_jsbytes("52472"), + cst_0$171=caml_string_of_jsbytes("0"), + cst_33145=caml_string_of_jsbytes("33145"), + cst_39893=caml_string_of_jsbytes("39893"), + cst_1$99=caml_string_of_jsbytes("1"), + cst_6748=caml_string_of_jsbytes("6748"), + cst_46643=caml_string_of_jsbytes("46643"), + cst_0$172=caml_string_of_jsbytes("0"), + cst_30943=caml_string_of_jsbytes("30943"), + cst_37103=caml_string_of_jsbytes("37103"), + cst_1$100=caml_string_of_jsbytes("1"), + cst_6161=caml_string_of_jsbytes("6161"), + cst_43264=caml_string_of_jsbytes("43264"), + cst_0$167=caml_string_of_jsbytes("0"), + cst_29897=caml_string_of_jsbytes("29897"), + cst_36079=caml_string_of_jsbytes("36079"), + cst_1$95=caml_string_of_jsbytes("1"), + cst_6182=caml_string_of_jsbytes("6182"), + cst_42260=caml_string_of_jsbytes("42260"), + cst_0$168=caml_string_of_jsbytes("0"), + cst_26650=caml_string_of_jsbytes("26650"), + cst_32097=caml_string_of_jsbytes("32097"), + cst_1$96=caml_string_of_jsbytes("1"), + cst_5447=caml_string_of_jsbytes("5447"), + cst_37543=caml_string_of_jsbytes("37543"), + cst_0$169=caml_string_of_jsbytes("0"), + cst_24889=caml_string_of_jsbytes("24889"), + cst_29858=caml_string_of_jsbytes("29858"), + cst_1$97=caml_string_of_jsbytes("1"), + cst_4971=caml_string_of_jsbytes("4971"), + cst_34829=caml_string_of_jsbytes("34829"), + cst_0$164=caml_string_of_jsbytes("0"), + cst_37252=caml_string_of_jsbytes("37252"), + cst_44941=caml_string_of_jsbytes("44941"), + cst_1$92=caml_string_of_jsbytes("1"), + cst_7687=caml_string_of_jsbytes("7687"), + cst_52629=caml_string_of_jsbytes("52629"), + cst_0$165=caml_string_of_jsbytes("0"), + cst_33244=caml_string_of_jsbytes("33244"), + cst_40013=caml_string_of_jsbytes("40013"), + cst_1$93=caml_string_of_jsbytes("1"), + cst_6768=caml_string_of_jsbytes("6768"), + cst_46783=caml_string_of_jsbytes("46783"), + cst_0$166=caml_string_of_jsbytes("0"), + cst_31036=caml_string_of_jsbytes("31036"), + cst_37215=caml_string_of_jsbytes("37215"), + cst_1$94=caml_string_of_jsbytes("1"), + cst_6179=caml_string_of_jsbytes("6179"), + cst_43394=caml_string_of_jsbytes("43394"), + cst_0$161=caml_string_of_jsbytes("0"), + cst_29986=caml_string_of_jsbytes("29986"), + cst_36187=caml_string_of_jsbytes("36187"), + cst_1$89=caml_string_of_jsbytes("1"), + cst_6201=caml_string_of_jsbytes("6201"), + cst_42386=caml_string_of_jsbytes("42386"), + cst_0$162=caml_string_of_jsbytes("0"), + cst_26730=caml_string_of_jsbytes("26730"), + cst_32193=caml_string_of_jsbytes("32193"), + cst_1$90=caml_string_of_jsbytes("1"), + cst_5463=caml_string_of_jsbytes("5463"), + cst_37656=caml_string_of_jsbytes("37656"), + cst_0$163=caml_string_of_jsbytes("0"), + cst_24964=caml_string_of_jsbytes("24964"), + cst_29948=caml_string_of_jsbytes("29948"), + cst_1$91=caml_string_of_jsbytes("1"), + cst_4986=caml_string_of_jsbytes("4986"), + cst_34934=caml_string_of_jsbytes("34934"), + cst_0$158=caml_string_of_jsbytes("0"), + cst_208500=caml_string_of_jsbytes("208500"), + cst_251500=caml_string_of_jsbytes("251500"), + cst_1$86=caml_string_of_jsbytes("1"), + cst_43000=caml_string_of_jsbytes("43000"), + cst_294500=caml_string_of_jsbytes("294500"), + cst_0$159=caml_string_of_jsbytes("0"), + cst_186000=caml_string_of_jsbytes("186000"), + cst_223900=caml_string_of_jsbytes("223900"), + cst_1$87=caml_string_of_jsbytes("1"), + cst_37900=caml_string_of_jsbytes("37900"), + cst_261800=caml_string_of_jsbytes("261800"), + cst_0$160=caml_string_of_jsbytes("0"), + cst_173600=caml_string_of_jsbytes("173600"), + cst_208200=caml_string_of_jsbytes("208200"), + cst_1$88=caml_string_of_jsbytes("1"), + cst_35600=caml_string_of_jsbytes("35600"), + cst_242800=caml_string_of_jsbytes("242800"), + cst_0$155=caml_string_of_jsbytes("0"), + cst_167800=caml_string_of_jsbytes("167800"), + cst_202500=caml_string_of_jsbytes("202500"), + cst_1$83=caml_string_of_jsbytes("1"), + cst_34700=caml_string_of_jsbytes("34700"), + cst_237200=caml_string_of_jsbytes("237200"), + cst_0$156=caml_string_of_jsbytes("0"), + cst_149600=caml_string_of_jsbytes("149600"), + cst_180100=caml_string_of_jsbytes("180100"), + cst_1$84=caml_string_of_jsbytes("1"), + cst_30500$1=caml_string_of_jsbytes("30500"), + cst_210600=caml_string_of_jsbytes("210600"), + cst_0$157=caml_string_of_jsbytes("0"), + cst_139700=caml_string_of_jsbytes("139700"), + cst_167600=caml_string_of_jsbytes("167600"), + cst_1$85=caml_string_of_jsbytes("1"), + cst_27900=caml_string_of_jsbytes("27900"), + cst_195500=caml_string_of_jsbytes("195500"), + cst_0$152=caml_string_of_jsbytes("0"), + cst_184000=caml_string_of_jsbytes("184000"), + cst_220000=caml_string_of_jsbytes("220000"), + cst_1$80=caml_string_of_jsbytes("1"), + cst_38000=caml_string_of_jsbytes("38000"), + cst_260000=caml_string_of_jsbytes("260000"), + cst_0$153=caml_string_of_jsbytes("0"), + cst_164200=caml_string_of_jsbytes("164200"), + cst_197700=caml_string_of_jsbytes("197700"), + cst_1$81=caml_string_of_jsbytes("1"), + cst_33500=caml_string_of_jsbytes("33500"), + cst_231200=caml_string_of_jsbytes("231200"), + cst_0$154=caml_string_of_jsbytes("0"), + cst_153200=caml_string_of_jsbytes("153200"), + cst_183700=caml_string_of_jsbytes("183700"), + cst_1$82=caml_string_of_jsbytes("1"), + cst_30500$0=caml_string_of_jsbytes("30500"), + cst_214200=caml_string_of_jsbytes("214200"), + cst_0$149=caml_string_of_jsbytes("0"), + cst_148100=caml_string_of_jsbytes("148100"), + cst_178700=caml_string_of_jsbytes("178700"), + cst_1$77=caml_string_of_jsbytes("1"), + cst_30600=caml_string_of_jsbytes("30600"), + cst_209300=caml_string_of_jsbytes("209300"), + cst_0$150=caml_string_of_jsbytes("0"), + cst_132000=caml_string_of_jsbytes("132000"), + cst_158900=caml_string_of_jsbytes("158900"), + cst_1$78=caml_string_of_jsbytes("1"), + cst_26900=caml_string_of_jsbytes("26900"), + cst_185800=caml_string_of_jsbytes("185800"), + cst_0$151=caml_string_of_jsbytes("0"), + cst_123300=caml_string_of_jsbytes("123300"), + cst_147900=caml_string_of_jsbytes("147900"), + cst_1$79=caml_string_of_jsbytes("1"), + cst_24600=caml_string_of_jsbytes("24600"), + cst_172500=caml_string_of_jsbytes("172500"), + cst_0$147=caml_string_of_jsbytes("0"), + cst_0$148=caml_string_of_jsbytes("0"), + cst_1272$2=caml_string_of_jsbytes("1272"), + cst_2805$0=caml_string_of_jsbytes("2805"), + cst_5612$2=caml_string_of_jsbytes("5612"), + cst_1229$2=caml_string_of_jsbytes("1229"), + cst_2710$0=caml_string_of_jsbytes("2710"), + cst_5422$2=caml_string_of_jsbytes("5422"), + cst_1224$2=caml_string_of_jsbytes("1224"), + cst_2699$0=caml_string_of_jsbytes("2699"), + cst_5399$2=caml_string_of_jsbytes("5399"), + cst_1272$1=caml_string_of_jsbytes("1272"), + cst_5612$1=caml_string_of_jsbytes("5612"), + cst_1229$1=caml_string_of_jsbytes("1229"), + cst_5422$1=caml_string_of_jsbytes("5422"), + cst_1224$1=caml_string_of_jsbytes("1224"), + cst_5399$1=caml_string_of_jsbytes("5399"), + cst_0_0226=caml_string_of_jsbytes("0.0226"), + cst_0_0234=caml_string_of_jsbytes("0.0234"), + cst_0_0172=caml_string_of_jsbytes("0.0172"), + cst_0_0226$0=caml_string_of_jsbytes("0.0226"), + cst_0_0234$0=caml_string_of_jsbytes("0.0234"), + cst_6_55957=caml_string_of_jsbytes("6.55957"), + cst_1$76=caml_string_of_jsbytes("1."), + cst_0_416=caml_string_of_jsbytes("0.416"), + cst_0_208$0=caml_string_of_jsbytes("0.208"), + cst_560085=caml_string_of_jsbytes("560085"), + cst_16_25=caml_string_of_jsbytes("16.25"), + cst_2211133=caml_string_of_jsbytes("2211133"), + cst_1000$2=caml_string_of_jsbytes("1000"), + cst_500$1=caml_string_of_jsbytes("500"), + cst_0$146=caml_string_of_jsbytes("0"), + cst_0$144=caml_string_of_jsbytes("0"), + cst_0$145=caml_string_of_jsbytes("0"), + cst_50$0=caml_string_of_jsbytes("50"), + cst_0$142=caml_string_of_jsbytes("0"), + cst_0$143=caml_string_of_jsbytes("0"), + cst_0_9$1=caml_string_of_jsbytes("0.9"), + cst_0_9$2=caml_string_of_jsbytes("0.9"), + cst_0_95$0=caml_string_of_jsbytes("0.95"), + cst_0_95$1=caml_string_of_jsbytes("0.95"), + cst_0$140=caml_string_of_jsbytes("0"), + cst_0$141=caml_string_of_jsbytes("0"), + cst_100$7=caml_string_of_jsbytes("100."), + cst_100$8=caml_string_of_jsbytes("100."), + cst_0_005$1=caml_string_of_jsbytes("0.005"), + cst_100$5=caml_string_of_jsbytes("100."), + cst_100$6=caml_string_of_jsbytes("100."), + cst_0_005$0=caml_string_of_jsbytes("0.005"), + cst_0$139=caml_string_of_jsbytes("0"), + cst_0_9$0=caml_string_of_jsbytes("0.9"), + cst_0$137=caml_string_of_jsbytes("0"), + cst_0$138=caml_string_of_jsbytes("0"), + cst_0_95=caml_string_of_jsbytes("0.95"), + cst_2142091=caml_string_of_jsbytes("2142091"), + cst_1339340=caml_string_of_jsbytes("1339340"), + cst_1500=caml_string_of_jsbytes("1500"), + cst_2668=caml_string_of_jsbytes("2668"), + cst_0$135=caml_string_of_jsbytes("0"), + cst_0$136=caml_string_of_jsbytes("0"), + cst_0$132=caml_string_of_jsbytes("0"), + cst_46192=caml_string_of_jsbytes("46192"), + cst_54152=caml_string_of_jsbytes("54152"), + cst_1$73=caml_string_of_jsbytes("1"), + cst_57741=caml_string_of_jsbytes("57741"), + cst_2$38=caml_string_of_jsbytes("2"), + cst_61794=caml_string_of_jsbytes("61794"), + cst_3$23=caml_string_of_jsbytes("3"), + cst_65862=caml_string_of_jsbytes("65862"), + cst_4$19=caml_string_of_jsbytes("4"), + cst_7368=caml_string_of_jsbytes("7368"), + cst_71039=caml_string_of_jsbytes("71039"), + cst_0$133=caml_string_of_jsbytes("0"), + cst_42242=caml_string_of_jsbytes("42242"), + cst_49299=caml_string_of_jsbytes("49299"), + cst_1$74=caml_string_of_jsbytes("1"), + cst_52565=caml_string_of_jsbytes("52565"), + cst_2$39=caml_string_of_jsbytes("2"), + cst_56268=caml_string_of_jsbytes("56268"), + cst_3$24=caml_string_of_jsbytes("3"), + cst_59957=caml_string_of_jsbytes("59957"), + cst_4$20=caml_string_of_jsbytes("4"), + cst_6659=caml_string_of_jsbytes("6659"), + cst_63887=caml_string_of_jsbytes("63887"), + cst_0$134=caml_string_of_jsbytes("0"), + cst_40096=caml_string_of_jsbytes("40096"), + cst_46634=caml_string_of_jsbytes("46634"), + cst_1$75=caml_string_of_jsbytes("1"), + cst_49475=caml_string_of_jsbytes("49475"), + cst_2$40=caml_string_of_jsbytes("2"), + cst_52740=caml_string_of_jsbytes("52740"), + cst_3$25=caml_string_of_jsbytes("3"), + cst_56004=caml_string_of_jsbytes("56004"), + cst_4$21=caml_string_of_jsbytes("4"), + cst_6180=caml_string_of_jsbytes("6180"), + cst_59675=caml_string_of_jsbytes("59675"), + cst_0$129=caml_string_of_jsbytes("0"), + cst_44630=caml_string_of_jsbytes("44630"), + cst_52321=caml_string_of_jsbytes("52321"), + cst_1$70=caml_string_of_jsbytes("1"), + cst_55788=caml_string_of_jsbytes("55788"), + cst_2$35=caml_string_of_jsbytes("2"), + cst_59704=caml_string_of_jsbytes("59704"), + cst_3$20=caml_string_of_jsbytes("3"), + cst_63635=caml_string_of_jsbytes("63635"), + cst_4$16=caml_string_of_jsbytes("4"), + cst_7119=caml_string_of_jsbytes("7119"), + cst_68637=caml_string_of_jsbytes("68637"), + cst_0$130=caml_string_of_jsbytes("0"), + cst_40814=caml_string_of_jsbytes("40814"), + cst_47632=caml_string_of_jsbytes("47632"), + cst_1$71=caml_string_of_jsbytes("1"), + cst_50787=caml_string_of_jsbytes("50787"), + cst_2$36=caml_string_of_jsbytes("2"), + cst_54365=caml_string_of_jsbytes("54365"), + cst_3$21=caml_string_of_jsbytes("3"), + cst_57929=caml_string_of_jsbytes("57929"), + cst_4$17=caml_string_of_jsbytes("4"), + cst_6434=caml_string_of_jsbytes("6434"), + cst_61727=caml_string_of_jsbytes("61727"), + cst_0$131=caml_string_of_jsbytes("0"), + cst_38740=caml_string_of_jsbytes("38740"), + cst_45057=caml_string_of_jsbytes("45057"), + cst_1$72=caml_string_of_jsbytes("1"), + cst_47802=caml_string_of_jsbytes("47802"), + cst_2$37=caml_string_of_jsbytes("2"), + cst_50957=caml_string_of_jsbytes("50957"), + cst_3$22=caml_string_of_jsbytes("3"), + cst_54110=caml_string_of_jsbytes("54110"), + cst_4$18=caml_string_of_jsbytes("4"), + cst_5971=caml_string_of_jsbytes("5971"), + cst_57657=caml_string_of_jsbytes("57657"), + cst_0$126=caml_string_of_jsbytes("0"), + cst_44443=caml_string_of_jsbytes("44443"), + cst_52101=caml_string_of_jsbytes("52101"), + cst_1$67=caml_string_of_jsbytes("1"), + cst_55555=caml_string_of_jsbytes("55555"), + cst_2$32=caml_string_of_jsbytes("2"), + cst_59454=caml_string_of_jsbytes("59454"), + cst_3$17=caml_string_of_jsbytes("3"), + cst_63369=caml_string_of_jsbytes("63369"), + cst_4$13=caml_string_of_jsbytes("4"), + cst_7089=caml_string_of_jsbytes("7089"), + cst_68350=caml_string_of_jsbytes("68350"), + cst_0$127=caml_string_of_jsbytes("0"), + cst_40643=caml_string_of_jsbytes("40643"), + cst_47433=caml_string_of_jsbytes("47433"), + cst_1$68=caml_string_of_jsbytes("1"), + cst_50575=caml_string_of_jsbytes("50575"), + cst_2$33=caml_string_of_jsbytes("2"), + cst_54138=caml_string_of_jsbytes("54138"), + cst_3$18=caml_string_of_jsbytes("3"), + cst_57687=caml_string_of_jsbytes("57687"), + cst_4$14=caml_string_of_jsbytes("4"), + cst_6407=caml_string_of_jsbytes("6407"), + cst_61469=caml_string_of_jsbytes("61469"), + cst_0$128=caml_string_of_jsbytes("0"), + cst_38578=caml_string_of_jsbytes("38578"), + cst_44869=caml_string_of_jsbytes("44869"), + cst_1$69=caml_string_of_jsbytes("1"), + cst_47602=caml_string_of_jsbytes("47602"), + cst_2$34=caml_string_of_jsbytes("2"), + cst_50744=caml_string_of_jsbytes("50744"), + cst_3$19=caml_string_of_jsbytes("3"), + cst_53884=caml_string_of_jsbytes("53884"), + cst_4$15=caml_string_of_jsbytes("4"), + cst_5946=caml_string_of_jsbytes("5946"), + cst_57416=caml_string_of_jsbytes("57416"), + cst_1000$1=caml_string_of_jsbytes("1000"), + cst_500$0=caml_string_of_jsbytes("500"), + cst_121726=caml_string_of_jsbytes("121726"), + cst_0$124=caml_string_of_jsbytes("0"), + cst_0$125=caml_string_of_jsbytes("0"), + cst_0$122=caml_string_of_jsbytes("0"), + cst_0$123=caml_string_of_jsbytes("0"), + cst_0$121=caml_string_of_jsbytes("0"), + cst_0$119=caml_string_of_jsbytes("0"), + cst_0$120=caml_string_of_jsbytes("0"), + cst_100000$3=caml_string_of_jsbytes("100000."), + cst_100000$4=caml_string_of_jsbytes("100000."), + cst_100000$1=caml_string_of_jsbytes("100000."), + cst_100000$2=caml_string_of_jsbytes("100000."), + cst_100000=caml_string_of_jsbytes("100000."), + cst_100000$0=caml_string_of_jsbytes("100000."), + cst_50=caml_string_of_jsbytes("50"), + cst_0$117=caml_string_of_jsbytes("0"), + cst_0$118=caml_string_of_jsbytes("0"), + cst_0_45$3=caml_string_of_jsbytes("0.45"), + cst_0$115=caml_string_of_jsbytes("0."), + cst_0_75$5=caml_string_of_jsbytes("0.75"), + cst_0_45$4=caml_string_of_jsbytes("0.45"), + cst_0_0045$5=caml_string_of_jsbytes("0.0045"), + cst_0_0045$6=caml_string_of_jsbytes("0.0045"), + cst_0_75$6=caml_string_of_jsbytes("0.75"), + cst_0_75$7=caml_string_of_jsbytes("0.75"), + cst_0_0068$1=caml_string_of_jsbytes("0.0068"), + cst_0_3$1=caml_string_of_jsbytes("0.3"), + cst_0_0045$7=caml_string_of_jsbytes("0.0045"), + cst_0$116=caml_string_of_jsbytes("0."), + cst_0_45$1=caml_string_of_jsbytes("0.45"), + cst_0$113=caml_string_of_jsbytes("0."), + cst_0_75$2=caml_string_of_jsbytes("0.75"), + cst_0_45$2=caml_string_of_jsbytes("0.45"), + cst_0_0045$2=caml_string_of_jsbytes("0.0045"), + cst_0_0045$3=caml_string_of_jsbytes("0.0045"), + cst_0_75$3=caml_string_of_jsbytes("0.75"), + cst_0_75$4=caml_string_of_jsbytes("0.75"), + cst_0_0068$0=caml_string_of_jsbytes("0.0068"), + cst_0_3$0=caml_string_of_jsbytes("0.3"), + cst_0_0045$4=caml_string_of_jsbytes("0.0045"), + cst_0$114=caml_string_of_jsbytes("0."), + cst_0_45=caml_string_of_jsbytes("0.45"), + cst_0$111=caml_string_of_jsbytes("0."), + cst_0_75=caml_string_of_jsbytes("0.75"), + cst_0_45$0=caml_string_of_jsbytes("0.45"), + cst_0_0045=caml_string_of_jsbytes("0.0045"), + cst_0_0045$0=caml_string_of_jsbytes("0.0045"), + cst_0_75$0=caml_string_of_jsbytes("0.75"), + cst_0_75$1=caml_string_of_jsbytes("0.75"), + cst_0_0068=caml_string_of_jsbytes("0.0068"), + cst_0_3=caml_string_of_jsbytes("0.3"), + cst_0_0045$1=caml_string_of_jsbytes("0.0045"), + cst_0$112=caml_string_of_jsbytes("0."), + cst_0$109=caml_string_of_jsbytes("0"), + cst_0$110=caml_string_of_jsbytes("0"), + cst_100$3=caml_string_of_jsbytes("100."), + cst_100$4=caml_string_of_jsbytes("100."), + cst_100$1=caml_string_of_jsbytes("100."), + cst_100$2=caml_string_of_jsbytes("100."), + cst_100=caml_string_of_jsbytes("100."), + cst_100$0=caml_string_of_jsbytes("100."), + cst_3663=caml_string_of_jsbytes("3663"), + cst_0_085$3=caml_string_of_jsbytes("0.085"), + cst_0_085$4=caml_string_of_jsbytes("0.085"), + cst_3663$0=caml_string_of_jsbytes("3663"), + cst_3539=caml_string_of_jsbytes("3539"), + cst_0_085$1=caml_string_of_jsbytes("0.085"), + cst_0_085$2=caml_string_of_jsbytes("0.085"), + cst_3539$0=caml_string_of_jsbytes("3539"), + cst_3524=caml_string_of_jsbytes("3524"), + cst_0_085=caml_string_of_jsbytes("0.085"), + cst_0_085$0=caml_string_of_jsbytes("0.085"), + cst_3524$0=caml_string_of_jsbytes("3524"), + cst_0$108=caml_string_of_jsbytes("0"), + cst_3_4=caml_string_of_jsbytes("3.4"), + cst_2_5$2=caml_string_of_jsbytes("2.5"), + cst_2_5$3=caml_string_of_jsbytes("2.5"), + cst_4$12=caml_string_of_jsbytes("4."), + cst_3_1=caml_string_of_jsbytes("3.1"), + cst_3_1$0=caml_string_of_jsbytes("3.1"), + cst_3$16=caml_string_of_jsbytes("3."), + cst_2$31=caml_string_of_jsbytes("2."), + cst_1272$0=caml_string_of_jsbytes("1272"), + cst_2805=caml_string_of_jsbytes("2805"), + cst_5612$0=caml_string_of_jsbytes("5612"), + cst_1229$0=caml_string_of_jsbytes("1229"), + cst_2710=caml_string_of_jsbytes("2710"), + cst_5422$0=caml_string_of_jsbytes("5422"), + cst_1224$0=caml_string_of_jsbytes("1224"), + cst_2699=caml_string_of_jsbytes("2699"), + cst_5399$0=caml_string_of_jsbytes("5399"), + cst_1272=caml_string_of_jsbytes("1272"), + cst_5612=caml_string_of_jsbytes("5612"), + cst_1229=caml_string_of_jsbytes("1229"), + cst_5422=caml_string_of_jsbytes("5422"), + cst_1224=caml_string_of_jsbytes("1224"), + cst_5399=caml_string_of_jsbytes("5399"), + cst_0$107=caml_string_of_jsbytes("0"), + cst_23138$0=caml_string_of_jsbytes("23138"), + cst_20165$0=caml_string_of_jsbytes("20165"), + cst_18900$0=caml_string_of_jsbytes("18900"), + cst_0$106=caml_string_of_jsbytes("0"), + cst_27905=caml_string_of_jsbytes("27905"), + cst_24683=caml_string_of_jsbytes("24683"), + cst_22911=caml_string_of_jsbytes("22911"), + cst_1$66=caml_string_of_jsbytes("1"), + cst_1$63=caml_string_of_jsbytes("1"), + cst_4576=caml_string_of_jsbytes("4576"), + cst_31539=caml_string_of_jsbytes("31539"), + cst_1$64=caml_string_of_jsbytes("1"), + cst_4043=caml_string_of_jsbytes("4043"), + cst_27774=caml_string_of_jsbytes("27774"), + cst_1$65=caml_string_of_jsbytes("1"), + cst_3682=caml_string_of_jsbytes("3682"), + cst_25689=caml_string_of_jsbytes("25689"), + cst_0$105=caml_string_of_jsbytes("0"), + cst_22355$0=caml_string_of_jsbytes("22355"), + cst_19484$0=caml_string_of_jsbytes("19484"), + cst_18261$0=caml_string_of_jsbytes("18261"), + cst_0$104=caml_string_of_jsbytes("0"), + cst_26962=caml_string_of_jsbytes("26962"), + cst_23848=caml_string_of_jsbytes("23848"), + cst_22136=caml_string_of_jsbytes("22136"), + cst_1$62=caml_string_of_jsbytes("1"), + cst_1$59=caml_string_of_jsbytes("1"), + cst_4421=caml_string_of_jsbytes("4421"), + cst_30473=caml_string_of_jsbytes("30473"), + cst_1$60=caml_string_of_jsbytes("1"), + cst_3906=caml_string_of_jsbytes("3906"), + cst_26835=caml_string_of_jsbytes("26835"), + cst_1$61=caml_string_of_jsbytes("1"), + cst_3557=caml_string_of_jsbytes("3557"), + cst_24821=caml_string_of_jsbytes("24821"), + cst_0$103=caml_string_of_jsbytes("0"), + cst_22262$0=caml_string_of_jsbytes("22262"), + cst_19402$0=caml_string_of_jsbytes("19402"), + cst_18185$0=caml_string_of_jsbytes("18185"), + cst_0$102=caml_string_of_jsbytes("0"), + cst_26849=caml_string_of_jsbytes("26849"), + cst_23748=caml_string_of_jsbytes("23748"), + cst_22044=caml_string_of_jsbytes("22044"), + cst_1$58=caml_string_of_jsbytes("1"), + cst_1$55=caml_string_of_jsbytes("1"), + cst_4403=caml_string_of_jsbytes("4403"), + cst_30345=caml_string_of_jsbytes("30345"), + cst_1$56=caml_string_of_jsbytes("1"), + cst_3890=caml_string_of_jsbytes("3890"), + cst_26723=caml_string_of_jsbytes("26723"), + cst_1$57=caml_string_of_jsbytes("1"), + cst_3542=caml_string_of_jsbytes("3542"), + cst_24717=caml_string_of_jsbytes("24717"), + cst_23138=caml_string_of_jsbytes("23138"), + cst_20165=caml_string_of_jsbytes("20165"), + cst_18900=caml_string_of_jsbytes("18900"), + cst_22355=caml_string_of_jsbytes("22355"), + cst_19484=caml_string_of_jsbytes("19484"), + cst_18261=caml_string_of_jsbytes("18261"), + cst_22262=caml_string_of_jsbytes("22262"), + cst_19402=caml_string_of_jsbytes("19402"), + cst_18185=caml_string_of_jsbytes("18185"), + cst_27765=caml_string_of_jsbytes("27765"), + cst_24198=caml_string_of_jsbytes("24198"), + cst_22680=caml_string_of_jsbytes("22680"), + cst_26826=caml_string_of_jsbytes("26826"), + cst_23380=caml_string_of_jsbytes("23380"), + cst_21913=caml_string_of_jsbytes("21913"), + cst_26714=caml_string_of_jsbytes("26714"), + cst_23282=caml_string_of_jsbytes("23282"), + cst_21821=caml_string_of_jsbytes("21821"), + cst_0$101=caml_string_of_jsbytes("0"), + cst_30850=caml_string_of_jsbytes("30850"), + cst_26887=caml_string_of_jsbytes("26887"), + cst_25200=caml_string_of_jsbytes("25200"), + cst_0$100=caml_string_of_jsbytes("0"), + cst_37207=caml_string_of_jsbytes("37207"), + cst_32910=caml_string_of_jsbytes("32910"), + cst_30548=caml_string_of_jsbytes("30548"), + cst_1$54=caml_string_of_jsbytes("1"), + cst_1$51=caml_string_of_jsbytes("1"), + cst_6101=caml_string_of_jsbytes("6101"), + cst_42052=caml_string_of_jsbytes("42052"), + cst_1$52=caml_string_of_jsbytes("1"), + cst_5390=caml_string_of_jsbytes("5390"), + cst_37032=caml_string_of_jsbytes("37032"), + cst_1$53=caml_string_of_jsbytes("1"), + cst_4909=caml_string_of_jsbytes("4909"), + cst_34252=caml_string_of_jsbytes("34252"), + cst_0$99=caml_string_of_jsbytes("0"), + cst_29807=caml_string_of_jsbytes("29807"), + cst_25978$1=caml_string_of_jsbytes("25978"), + cst_24348=caml_string_of_jsbytes("24348"), + cst_0$98=caml_string_of_jsbytes("0"), + cst_35949=caml_string_of_jsbytes("35949"), + cst_31797$1=caml_string_of_jsbytes("31797"), + cst_29515=caml_string_of_jsbytes("29515"), + cst_1$50=caml_string_of_jsbytes("1"), + cst_1$47=caml_string_of_jsbytes("1"), + cst_5895=caml_string_of_jsbytes("5895"), + cst_40630=caml_string_of_jsbytes("40630"), + cst_1$48=caml_string_of_jsbytes("1"), + cst_5208$1=caml_string_of_jsbytes("5208"), + cst_35780$1=caml_string_of_jsbytes("35780"), + cst_1$49=caml_string_of_jsbytes("1"), + cst_4743=caml_string_of_jsbytes("4743"), + cst_33094=caml_string_of_jsbytes("33094"), + cst_0$97=caml_string_of_jsbytes("0"), + cst_29682=caml_string_of_jsbytes("29682"), + cst_25859=caml_string_of_jsbytes("25859"), + cst_24246=caml_string_of_jsbytes("24246"), + cst_0$96=caml_string_of_jsbytes("0"), + cst_35799=caml_string_of_jsbytes("35799"), + cst_31664$0=caml_string_of_jsbytes("31664"), + cst_29392=caml_string_of_jsbytes("29392"), + cst_1$46=caml_string_of_jsbytes("1"), + cst_1$43=caml_string_of_jsbytes("1"), + cst_5870=caml_string_of_jsbytes("5870"), + cst_40460=caml_string_of_jsbytes("40460"), + cst_1$44=caml_string_of_jsbytes("1"), + cst_5186$0=caml_string_of_jsbytes("5186"), + cst_35630$0=caml_string_of_jsbytes("35630"), + cst_1$45=caml_string_of_jsbytes("1"), + cst_4723=caml_string_of_jsbytes("4723"), + cst_32956=caml_string_of_jsbytes("32956"), + cst_0$95=caml_string_of_jsbytes("0"), + cst_1000=caml_string_of_jsbytes("1000"), + cst_1000$0=caml_string_of_jsbytes("1000"), + cst_0$94=caml_string_of_jsbytes("0"), + cst_25978$0=caml_string_of_jsbytes("25978"), + cst_31797$0=caml_string_of_jsbytes("31797"), + cst_1$42=caml_string_of_jsbytes("1"), + cst_5208$0=caml_string_of_jsbytes("5208"), + cst_35780$0=caml_string_of_jsbytes("35780"), + cst_0$93=caml_string_of_jsbytes("0"), + cst_25978=caml_string_of_jsbytes("25978"), + cst_31797=caml_string_of_jsbytes("31797"), + cst_1$41=caml_string_of_jsbytes("1"), + cst_5208=caml_string_of_jsbytes("5208"), + cst_35780=caml_string_of_jsbytes("35780"), + cst_0$92=caml_string_of_jsbytes("0"), + cst_25869=caml_string_of_jsbytes("25869"), + cst_31664=caml_string_of_jsbytes("31664"), + cst_1$40=caml_string_of_jsbytes("1"), + cst_5186=caml_string_of_jsbytes("5186"), + cst_35630=caml_string_of_jsbytes("35630"), + cst_0$91=caml_string_of_jsbytes("0"), + cst_494900=caml_string_of_jsbytes("494900"), + cst_709000=caml_string_of_jsbytes("709000"), + cst_1$39=caml_string_of_jsbytes("1"), + cst_845600=caml_string_of_jsbytes("845600"), + cst_2$30=caml_string_of_jsbytes("2"), + cst_864600=caml_string_of_jsbytes("864600"), + cst_3$15=caml_string_of_jsbytes("3"), + cst_897700=caml_string_of_jsbytes("897700"), + cst_4$11=caml_string_of_jsbytes("4"), + cst_931100=caml_string_of_jsbytes("931100"), + cst_5$5=caml_string_of_jsbytes("5"), + cst_964200=caml_string_of_jsbytes("964200"), + cst_6$13=caml_string_of_jsbytes("6"), + cst_997500=caml_string_of_jsbytes("997500"), + cst_6$14=caml_string_of_jsbytes("6"), + cst_32800=caml_string_of_jsbytes("32800"), + cst_997500$0=caml_string_of_jsbytes("997500"), + cst_0$90=caml_string_of_jsbytes("0"), + cst_487000=caml_string_of_jsbytes("487000"), + cst_697700=caml_string_of_jsbytes("697700"), + cst_1$38=caml_string_of_jsbytes("1"), + cst_832200$0=caml_string_of_jsbytes("832200"), + cst_2$29=caml_string_of_jsbytes("2"), + cst_850900=caml_string_of_jsbytes("850900"), + cst_3$14=caml_string_of_jsbytes("3"), + cst_883400=caml_string_of_jsbytes("883400"), + cst_4$10=caml_string_of_jsbytes("4"), + cst_916300=caml_string_of_jsbytes("916300"), + cst_5$4=caml_string_of_jsbytes("5"), + cst_948800=caml_string_of_jsbytes("948800"), + cst_6$11=caml_string_of_jsbytes("6"), + cst_981600=caml_string_of_jsbytes("981600"), + cst_6$12=caml_string_of_jsbytes("6"), + cst_32300=caml_string_of_jsbytes("32300"), + cst_981600$0=caml_string_of_jsbytes("981600"), + cst_0$89=caml_string_of_jsbytes("0"), + cst_468300=caml_string_of_jsbytes("468300"), + cst_670900=caml_string_of_jsbytes("670900"), + cst_1$37=caml_string_of_jsbytes("1"), + cst_800200=caml_string_of_jsbytes("800200"), + cst_2$28=caml_string_of_jsbytes("2"), + cst_819200=caml_string_of_jsbytes("819200"), + cst_3$13=caml_string_of_jsbytes("3"), + cst_849500=caml_string_of_jsbytes("849500"), + cst_4$9=caml_string_of_jsbytes("4"), + cst_881100=caml_string_of_jsbytes("881100"), + cst_5$3=caml_string_of_jsbytes("5"), + cst_912400=caml_string_of_jsbytes("912400"), + cst_6$9=caml_string_of_jsbytes("6"), + cst_943900=caml_string_of_jsbytes("943900"), + cst_6$10=caml_string_of_jsbytes("6"), + cst_31100=caml_string_of_jsbytes("31100"), + cst_943900$0=caml_string_of_jsbytes("943900"), + cst_0$88=caml_string_of_jsbytes("0"), + cst_458800=caml_string_of_jsbytes("458800"), + cst_657200=caml_string_of_jsbytes("657200"), + cst_1$36=caml_string_of_jsbytes("1"), + cst_783900=caml_string_of_jsbytes("783900"), + cst_2$27=caml_string_of_jsbytes("2"), + cst_801500=caml_string_of_jsbytes("801500"), + cst_3$12=caml_string_of_jsbytes("3"), + cst_832200=caml_string_of_jsbytes("832200"), + cst_4$8=caml_string_of_jsbytes("4"), + cst_863100=caml_string_of_jsbytes("863100"), + cst_5$2=caml_string_of_jsbytes("5"), + cst_893800=caml_string_of_jsbytes("893800"), + cst_6$7=caml_string_of_jsbytes("6"), + cst_924600=caml_string_of_jsbytes("924600"), + cst_6$8=caml_string_of_jsbytes("6"), + cst_30500=caml_string_of_jsbytes("30500"), + cst_924600$0=caml_string_of_jsbytes("924600"), + cst_0$87=caml_string_of_jsbytes("0"), + cst_0_0283$1=caml_string_of_jsbytes("0.0283"), + cst_0_0315$1=caml_string_of_jsbytes("0.0315"), + cst_1$35=caml_string_of_jsbytes("1"), + cst_0_027$1=caml_string_of_jsbytes("0.027"), + cst_2$26=caml_string_of_jsbytes("2"), + cst_0_0238$1=caml_string_of_jsbytes("0.0238"), + cst_3$11=caml_string_of_jsbytes("3"), + cst_0_0201$1=caml_string_of_jsbytes("0.0201"), + cst_4$7=caml_string_of_jsbytes("4"), + cst_0_0185$1=caml_string_of_jsbytes("0.0185"), + cst_5$1=caml_string_of_jsbytes("5"), + cst_0_0179$1=caml_string_of_jsbytes("0.0179"), + cst_6$5=caml_string_of_jsbytes("6"), + cst_0_0173$3=caml_string_of_jsbytes("0.0173"), + cst_6$6=caml_string_of_jsbytes("6"), + cst_0_0006$1=caml_string_of_jsbytes("0.0006"), + cst_0_0173$4=caml_string_of_jsbytes("0.0173"), + cst_0$86=caml_string_of_jsbytes("0"), + cst_0_0283$0=caml_string_of_jsbytes("0.0283"), + cst_0_0315$0=caml_string_of_jsbytes("0.0315"), + cst_1$34=caml_string_of_jsbytes("1"), + cst_0_027$0=caml_string_of_jsbytes("0.027"), + cst_2$25=caml_string_of_jsbytes("2"), + cst_0_0238$0=caml_string_of_jsbytes("0.0238"), + cst_3$10=caml_string_of_jsbytes("3"), + cst_0_0201$0=caml_string_of_jsbytes("0.0201"), + cst_4$6=caml_string_of_jsbytes("4"), + cst_0_0185$0=caml_string_of_jsbytes("0.0185"), + cst_5$0=caml_string_of_jsbytes("5"), + cst_0_0179$0=caml_string_of_jsbytes("0.0179"), + cst_6$3=caml_string_of_jsbytes("6"), + cst_0_0173$1=caml_string_of_jsbytes("0.0173"), + cst_6$4=caml_string_of_jsbytes("6"), + cst_0_0006$0=caml_string_of_jsbytes("0.0006"), + cst_0_0173$2=caml_string_of_jsbytes("0.0173"), + cst_0$85=caml_string_of_jsbytes("0"), + cst_0_0283=caml_string_of_jsbytes("0.0283"), + cst_0_0315=caml_string_of_jsbytes("0.0315"), + cst_1$33=caml_string_of_jsbytes("1"), + cst_0_027=caml_string_of_jsbytes("0.027"), + cst_2$24=caml_string_of_jsbytes("2"), + cst_0_0238=caml_string_of_jsbytes("0.0238"), + cst_3$9=caml_string_of_jsbytes("3"), + cst_0_0201=caml_string_of_jsbytes("0.0201"), + cst_4$5=caml_string_of_jsbytes("4"), + cst_0_0185=caml_string_of_jsbytes("0.0185"), + cst_5=caml_string_of_jsbytes("5"), + cst_0_0179=caml_string_of_jsbytes("0.0179"), + cst_6$1=caml_string_of_jsbytes("6"), + cst_0_0173=caml_string_of_jsbytes("0.0173"), + cst_6$2=caml_string_of_jsbytes("6"), + cst_0_0006=caml_string_of_jsbytes("0.0006"), + cst_0_0173$0=caml_string_of_jsbytes("0.0173"), + cst_500=caml_string_of_jsbytes("500"), + cst_0_98=caml_string_of_jsbytes("0.98"), + cst_2_5$4=caml_string_of_jsbytes("2.5"), + cst_0_98$0=caml_string_of_jsbytes("0.98"), + cst_0_9=caml_string_of_jsbytes("0.9"), + cst_1003$0=caml_string_of_jsbytes("1003"), + cst_757$0=caml_string_of_jsbytes("757"), + cst_1015$0=caml_string_of_jsbytes("1015"), + cst_766$0=caml_string_of_jsbytes("766"), + cst_1025$0=caml_string_of_jsbytes("1025"), + cst_774$0=caml_string_of_jsbytes("774"), + cst_1057$0=caml_string_of_jsbytes("1057"), + cst_798$0=caml_string_of_jsbytes("798"), + cst_1085$0=caml_string_of_jsbytes("1085"), + cst_819$0=caml_string_of_jsbytes("819"), + cst_1107$0=caml_string_of_jsbytes("1107"), + cst_835$0=caml_string_of_jsbytes("835"), + cst_1127$0=caml_string_of_jsbytes("1127"), + cst_851$0=caml_string_of_jsbytes("851"), + cst_41316$0=caml_string_of_jsbytes("41316"), + cst_41440$0=caml_string_of_jsbytes("41440"), + cst_41481$0=caml_string_of_jsbytes("41481"), + cst_42228$0=caml_string_of_jsbytes("42228"), + cst_0$84=caml_string_of_jsbytes("0"), + cst_0$83=caml_string_of_jsbytes("0"), + cst_0$81=caml_string_of_jsbytes("0"), + cst_0$82=caml_string_of_jsbytes("0"), + cst_2$23=caml_string_of_jsbytes("2."), + cst_0$79=caml_string_of_jsbytes("0"), + cst_0$80=caml_string_of_jsbytes("0"), + cst_2$22=caml_string_of_jsbytes("2."), + cst_6$0=caml_string_of_jsbytes("6."), + cst_1$32=caml_string_of_jsbytes("1."), + cst_2$21=caml_string_of_jsbytes("2."), + cst_0$78=caml_string_of_jsbytes("0"), + cst_6=caml_string_of_jsbytes("6."), + cst_1$31=caml_string_of_jsbytes("1."), + cst_2$20=caml_string_of_jsbytes("2."), + cst_0$77=caml_string_of_jsbytes("0"), + cst_12$13=caml_string_of_jsbytes("12."), + cst_1952=caml_string_of_jsbytes("1952"), + cst_1953=caml_string_of_jsbytes("1953"), + cst_1954=caml_string_of_jsbytes("1954"), + cst_0$76=caml_string_of_jsbytes("0"), + cst_1_4$0=caml_string_of_jsbytes("1.4"), + cst_1_8$0=caml_string_of_jsbytes("1.8"), + cst_1$30=caml_string_of_jsbytes("1"), + cst_2_5$1=caml_string_of_jsbytes("2.5"), + cst_2$19=caml_string_of_jsbytes("2"), + cst_3$7=caml_string_of_jsbytes("3."), + cst_3$8=caml_string_of_jsbytes("3"), + cst_3_7$1=caml_string_of_jsbytes("3.7"), + cst_4$3=caml_string_of_jsbytes("4"), + cst_4_3$3=caml_string_of_jsbytes("4.3"), + cst_4$4=caml_string_of_jsbytes("4"), + cst_0_5$3=caml_string_of_jsbytes("0.5"), + cst_4_3$4=caml_string_of_jsbytes("4.3"), + cst_0$75=caml_string_of_jsbytes("0"), + cst_1_2=caml_string_of_jsbytes("1.2"), + cst_1_5=caml_string_of_jsbytes("1.5"), + cst_1$29=caml_string_of_jsbytes("1"), + cst_2_5$0=caml_string_of_jsbytes("2.5"), + cst_2$18=caml_string_of_jsbytes("2"), + cst_3$5=caml_string_of_jsbytes("3."), + cst_3$6=caml_string_of_jsbytes("3"), + cst_3_7$0=caml_string_of_jsbytes("3.7"), + cst_4$1=caml_string_of_jsbytes("4"), + cst_4_3$1=caml_string_of_jsbytes("4.3"), + cst_4$2=caml_string_of_jsbytes("4"), + cst_0_5$2=caml_string_of_jsbytes("0.5"), + cst_4_3$2=caml_string_of_jsbytes("4.3"), + cst_0$74=caml_string_of_jsbytes("0"), + cst_1_4=caml_string_of_jsbytes("1.4"), + cst_1_8=caml_string_of_jsbytes("1.8"), + cst_1$28=caml_string_of_jsbytes("1"), + cst_2_5=caml_string_of_jsbytes("2.5"), + cst_2$17=caml_string_of_jsbytes("2"), + cst_3$3=caml_string_of_jsbytes("3."), + cst_3$4=caml_string_of_jsbytes("3"), + cst_3_7=caml_string_of_jsbytes("3.7"), + cst_4=caml_string_of_jsbytes("4"), + cst_4_3=caml_string_of_jsbytes("4.3"), + cst_4$0=caml_string_of_jsbytes("4"), + cst_0_5$1=caml_string_of_jsbytes("0.5"), + cst_4_3$0=caml_string_of_jsbytes("4.3"), + cst_0$72=caml_string_of_jsbytes("0."), + cst_12$12=caml_string_of_jsbytes("12."), + cst_0$73=caml_string_of_jsbytes("0."), + cst_0$70=caml_string_of_jsbytes("0."), + cst_12$11=caml_string_of_jsbytes("12."), + cst_0$71=caml_string_of_jsbytes("0."), + cst_0_328=caml_string_of_jsbytes("0.328"), + cst_409505=caml_string_of_jsbytes("409505"), + cst_0_232$0=caml_string_of_jsbytes("0.232"), + cst_262985=caml_string_of_jsbytes("262985"), + cst_409505$0=caml_string_of_jsbytes("409505"), + cst_0_208=caml_string_of_jsbytes("0.208"), + cst_204761=caml_string_of_jsbytes("204761"), + cst_262985$0=caml_string_of_jsbytes("262985"), + cst_0_024=caml_string_of_jsbytes("0.024"), + cst_142303=caml_string_of_jsbytes("142303"), + cst_204761$0=caml_string_of_jsbytes("204761"), + cst_0$68=caml_string_of_jsbytes("0."), + cst_0$69=caml_string_of_jsbytes("0"), + cst_142303$0=caml_string_of_jsbytes("142303"), + cst_0_48=caml_string_of_jsbytes("0.48"), + cst_633129=caml_string_of_jsbytes("633129"), + cst_0_32$1=caml_string_of_jsbytes("0.32"), + cst_535744=caml_string_of_jsbytes("535744"), + cst_633129$0=caml_string_of_jsbytes("633129"), + cst_0_264=caml_string_of_jsbytes("0.264"), + cst_389618=caml_string_of_jsbytes("389618"), + cst_535744$0=caml_string_of_jsbytes("535744"), + cst_0_216=caml_string_of_jsbytes("0.216"), + cst_267871=caml_string_of_jsbytes("267871"), + cst_389618$0=caml_string_of_jsbytes("389618"), + cst_0_104=caml_string_of_jsbytes("0.104"), + cst_194810=caml_string_of_jsbytes("194810"), + cst_267871$0=caml_string_of_jsbytes("267871"), + cst_0_04$0=caml_string_of_jsbytes("0.04"), + cst_0$67=caml_string_of_jsbytes("0"), + cst_194810$0=caml_string_of_jsbytes("194810"), + cst_7632=caml_string_of_jsbytes("7632"), + cst_4557=caml_string_of_jsbytes("4557"), + cst_0_005=caml_string_of_jsbytes("0.005"), + cst_r_sidence_in$3=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_prestation_courante_in$0= + caml_string_of_jsbytes("prestation_courante_in"), + cst_date_courante_in$20=caml_string_of_jsbytes("date_courante_in"), + cst_r_sidence_in$2=caml_string_of_jsbytes("r\xc3\xa9sidence_in"), + cst_date_courante_in$19=caml_string_of_jsbytes("date_courante_in"), + cst_date_courante_in$18=caml_string_of_jsbytes("date_courante_in"), + cst_ressources_m_nage_prises_e$0= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"), + cst_date_courante_in$17=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in$4=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$4=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_ressources_m_nage_prises_e= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_prises_en_compte_in"), + cst_date_courante_in$16=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in$3=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$3=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_montant_dette_in=caml_string_of_jsbytes("montant_dette_in"), + cst_d_pense_logement_in= + caml_string_of_jsbytes("d\xc3\xa9pense_logement_in"), + cst_montant_charges_in=caml_string_of_jsbytes("montant_charges_in"), + cst_montant_apl_in=caml_string_of_jsbytes("montant_apl_in"), + cst_aide_vers_e_in=caml_string_of_jsbytes("aide_vers\xc3\xa9e_in"), + cst_mode_occupation_in$2=caml_string_of_jsbytes("mode_occupation_in"), + cst_date_naissance_assur_in= + caml_string_of_jsbytes("date_naissance_assur\xc3\xa9_in"), + cst_type_aide_in$2=caml_string_of_jsbytes("type_aide_in"), + cst_date_courante_in$15=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$6=caml_string_of_jsbytes("zone_in"), + cst_nombre_personnes_charge_in$8= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_situation_familiale_in$1= + caml_string_of_jsbytes("situation_familiale_in"), + cst_ressources_m_nage_sans_arr$0= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"), + cst_mode_occupation_in$1=caml_string_of_jsbytes("mode_occupation_in"), + cst_cat_gorie_quivalence_loyer$0= + caml_string_of_jsbytes + ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16_in"), + cst_date_courante_in$14=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$5=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul$6= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$7= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_ressources_m_nage_arrondie$6= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_redevance_in$0=caml_string_of_jsbytes("redevance_in"), + cst_date_conventionnement_in$0= + caml_string_of_jsbytes("date_conventionnement_in"), + cst_type_logement_foyer_in$0= + caml_string_of_jsbytes("type_logement_foyer_in"), + cst_copropri_t_in$0= + caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"), + cst_charges_mensuelles_pr_t_in= + caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat_in"), + cst_date_entr_e_logement_in$0= + caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"), + cst_local_habit_premi_re_fois_$1= + caml_string_of_jsbytes + ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"), + cst_type_travaux_logement_in$0= + caml_string_of_jsbytes("type_travaux_logement_in"), + cst_date_signature_pr_t_in$0= + caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"), + cst_situation_r822_11_13_17_in$0= + caml_string_of_jsbytes("situation_r822_11_13_17_in"), + cst_mensualit_principale_in$0= + caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"), + cst_date_courante_in$13=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$4=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul$5= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$6= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_ressources_m_nage_arrondie$5= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"), + cst_changement_logement_d842_4$0= + caml_string_of_jsbytes("changement_logement_d842_4_in"), + cst_logement_meubl_d842_2_in$0= + caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2_in"), + cst_r_duction_loyer_solidarit_$1= + caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"), + cst_colocation_in$0=caml_string_of_jsbytes("colocation_in"), + cst_type_aide_in$1=caml_string_of_jsbytes("type_aide_in"), + cst_g_es_ou_handicap_adultes_h$1= + caml_string_of_jsbytes + ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"), + cst_logement_est_chambre_in$0= + caml_string_of_jsbytes("logement_est_chambre_in"), + cst_zone_in$3=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul$4= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$5= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_date_courante_in$12=caml_string_of_jsbytes("date_courante_in"), + cst_b_n_ficiaire_aide_adulte_o$1= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"), + cst_ressources_m_nage_arrondie$4= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_loyer_principal_in=caml_string_of_jsbytes("loyer_principal_in"), + cst_date_courante_in$11=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$2=caml_string_of_jsbytes("zone_in"), + cst_nombre_personnes_charge_in$4= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_situation_familiale_in$0= + caml_string_of_jsbytes("situation_familiale_in"), + cst_ressources_m_nage_sans_arr= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_sans_arrondi_in"), + cst_type_aide_in$0=caml_string_of_jsbytes("type_aide_in"), + cst_mode_occupation_in$0=caml_string_of_jsbytes("mode_occupation_in"), + cst_date_courante_in$10=caml_string_of_jsbytes("date_courante_in"), + cst_anciennet_logement_in= + caml_string_of_jsbytes("anciennet\xc3\xa9_logement_in"), + cst_type_pr_t_in=caml_string_of_jsbytes("type_pr\xc3\xaat_in"), + cst_zone_in$1=caml_string_of_jsbytes("zone_in"), + cst_situation_r822_11_13_17_in= + caml_string_of_jsbytes("situation_r822_11_13_17_in"), + cst_copropri_t_in=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9_in"), + cst_date_entr_e_logement_in= + caml_string_of_jsbytes("date_entr\xc3\xa9e_logement_in"), + cst_local_habit_premi_re_fois_$0= + caml_string_of_jsbytes + ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire_in"), + cst_date_signature_pr_t_in= + caml_string_of_jsbytes("date_signature_pr\xc3\xaat_in"), + cst_type_travaux_logement_in= + caml_string_of_jsbytes("type_travaux_logement_in"), + cst_situation_familiale_calcul$3= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$3= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_ressources_m_nage_arrondie$3= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_mensualit_principale_in= + caml_string_of_jsbytes("mensualit\xc3\xa9_principale_in"), + cst_situation_familiale_calcul$2= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$2= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_n_nombre_parts_d832_25_in$0= + caml_string_of_jsbytes("n_nombre_parts_d832_25_in"), + cst_condition_2_du_832_25_in$1= + caml_string_of_jsbytes("condition_2_du_832_25_in"), + cst_redevance_in=caml_string_of_jsbytes("redevance_in"), + cst_date_courante_in$9=caml_string_of_jsbytes("date_courante_in"), + cst_zone_in$0=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul$1= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$1= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_ressources_m_nage_arrondie$2= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_date_conventionnement_in= + caml_string_of_jsbytes("date_conventionnement_in"), + cst_type_logement_foyer_in= + caml_string_of_jsbytes("type_logement_foyer_in"), + cst_situation_familiale_calcul$0= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in$0= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_condition_2_du_832_25_in$0= + caml_string_of_jsbytes("condition_2_du_832_25_in"), + cst_n_nombre_parts_d832_25_in= + caml_string_of_jsbytes("n_nombre_parts_d832_25_in"), + cst_condition_2_du_832_25_in= + caml_string_of_jsbytes("condition_2_du_832_25_in"), + cst_ressources_m_nage_arrondie$1= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_logement_meubl_d842_2_in= + caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2_in"), + cst_r_duction_loyer_solidarit_$0= + caml_string_of_jsbytes("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_in"), + cst_colocation_in=caml_string_of_jsbytes("colocation_in"), + cst_type_aide_in=caml_string_of_jsbytes("type_aide_in"), + cst_g_es_ou_handicap_adultes_h$0= + caml_string_of_jsbytes + ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers_in"), + cst_logement_est_chambre_in= + caml_string_of_jsbytes("logement_est_chambre_in"), + cst_zone_in=caml_string_of_jsbytes("zone_in"), + cst_situation_familiale_calcul= + caml_string_of_jsbytes("situation_familiale_calcul_apl_in"), + cst_nombre_personnes_charge_in= + caml_string_of_jsbytes("nombre_personnes_\xc3\xa0_charge_in"), + cst_date_courante_in$8=caml_string_of_jsbytes("date_courante_in"), + cst_b_n_ficiaire_aide_adulte_o$0= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s_in"), + cst_ressources_m_nage_arrondie$0= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_in"), + cst_loyer_principal_base_in= + caml_string_of_jsbytes("loyer_principal_base_in"), + cst_date_courante_in$7=caml_string_of_jsbytes("date_courante_in"), + cst_ressources_m_nage_arrondie= + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_base_in"), + cst_paiement_logement_distinct= + caml_string_of_jsbytes("paiement_logement_distinct_professionnel_in"), + cst_date_demande_ou_reexamen_d= + caml_string_of_jsbytes("date_demande_ou_reexamen_droit_in"), + cst_demandeur_poursuit_des_tud= + caml_string_of_jsbytes("demandeur_poursuit_des_\xc3\xa9tudes_in"), + cst_condition_ge_bourse_enseig= + caml_string_of_jsbytes + ("condition_\xc3\xa2ge_bourse_enseignement_sup\xc3\xa9rieur_in"), + cst_mode_occupation_in=caml_string_of_jsbytes("mode_occupation_in"), + cst_situation_familiale_in= + caml_string_of_jsbytes("situation_familiale_in"), + cst_personnes_charge_in= + caml_string_of_jsbytes("personnes_\xc3\xa0_charge_in"), + cst_conjoint_exerce_activit_r_= + caml_string_of_jsbytes + ("conjoint_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"), + cst_demandeur_exerce_activit_r= + caml_string_of_jsbytes + ("demandeur_exerce_activit\xc3\xa9_r\xc3\xa9mun\xc3\xa9r\xc3\xa9e_in"), + cst_personnes_vivant_habituell= + caml_string_of_jsbytes("personnes_vivant_habituellement_foyer_in"), + cst_ressources_conjoint_in= + caml_string_of_jsbytes("ressources_conjoint_in"), + cst_ressources_demandeur_in= + caml_string_of_jsbytes("ressources_demandeur_in"), + cst_d_penses_justifi_es_r_elle= + caml_string_of_jsbytes + ("d\xc3\xa9penses_justifi\xc3\xa9es_r\xc3\xa9ellement_engag\xc3\xa9es_in"), + cst_date_courante_in$6=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in$2=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$2=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_date_emm_nagement_in= + caml_string_of_jsbytes("date_emm\xc3\xa9nagement_in"), + cst_informations_in=caml_string_of_jsbytes("informations_in"), + cst_b_n_ficie_aide_personnalis= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement_in"), + cst_demandeur_in$1=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$1=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_date_courante_in$5=caml_string_of_jsbytes("date_courante_in"), + cst_date_courante_in$4=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in$0=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in$0=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_condition_logement_surface= + caml_string_of_jsbytes("condition_logement_surface_in"), + cst_condition_logement_r_siden= + caml_string_of_jsbytes + ("condition_logement_r\xc3\xa9sidence_principale_in"), + cst_date_courante_in$3=caml_string_of_jsbytes("date_courante_in"), + cst_demandeur_in=caml_string_of_jsbytes("demandeur_in"), + cst_m_nage_in=caml_string_of_jsbytes("m\xc3\xa9nage_in"), + cst_enfant_na_tre_apr_s_quatri= + caml_string_of_jsbytes + ("enfant_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_quatri\xc3\xa8me_mois_grossesse"), + cst_condition_rattach_foyer_fi= + caml_string_of_jsbytes + ("condition_rattach\xc3\xa9_foyer_fiscal_parent_ifi"), + cst_situation_familiale=caml_string_of_jsbytes("situation_familiale"), + cst_nombre_autres_occupants_lo= + caml_string_of_jsbytes("nombre_autres_occupants_logement"), + cst_personnes_charge=caml_string_of_jsbytes("personnes_\xc3\xa0_charge"), + cst_logement=caml_string_of_jsbytes("logement"), + cst_prestations_re_ues= + caml_string_of_jsbytes("prestations_re\xc3\xa7ues"), + cst_zone=caml_string_of_jsbytes("zone"), + cst_surface_m_carr_s=caml_string_of_jsbytes("surface_m_carr\xc3\xa9s"), + cst_logement_decent_l89_462= + caml_string_of_jsbytes("logement_decent_l89_462"), + cst_usufruit=caml_string_of_jsbytes("usufruit"), + cst_lou_ou_sous_lou_des_tiers= + caml_string_of_jsbytes + ("lou\xc3\xa9_ou_sous_lou\xc3\xa9_\xc3\xa0_des_tiers"), + cst_propri_taire=caml_string_of_jsbytes("propri\xc3\xa9taire"), + cst_mode_occupation=caml_string_of_jsbytes("mode_occupation"), + cst_est_ehpad_ou_maison_autono= + caml_string_of_jsbytes("est_ehpad_ou_maison_autonomie_l313_12_asf"), + cst_r_sidence_principale= + caml_string_of_jsbytes("r\xc3\xa9sidence_principale"), + cst_Locataire=caml_string_of_jsbytes("Locataire"), + cst_R_sidentLogementFoyer= + caml_string_of_jsbytes("R\xc3\xa9sidentLogementFoyer"), + cst_AccessionPropri_t_LocalUsa= + caml_string_of_jsbytes + ("AccessionPropri\xc3\xa9t\xc3\xa9LocalUsageExclusifHabitation"), + cst_SousLocataire=caml_string_of_jsbytes("SousLocataire"), + cst_LocationAccession=caml_string_of_jsbytes("LocationAccession"), + cst_Location=caml_string_of_jsbytes("Location"), + cst_AccessionPropri_t= + caml_string_of_jsbytes("AccessionPropri\xc3\xa9t\xc3\xa9"), + cst_LogementFoyer=caml_string_of_jsbytes("LogementFoyer"), + cst_condition_2_r823_4=caml_string_of_jsbytes("condition_2_r823_4"), + cst_coefficents_enfants_garde_$2= + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + cst_nombre_personnes_charge_pr$1= + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + cst_ligibilit$3=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_date_courante$0=caml_string_of_jsbytes("date_courante"), + cst_changement_logement_d842_4= + caml_string_of_jsbytes("changement_logement_d842_4"), + cst_logement_meubl_d842_2= + caml_string_of_jsbytes("logement_meubl\xc3\xa9_d842_2"), + cst_g_es_ou_handicap_adultes_h= + caml_string_of_jsbytes + ("\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), + cst_colocation=caml_string_of_jsbytes("colocation"), + cst_logement_est_chambre=caml_string_of_jsbytes("logement_est_chambre"), + cst_b_n_ficiaire_aide_adulte_o= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), + cst_loyer_principal=caml_string_of_jsbytes("loyer_principal"), + cst_bailleur=caml_string_of_jsbytes("bailleur"), + cst_personne_h_berg_e_centre_s= + caml_string_of_jsbytes + ("personne_h\xc3\xa9berg\xc3\xa9e_centre_soin_l_L162_22_3_s\xc3\xa9curit\xc3\xa9_sociale"), + cst_patrimoine=caml_string_of_jsbytes("patrimoine"), + cst_nationalit=caml_string_of_jsbytes("nationalit\xc3\xa9"), + cst_date_naissance$0=caml_string_of_jsbytes("date_naissance"), + cst_Enfant_Charge=caml_string_of_jsbytes("Enfant\xc3\x80Charge"), + cst_AutrePersonne_Charge= + caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"), + cst_r_gime_outre_mer_l751_1$0= + caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"), + cst_ge_l512_3_2$0=caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"), + cst_conditions_hors_ge$0= + caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), + cst_droit_ouvert$0=caml_string_of_jsbytes("droit_ouvert"), + cst_date_naissance_troisi_me_e= + caml_string_of_jsbytes + ("date_naissance_troisi\xc3\xa8me_enfant_ou_dernier_si_plus"), + cst_nombre_enfants_na_tre_apr_= + caml_string_of_jsbytes + ("nombre_enfants_\xc3\xa0_na\xc3\xaetre_apr\xc3\xa8s_troisi\xc3\xa8me_mois_grossesse"), + cst_pr_t=caml_string_of_jsbytes("pr\xc3\xaat"), + cst_anciennet_logement= + caml_string_of_jsbytes("anciennet\xc3\xa9_logement"), + cst_situation_r822_11_13_17= + caml_string_of_jsbytes("situation_r822_11_13_17"), + cst_copropri_t=caml_string_of_jsbytes("copropri\xc3\xa9t\xc3\xa9"), + cst_local_habit_premi_re_fois_= + caml_string_of_jsbytes + ("local_habit\xc3\xa9_premi\xc3\xa8re_fois_b\xc3\xa9n\xc3\xa9ficiaire"), + cst_type_travaux_logement_r842= + caml_string_of_jsbytes("type_travaux_logement_r842_5"), + cst_type_travaux_logement_d832= + caml_string_of_jsbytes("type_travaux_logement_d832_15"), + cst_date_entr_e_logement= + caml_string_of_jsbytes("date_entr\xc3\xa9e_logement"), + cst_charges_mensuelles_pr_t= + caml_string_of_jsbytes("charges_mensuelles_pr\xc3\xaat"), + cst_mensualit_principale= + caml_string_of_jsbytes("mensualit\xc3\xa9_principale"), + cst_logement_situ_commune_d_s_= + caml_string_of_jsbytes + ("logement_situ\xc3\xa9_commune_d\xc3\xa9s\xc3\xa9quilibre_l831_2"), + cst_Changement=caml_string_of_jsbytes("Changement"), + cst_PasDeChangement=caml_string_of_jsbytes("PasDeChangement"), + cst_Fran_aise=caml_string_of_jsbytes("Fran\xc3\xa7aise"), + cst_trang_re=caml_string_of_jsbytes("\xc3\x89trang\xc3\xa8re"), + cst_Non$1=caml_string_of_jsbytes("Non"), + cst_Oui$0=caml_string_of_jsbytes("Oui"), + cst_BailleurSocial=caml_string_of_jsbytes("BailleurSocial"), + cst_BailleurPriv_AvecConventio= + caml_string_of_jsbytes("BailleurPriv\xc3\xa9AvecConventionnementSocial"), + cst_BailleurPriv=caml_string_of_jsbytes("BailleurPriv\xc3\xa9"), + cst_situation_garde_altern_e= + caml_string_of_jsbytes("situation_garde_altern\xc3\xa9e"), + cst_obligation_scolaire$1=caml_string_of_jsbytes("obligation_scolaire"), + cst_r_muneration_mensuelle$1= + caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), + cst_date_de_naissance$1=caml_string_of_jsbytes("date_de_naissance"), + cst_a_d_j_ouvert_droit_aux_all$1= + caml_string_of_jsbytes + ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), + cst_b_n_ficie_titre_personnel_$1= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), + cst_identifiant$1=caml_string_of_jsbytes("identifiant"), + cst_b_n_ficie_titre_personnel_$0= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficie_titre_personnel_aide_personnelle_logement"), + cst_a_d_j_ouvert_droit_aux_all$0= + caml_string_of_jsbytes + ("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"), + cst_prise_en_charge$0=caml_string_of_jsbytes("prise_en_charge"), + cst_date_de_naissance$0=caml_string_of_jsbytes("date_de_naissance"), + cst_r_muneration_mensuelle$0= + caml_string_of_jsbytes("r\xc3\xa9muneration_mensuelle"), + cst_obligation_scolaire$0=caml_string_of_jsbytes("obligation_scolaire"), + cst_identifiant$0=caml_string_of_jsbytes("identifiant"), + cst_cat_gorie_quivalence_loyer= + caml_string_of_jsbytes + ("cat\xc3\xa9gorie_\xc3\xa9quivalence_loyer_d842_16"), + cst_redevance=caml_string_of_jsbytes("redevance"), + cst_construit_application_loi_= + caml_string_of_jsbytes("construit_application_loi_1957_12_III"), + cst_date_conventionnement=caml_string_of_jsbytes("date_conventionnement"), + cst_conventionn_livre_III_titr$1= + caml_string_of_jsbytes("conventionn\xc3\xa9_livre_III_titre_V_chap_III"), + cst_remplit_conditions_r832_21= + caml_string_of_jsbytes("remplit_conditions_r832_21"), + cst_type=caml_string_of_jsbytes("type"), + cst_coefficents_enfants_garde_$1= + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + cst_nombre_personnes_charge_pr$0= + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + cst_ligibilit$2=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_MoinsDeTroisEnfants=caml_string_of_jsbytes("MoinsDeTroisEnfants"), + cst_PlusDeTroisEnfants=caml_string_of_jsbytes("PlusDeTroisEnfants"), + cst_titulaire_allocation_perso= + caml_string_of_jsbytes + ("titulaire_allocation_personne_\xc3\xa2g\xc3\xa9e"), + cst_b_n_ficiaire_l161_19_l351_= + caml_string_of_jsbytes + ("b\xc3\xa9n\xc3\xa9ficiaire_l161_19_l351_8_l643_3_s\xc3\xa9cu"), + cst_incapacit_80_pourcent_ou_r= + caml_string_of_jsbytes + ("incapacit\xc3\xa9_80_pourcent_ou_restriction_emploi"), + cst_parent=caml_string_of_jsbytes("parent\xc3\xa9"), + cst_ascendant_descendant_colla= + caml_string_of_jsbytes + ("ascendant_descendant_collat\xc3\xa9ral_deuxi\xc3\xa8me_troisi\xc3\xa8me_degr\xc3\xa9"), + cst_ressources$0=caml_string_of_jsbytes("ressources"), + cst_date_naissance=caml_string_of_jsbytes("date_naissance"), + cst_taux$0=caml_string_of_jsbytes("taux"), + cst_bas$0=caml_string_of_jsbytes("bas"), + cst_haut$0=caml_string_of_jsbytes("haut"), + cst_taux=caml_string_of_jsbytes("taux"), + cst_bas=caml_string_of_jsbytes("bas"), + cst_haut=caml_string_of_jsbytes("haut"), + cst_Neuf=caml_string_of_jsbytes("Neuf"), + cst_Ancien=caml_string_of_jsbytes("Ancien"), + cst_titulaire_pr_t=caml_string_of_jsbytes("titulaire_pr\xc3\xaat"), + cst_date_signature=caml_string_of_jsbytes("date_signature"), + cst_type_pr_t=caml_string_of_jsbytes("type_pr\xc3\xaat"), + cst_brut_horaire$0=caml_string_of_jsbytes("brut_horaire"), + cst_montant$2=caml_string_of_jsbytes("montant"), + cst_aide_finale=caml_string_of_jsbytes("aide_finale"), + cst_ligibilit$1=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_coefficents_enfants_garde_$0= + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + cst_traitement_aide_finale$8= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$8=caml_string_of_jsbytes("aide_finale_formule"), + cst_ligibilit$0=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_montant_impay=caml_string_of_jsbytes("montant_impay\xc3\xa9"), + cst_ge_ouverture_droit= + caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit"), + cst_traitement_aide_finale$7= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$7=caml_string_of_jsbytes("aide_finale_formule"), + cst_traitement_aide_finale$6= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$6=caml_string_of_jsbytes("aide_finale_formule"), + cst_loyer_minimal=caml_string_of_jsbytes("loyer_minimal"), + cst_montant_forfaitaire_charge$0= + caml_string_of_jsbytes("montant_forfaitaire_charges"), + cst_quivalence_loyer=caml_string_of_jsbytes("\xc3\xa9quivalence_loyer"), + cst_coefficient_prise_en_charg$1= + caml_string_of_jsbytes("coefficient_prise_en_charge"), + cst_traitement_aide_finale$5= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$5=caml_string_of_jsbytes("aide_finale_formule"), + cst_traitement_aide_finale$4= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$4=caml_string_of_jsbytes("aide_finale_formule"), + cst_ancienne_allocation_logeme= + caml_string_of_jsbytes("ancienne_allocation_logement"), + cst_ancien_loyer_principal= + caml_string_of_jsbytes("ancien_loyer_principal"), + cst_traitement_aide_finale$3= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$3=caml_string_of_jsbytes("aide_finale_formule"), + cst_traitement_aide_finale$2= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$2=caml_string_of_jsbytes("aide_finale_formule"), + cst_traitement_aide_finale$1= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$1=caml_string_of_jsbytes("aide_finale_formule"), + cst_coefficient_prise_en_charg$0= + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10"), + cst_mensualit_minimale= + caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"), + cst_mensualit_ligible= + caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"), + cst_n_nombre_parts_d832_11= + caml_string_of_jsbytes("n_nombre_parts_d832_11"), + cst_traitement_aide_finale$0= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule$0=caml_string_of_jsbytes("aide_finale_formule"), + cst_coefficient_prise_en_charg= + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25"), + cst_quivalence_loyer_minimale= + caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale"), + cst_plafond_quivalence_loyer_l= + caml_string_of_jsbytes + ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), + cst_quivalence_loyer_ligible= + caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), + cst_n_nombre_parts_d832_25$0= + caml_string_of_jsbytes("n_nombre_parts_d832_25"), + cst_coefficient_r_d832_25=caml_string_of_jsbytes("coefficient_r_d832_25"), + cst_coefficient_multiplicateur= + caml_string_of_jsbytes("coefficient_multiplicateur_d832_25"), + cst_n_nombre_parts_d832_25= + caml_string_of_jsbytes("n_nombre_parts_d832_25"), + cst_montant$1=caml_string_of_jsbytes("montant"), + cst_traitement_aide_finale= + caml_string_of_jsbytes("traitement_aide_finale"), + cst_aide_finale_formule=caml_string_of_jsbytes("aide_finale_formule"), + cst_participation_personnelle= + caml_string_of_jsbytes("participation_personnelle"), + cst_taux_composition_familiale= + caml_string_of_jsbytes("taux_composition_familiale"), + cst_participation_minimale= + caml_string_of_jsbytes("participation_minimale"), + cst_plafond_loyer_d823_16_2= + caml_string_of_jsbytes("plafond_loyer_d823_16_2"), + cst_montant_forfaitaire_charge= + caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16"), + cst_montant$0=caml_string_of_jsbytes("montant"), + cst_ressources_prises_en_compt= + caml_string_of_jsbytes("ressources_prises_en_compte"), + cst_montant_prime_d_m_nagement= + caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement"), + cst_coefficents_enfants_garde_= + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + cst_nombre_personnes_charge_pr= + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + cst_ligibilit=caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"), + cst_date_courante=caml_string_of_jsbytes("date_courante"), + cst_ressources=caml_string_of_jsbytes("ressources"), + cst_dur_e_r_sidence_durant_p_r= + caml_string_of_jsbytes + ("dur\xc3\xa9e_r\xc3\xa9sidence_durant_p\xc3\xa9riode_r_822_3_1_sup\xc3\xa9rieure_\xc3\xa0_6_mois"), + cst_satisfait_conditions_l512_= + caml_string_of_jsbytes + ("satisfait_conditions_l512_2_code_s\xc3\xa9curit\xc3\xa9_sociale"), + cst_ne_produisant_pas_revenu_p= + caml_string_of_jsbytes + ("ne_produisant_pas_revenu_p\xc3\xa9riode_r822_3_3_r822_4"), + cst_produisant_revenu_p_riode_= + caml_string_of_jsbytes + ("produisant_revenu_p\xc3\xa9riode_r822_3_3_r822_4"), + cst_conforme_article_l442_1= + caml_string_of_jsbytes("conforme_article_l442_1"), + cst_date_naissance_personne_so= + caml_string_of_jsbytes("date_naissance_personne_sous_location"), + cst_conventionn_livre_III_titr$0= + caml_string_of_jsbytes + ("conventionn\xc3\xa9_livre_III_titre_II_chap_I_sec_3"), + cst_r_duction_loyer_solidarit_= + caml_string_of_jsbytes + ("r\xc3\xa9duction_loyer_solidarit\xc3\xa9_per\xc3\xa7ue"), + cst_conventionn_livre_III_titr= + caml_string_of_jsbytes("conventionn\xc3\xa9_livre_III_titre_V_chap_III"), + cst_PrestationAccueilJeuneEnfa$1= + caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), + cst_AllocationsFamiliales$2= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_Compl_mentFamilial$1= + caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), + cst_AllocationLogement$1=caml_string_of_jsbytes("AllocationLogement"), + cst_Allocation_ducationEnfantH$0= + caml_string_of_jsbytes + ("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"), + cst_AllocationSoutienFamilial$2= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationRentr_eScolaire$0= + caml_string_of_jsbytes("AllocationRentr\xc3\xa9eScolaire"), + cst_AllocationJournali_rePrese$0= + caml_string_of_jsbytes("AllocationJournali\xc3\xa8rePresenceParentale"), + cst_Avant$1=caml_string_of_jsbytes("Avant"), + cst_Pendant$1=caml_string_of_jsbytes("Pendant"), + cst_Apr_s$0=caml_string_of_jsbytes("Apr\xc3\xa8s"), + cst_GardeAltern_ePartageAlloca$0= + caml_string_of_jsbytes("GardeAltern\xc3\xa9ePartageAllocations"), + cst_GardeAltern_eAllocataireUn$0= + caml_string_of_jsbytes("GardeAltern\xc3\xa9eAllocataireUnique"), + cst_EffectiveEtPermanente$2= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_ServicesSociauxAllocationV$3= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"), + cst_ServicesSociauxAllocationV$4= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"), + cst_Guadeloupe$1=caml_string_of_jsbytes("Guadeloupe"), + cst_Guyane$1=caml_string_of_jsbytes("Guyane"), + cst_Martinique$1=caml_string_of_jsbytes("Martinique"), + cst_LaR_union$0=caml_string_of_jsbytes("LaR\xc3\xa9union"), + cst_SaintBarth_lemy$0=caml_string_of_jsbytes("SaintBarth\xc3\xa9lemy"), + cst_SaintMartin$1=caml_string_of_jsbytes("SaintMartin"), + cst_M_tropole$0=caml_string_of_jsbytes("M\xc3\xa9tropole"), + cst_SaintPierreEtMiquelon$1= + caml_string_of_jsbytes("SaintPierreEtMiquelon"), + cst_Mayotte$1=caml_string_of_jsbytes("Mayotte"), + cst_PersonneSeule=caml_string_of_jsbytes("PersonneSeule"), + cst_Couple=caml_string_of_jsbytes("Couple"), + cst_tudiantLog_EnChambreCROUS= + caml_string_of_jsbytes("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUS"), + cst_tudiantLog_EnChambreCROUSR= + caml_string_of_jsbytes + ("\xc3\x89tudiantLog\xc3\xa9EnChambreCROUSR\xc3\xa9habilit\xc3\xa9e"), + cst_Personnes_g_esSelon3DeD842= + caml_string_of_jsbytes("Personnes\xc3\x82g\xc3\xa9esSelon3DeD842_16"), + cst_AutresPersonnes=caml_string_of_jsbytes("AutresPersonnes"), + cst_LogementPersonnes_g_esOuHa= + caml_string_of_jsbytes + ("LogementPersonnes\xc3\x82g\xc3\xa9esOuHandicap\xc3\xa9es"), + cst_R_sidenceSociale=caml_string_of_jsbytes("R\xc3\xa9sidenceSociale"), + cst_FoyerJeunesTrvailleursOuMi= + caml_string_of_jsbytes + ("FoyerJeunesTrvailleursOuMigrantsConventionn\xc3\xa9L353_2Avant1995"), + cst_Autre$1=caml_string_of_jsbytes("Autre"), + cst_EffectiveEtPermanente$1= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_R_sidenceAltern_eAllocatai= + caml_string_of_jsbytes + ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocataireUnique"), + cst_R_sidenceAltern_eAllocatio= + caml_string_of_jsbytes + ("R\xc3\xa9sidenceAltern\xc3\xa9eAllocationsPartag\xc3\xa9e"), + cst_C_libataire=caml_string_of_jsbytes("C\xc3\xa9libataire"), + cst_Mari_s=caml_string_of_jsbytes("Mari\xc3\xa9s"), + cst_Pacs_s=caml_string_of_jsbytes("Pacs\xc3\xa9s"), + cst_Concubins=caml_string_of_jsbytes("Concubins"), + cst_C_libataireS_par_DeFait= + caml_string_of_jsbytes("C\xc3\xa9libataireS\xc3\xa9par\xc3\xa9DeFait"), + cst_ConcubinageDontS_par_DeFai= + caml_string_of_jsbytes("ConcubinageDontS\xc3\xa9par\xc3\xa9DeFait"), + cst_AidePersonnalis_eLogement= + caml_string_of_jsbytes("AidePersonnalis\xc3\xa9eLogement"), + cst_AllocationLogementFamilial$0= + caml_string_of_jsbytes("AllocationLogementFamiliale"), + cst_AllocationLogementSociale$0= + caml_string_of_jsbytes("AllocationLogementSociale"), + cst_Pas_ligible=caml_string_of_jsbytes("Pas\xc3\x89ligible"), + cst_AllocationLogementFamilial= + caml_string_of_jsbytes("AllocationLogementFamiliale"), + cst_AllocationLogementSociale= + caml_string_of_jsbytes("AllocationLogementSociale"), + cst_Impay_Loyer=caml_string_of_jsbytes("Impay\xc3\xa9Loyer"), + cst_Impay_Pr_t=caml_string_of_jsbytes("Impay\xc3\xa9Pr\xc3\xaat"), + cst_TotalAnnuel_ch_ances= + caml_string_of_jsbytes("TotalAnnuel\xc3\x89ch\xc3\xa9ances"), + cst_Mensualit=caml_string_of_jsbytes("Mensualit\xc3\xa9"), + cst_Loyer=caml_string_of_jsbytes("Loyer"), + cst_Bailleur=caml_string_of_jsbytes("Bailleur"), + cst_B_n_ficiaire=caml_string_of_jsbytes("B\xc3\xa9n\xc3\xa9ficiaire"), + cst_tablissementHabilit= + caml_string_of_jsbytes("\xc3\x89tablissementHabilit\xc3\xa9"), + cst_OuiAvecLoyerOuCharges=caml_string_of_jsbytes("OuiAvecLoyerOuCharges"), + cst_Non$0=caml_string_of_jsbytes("Non"), + cst_Zone1=caml_string_of_jsbytes("Zone1"), + cst_Zone2=caml_string_of_jsbytes("Zone2"), + cst_Zone3=caml_string_of_jsbytes("Zone3"), + cst_DateDeNaissance=caml_string_of_jsbytes("DateDeNaissance"), + cst_AvantPremierJourMoisCivilT= + caml_string_of_jsbytes + ("AvantPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"), + cst_Apr_sPremierJourMoisCivilT= + caml_string_of_jsbytes + ("Apr\xc3\xa8sPremierJourMoisCivilTroisi\xc3\xa8meMoisDeGrossesse"), + cst_Ascendant=caml_string_of_jsbytes("Ascendant"), + cst_Descendant=caml_string_of_jsbytes("Descendant"), + cst_Collat_ralDeuxi_meTroisi_m= + caml_string_of_jsbytes + ("Collat\xc3\xa9ralDeuxi\xc3\xa8meTroisi\xc3\xa8meDegr\xc3\xa9"), + cst_PasDeGardeAltern_e= + caml_string_of_jsbytes("PasDeGardeAltern\xc3\xa9e"), + cst_GardeAltern_eCoefficientPr= + caml_string_of_jsbytes("GardeAltern\xc3\xa9eCoefficientPriseEnCharge"), + cst_DemandeurOuConjointOuParen= + caml_string_of_jsbytes + ("DemandeurOuConjointOuParentOuViaPartsSoci\xc3\xa9t\xc3\xa9s"), + cst_Autre$0=caml_string_of_jsbytes("Autre"), + cst_AllocationsFamiliales$1= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_Compl_mentFamilial$0= + caml_string_of_jsbytes("Compl\xc3\xa9mentFamilial"), + cst_AllocationJeuneEnfant=caml_string_of_jsbytes("AllocationJeuneEnfant"), + cst_AllocationSoutienFamilial$1= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationSoutienEnfantHan= + caml_string_of_jsbytes("AllocationSoutienEnfantHandicap\xc3\xa9"), + cst_AllocationAdulteHandicap= + caml_string_of_jsbytes("AllocationAdulteHandicap\xc3\xa9"), + cst_Revenu$0=caml_string_of_jsbytes("Revenu"), + cst_Infini$0=caml_string_of_jsbytes("Infini"), + cst_Revenu=caml_string_of_jsbytes("Revenu"), + cst_Infini=caml_string_of_jsbytes("Infini"), + cst_Oui=caml_string_of_jsbytes("Oui"), + cst_Non=caml_string_of_jsbytes("Non"), + cst_ObjectifD_cenceLogement= + caml_string_of_jsbytes("ObjectifD\xc3\xa9cenceLogement"), + cst_Pr_vuDansListeR321_15= + caml_string_of_jsbytes("Pr\xc3\xa9vuDansListeR321_15"), + cst_AgrandirOuRendreHabitableD= + caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"), + cst_PasDeTravaux$0=caml_string_of_jsbytes("PasDeTravaux"), + cst_TravauxPourAcquisitionD832= + caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"), + cst_TravauxSurLogementD_j_Acqu= + caml_string_of_jsbytes + ("TravauxSurLogementD\xc3\xa9j\xc3\xa0AcquisD832_15_2"), + cst_PasDeTravaux=caml_string_of_jsbytes("PasDeTravaux"), + cst_Demandeur=caml_string_of_jsbytes("Demandeur"), + cst_VendeurQuandDemandeurACont= + caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"), + cst_D331_32=caml_string_of_jsbytes("D331_32"), + cst_D331_63_64=caml_string_of_jsbytes("D331_63_64"), + cst_D331_59_8=caml_string_of_jsbytes("D331_59_8"), + cst_D331_76_1=caml_string_of_jsbytes("D331_76_1"), + cst_Autre=caml_string_of_jsbytes("Autre"), + cst_The_function_n_nombre_part= + caml_string_of_jsbytes + ("The function 'n_nombre_parts_d832_25_in' translation isn't yet supported..."), + cst_The_function_condition_2_d= + caml_string_of_jsbytes + ("The function 'condition_2_du_832_25_in' translation isn't yet supported..."), + cst_The_function_condition_log= + caml_string_of_jsbytes + ("The function 'condition_logement_surface_in' translation isn't yet supported..."), + cst_The_function_condition_log$0= + caml_string_of_jsbytes + ("The function 'condition_logement_residence_principale_in' translation isn't yet supported..."), + cst_AccessionProprieteLocalUsa= + caml_string_of_jsbytes("AccessionProprieteLocalUsageExclusifHabitation"), + cst_Locataire$0=caml_string_of_jsbytes("Locataire"), + cst_LocationAccession$0=caml_string_of_jsbytes("LocationAccession"), + cst_ResidentLogementFoyer=caml_string_of_jsbytes("ResidentLogementFoyer"), + cst_SousLocataire$0=caml_string_of_jsbytes("SousLocataire"), + cst_AccessionPropriete=caml_string_of_jsbytes("AccessionPropriete"), + cst_Location$0=caml_string_of_jsbytes("Location"), + cst_LogementFoyer$0=caml_string_of_jsbytes("LogementFoyer"), + cst_The_function_condition_2_r= + caml_string_of_jsbytes + ("The function 'condition_2_r823_4' translation isn't yet supported..."), + cst_AutrePersonneACharge=caml_string_of_jsbytes("AutrePersonneACharge"), + cst_EnfantACharge=caml_string_of_jsbytes("EnfantACharge"), + cst_The_function_conditions_ho$0= + caml_string_of_jsbytes + ("The function 'conditions_hors_age' translation isn't yet supported..."), + cst_The_function_droit_ouvert_$0= + caml_string_of_jsbytes + ("The function 'droit_ouvert' translation isn't yet supported..."), + cst_Changement$0=caml_string_of_jsbytes("Changement"), + cst_PasDeChangement$0=caml_string_of_jsbytes("PasDeChangement"), + cst_Etrangere=caml_string_of_jsbytes("Etrangere"), + cst_Francaise=caml_string_of_jsbytes("Francaise"), + cst_Non$4=caml_string_of_jsbytes("Non"), + cst_Oui$2=caml_string_of_jsbytes("Oui"), + cst_BailleurPrive=caml_string_of_jsbytes("BailleurPrive"), + cst_BailleurPriveAvecConventio= + caml_string_of_jsbytes("BailleurPriveAvecConventionnementSocial"), + cst_BailleurSocial$0=caml_string_of_jsbytes("BailleurSocial"), + cst_MoinsDeTroisEnfants$0=caml_string_of_jsbytes("MoinsDeTroisEnfants"), + cst_PlusDeTroisEnfants$0=caml_string_of_jsbytes("PlusDeTroisEnfants"), + cst_Ancien$0=caml_string_of_jsbytes("Ancien"), + cst_Neuf$0=caml_string_of_jsbytes("Neuf"), + cst_The_function_traitement_ai$8= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$7= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$6= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$5= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$4= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$3= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$2= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$1= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai$0= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_traitement_ai= + caml_string_of_jsbytes + ("The function 'traitement_aide_finale' translation isn't yet supported..."), + cst_The_function_montant_trans= + caml_string_of_jsbytes + ("The function 'montant' translation isn't yet supported..."), + cst_AllocationEducationEnfantH$0= + caml_string_of_jsbytes("AllocationEducationEnfantHandicape"), + cst_AllocationJournalierePrese$0= + caml_string_of_jsbytes("AllocationJournalierePresenceParentale"), + cst_AllocationLogement$2=caml_string_of_jsbytes("AllocationLogement"), + cst_AllocationRentreeScolaire$0= + caml_string_of_jsbytes("AllocationRentreeScolaire"), + cst_AllocationSoutienFamilial$4= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationsFamiliales$4= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_ComplementFamilial$1=caml_string_of_jsbytes("ComplementFamilial"), + cst_PrestationAccueilJeuneEnfa$2= + caml_string_of_jsbytes("PrestationAccueilJeuneEnfant"), + cst_Apres$0=caml_string_of_jsbytes("Apres"), + cst_Avant$2=caml_string_of_jsbytes("Avant"), + cst_Pendant$2=caml_string_of_jsbytes("Pendant"), + cst_EffectiveEtPermanente$4= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_GardeAlterneeAllocataireUn$0= + caml_string_of_jsbytes("GardeAlterneeAllocataireUnique"), + cst_GardeAlterneePartageAlloca$0= + caml_string_of_jsbytes("GardeAlterneePartageAllocations"), + cst_ServicesSociauxAllocationV$5= + caml_string_of_jsbytes("ServicesSociauxAllocationVerseeALaFamille"), + cst_ServicesSociauxAllocationV$6= + caml_string_of_jsbytes + ("ServicesSociauxAllocationVerseeAuxServicesSociaux"), + cst_Guadeloupe$2=caml_string_of_jsbytes("Guadeloupe"), + cst_Guyane$2=caml_string_of_jsbytes("Guyane"), + cst_LaReunion$0=caml_string_of_jsbytes("LaReunion"), + cst_Martinique$2=caml_string_of_jsbytes("Martinique"), + cst_Mayotte$2=caml_string_of_jsbytes("Mayotte"), + cst_Metropole$0=caml_string_of_jsbytes("Metropole"), + cst_SaintBarthelemy$0=caml_string_of_jsbytes("SaintBarthelemy"), + cst_SaintMartin$2=caml_string_of_jsbytes("SaintMartin"), + cst_SaintPierreEtMiquelon$2= + caml_string_of_jsbytes("SaintPierreEtMiquelon"), + cst_Couple$0=caml_string_of_jsbytes("Couple"), + cst_PersonneSeule$0=caml_string_of_jsbytes("PersonneSeule"), + cst_AutresPersonnes$0=caml_string_of_jsbytes("AutresPersonnes"), + cst_EtudiantLogeEnChambreCROUS= + caml_string_of_jsbytes("EtudiantLogeEnChambreCROUS"), + cst_EtudiantLogeEnChambreCROUS$0= + caml_string_of_jsbytes("EtudiantLogeEnChambreCROUSRehabilitee"), + cst_PersonnesAgeesSelon3DeD842= + caml_string_of_jsbytes("PersonnesAgeesSelon3DeD842_16"), + cst_Autre$4=caml_string_of_jsbytes("Autre"), + cst_FoyerJeunesTrvailleursOuMi$0= + caml_string_of_jsbytes + ("FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995"), + cst_LogementPersonnesAgeesOuHa= + caml_string_of_jsbytes("LogementPersonnesAgeesOuHandicapees"), + cst_ResidenceSociale=caml_string_of_jsbytes("ResidenceSociale"), + cst_EffectiveEtPermanente$3= + caml_string_of_jsbytes("EffectiveEtPermanente"), + cst_ResidenceAlterneeAllocatai= + caml_string_of_jsbytes("ResidenceAlterneeAllocataireUnique"), + cst_ResidenceAlterneeAllocatio= + caml_string_of_jsbytes("ResidenceAlterneeAllocationsPartagee"), + cst_Celibataire=caml_string_of_jsbytes("Celibataire"), + cst_CelibataireSepareDeFait= + caml_string_of_jsbytes("CelibataireSepareDeFait"), + cst_ConcubinageDontSepareDeFai= + caml_string_of_jsbytes("ConcubinageDontSepareDeFait"), + cst_Concubins$0=caml_string_of_jsbytes("Concubins"), + cst_Maries=caml_string_of_jsbytes("Maries"), + cst_Pacses=caml_string_of_jsbytes("Pacses"), + cst_AidePersonnaliseeLogement= + caml_string_of_jsbytes("AidePersonnaliseeLogement"), + cst_AllocationLogementFamilial$2= + caml_string_of_jsbytes("AllocationLogementFamiliale"), + cst_AllocationLogementSociale$2= + caml_string_of_jsbytes("AllocationLogementSociale"), + cst_AllocationLogementFamilial$1= + caml_string_of_jsbytes("AllocationLogementFamiliale"), + cst_AllocationLogementSociale$1= + caml_string_of_jsbytes("AllocationLogementSociale"), + cst_PasEligible=caml_string_of_jsbytes("PasEligible"), + cst_ImpayeLoyer=caml_string_of_jsbytes("ImpayeLoyer"), + cst_ImpayePret=caml_string_of_jsbytes("ImpayePret"), + cst_Loyer$0=caml_string_of_jsbytes("Loyer"), + cst_Mensualite=caml_string_of_jsbytes("Mensualite"), + cst_TotalAnnuelEcheances=caml_string_of_jsbytes("TotalAnnuelEcheances"), + cst_Bailleur$0=caml_string_of_jsbytes("Bailleur"), + cst_Beneficiaire=caml_string_of_jsbytes("Beneficiaire"), + cst_EtablissementHabilite=caml_string_of_jsbytes("EtablissementHabilite"), + cst_Non$3=caml_string_of_jsbytes("Non"), + cst_OuiAvecLoyerOuCharges$0= + caml_string_of_jsbytes("OuiAvecLoyerOuCharges"), + cst_Zone1$0=caml_string_of_jsbytes("Zone1"), + cst_Zone2$0=caml_string_of_jsbytes("Zone2"), + cst_Zone3$0=caml_string_of_jsbytes("Zone3"), + cst_ApresPremierJourMoisCivilT= + caml_string_of_jsbytes + ("ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse"), + cst_AvantPremierJourMoisCivilT$0= + caml_string_of_jsbytes + ("AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse"), + cst_DateDeNaissance$0=caml_string_of_jsbytes("DateDeNaissance"), + cst_Ascendant$0=caml_string_of_jsbytes("Ascendant"), + cst_CollateralDeuxiemeTroisiem= + caml_string_of_jsbytes("CollateralDeuxiemeTroisiemeDegre"), + cst_Descendant$0=caml_string_of_jsbytes("Descendant"), + cst_GardeAlterneeCoefficientPr= + caml_string_of_jsbytes("GardeAlterneeCoefficientPriseEnCharge"), + cst_PasDeGardeAlternee=caml_string_of_jsbytes("PasDeGardeAlternee"), + cst_Autre$3=caml_string_of_jsbytes("Autre"), + cst_DemandeurOuConjointOuParen$0= + caml_string_of_jsbytes("DemandeurOuConjointOuParentOuViaPartsSocietes"), + cst_AllocationAdulteHandicape= + caml_string_of_jsbytes("AllocationAdulteHandicape"), + cst_AllocationJeuneEnfant$0= + caml_string_of_jsbytes("AllocationJeuneEnfant"), + cst_AllocationSoutienEnfantHan$0= + caml_string_of_jsbytes("AllocationSoutienEnfantHandicape"), + cst_AllocationSoutienFamilial$3= + caml_string_of_jsbytes("AllocationSoutienFamilial"), + cst_AllocationsFamiliales$3= + caml_string_of_jsbytes("AllocationsFamiliales"), + cst_ComplementFamilial$0=caml_string_of_jsbytes("ComplementFamilial"), + cst_Infini$2=caml_string_of_jsbytes("Infini"), + cst_Revenu$2=caml_string_of_jsbytes("Revenu"), + cst_Infini$1=caml_string_of_jsbytes("Infini"), + cst_Revenu$1=caml_string_of_jsbytes("Revenu"), + cst_Non$2=caml_string_of_jsbytes("Non"), + cst_Oui$1=caml_string_of_jsbytes("Oui"), + cst_AgrandirOuRendreHabitableD$0= + caml_string_of_jsbytes("AgrandirOuRendreHabitableD331_63"), + cst_ObjectifDecenceLogement= + caml_string_of_jsbytes("ObjectifDecenceLogement"), + cst_PasDeTravaux$2=caml_string_of_jsbytes("PasDeTravaux"), + cst_PrevuDansListeR321_15=caml_string_of_jsbytes("PrevuDansListeR321_15"), + cst_PasDeTravaux$1=caml_string_of_jsbytes("PasDeTravaux"), + cst_TravauxPourAcquisitionD832$0= + caml_string_of_jsbytes("TravauxPourAcquisitionD832_15_1"), + cst_TravauxSurLogementDejaAcqu= + caml_string_of_jsbytes("TravauxSurLogementDejaAcquisD832_15_2"), + cst_Demandeur$0=caml_string_of_jsbytes("Demandeur"), + cst_VendeurQuandDemandeurACont$0= + caml_string_of_jsbytes("VendeurQuandDemandeurAContratLocationAccession"), + cst_Autre$2=caml_string_of_jsbytes("Autre"), + cst_D331_32$0=caml_string_of_jsbytes("D331_32"), + cst_D331_59_8$0=caml_string_of_jsbytes("D331_59_8"), + cst_D331_63_64$0=caml_string_of_jsbytes("D331_63_64"), + cst_D331_76_1$0=caml_string_of_jsbytes("D331_76_1"), + cst_AidesLogementLib=caml_string_of_jsbytes("AidesLogementLib"), + Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, + Stdlib_Array=global_data.Stdlib__Array, + Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, + Stdlib=global_data.Stdlib, + Stdlib_Printf=global_data.Stdlib__Printf, + Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, + Law_source=[0]; + caml_register_global(8566,Law_source,"Law_source"); + var + PriseEnCharge=[0], + _j7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 90, + 14, + 90, + 29, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 101, + 18, + 101, + 64, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 100, + 5, + 100, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 100, + 5, + 100, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 87, + 14, + 87, + 53, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jR_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 86, + 14, + 86, + 50, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 89, + 14, + 89, + 46, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 88, + 14, + 88, + 54, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 97, + 18, + 97, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 96, + 5, + 96, + 80, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 96, + 5, + 96, + 80, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 93, + 18, + 93, + 67, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 92, + 5, + 92, + 75, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jx_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 92, + 5, + 92, + 75, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jt_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 117, + 14, + 117, + 30, + [0, + caml_string_of_jsbytes("Article L131-1"), + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]]], + _jq_=[0,0], + _jr_=[1,0], + _js_=[2,0], + _ju_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 76, + 11, + 76, + 27, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 76, + 11, + 76, + 27, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jv_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0,caml_string_of_jsbytes("enfants_\xc3\xa0_charge"),0]], + _jA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 92, + 5, + 92, + 75, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jB_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.personne_charge_effective_permanente_est_parent"), + 0]], + _jw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 92, + 5, + 92, + 75, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 96, + 5, + 96, + 80, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jH_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"), + 0]], + _jC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 96, + 5, + 96, + 80, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 88, + 14, + 88, + 54, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jL_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.ressources_m\xc3\xa9nage"), + 0]], + _jI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 88, + 14, + 88, + 54, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 89, + 14, + 89, + 46, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jP_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0,caml_string_of_jsbytes("allocations_familiales.r\xc3\xa9sidence"),0]], + _jM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 89, + 14, + 89, + 46, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 86, + 14, + 86, + 50, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jT_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0,caml_string_of_jsbytes("allocations_familiales.date_courante"),0]], + _jQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 86, + 14, + 86, + 50, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 87, + 14, + 87, + 53, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jX_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.enfants_\xc3\xa0_charge"), + 0]], + _jU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 87, + 14, + 87, + 53, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 100, + 5, + 100, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j3_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"), + 0]], + _jY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 100, + 5, + 100, + 72, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j4_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes("allocations_familiales"), + [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]], + _j5_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0, + caml_string_of_jsbytes("allocations_familiales"), + [0,caml_string_of_jsbytes("AllocationsFamiliales"),0]]], + _j8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 80, + 12, + 80, + 27, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 80, + 12, + 80, + 27, + [0, + caml_string_of_jsbytes("Interface du programme"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _j9_= + [0, + caml_string_of_jsbytes("InterfaceAllocationsFamiliales"), + [0,caml_string_of_jsbytes("i_montant_vers\xc3\xa9"),0]], + _jk_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 45, + 14, + 45, + 27, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _jg_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 183, + 14, + 183, + 62, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _jc_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"), + [0,caml_string_of_jsbytes("input0"),0]]], + _jd_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], + _je_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"), + [0,caml_string_of_jsbytes("output"),0]]], + _jf_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], + _i__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 189, + 14, + 189, + 61, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _i6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 39, + 14, + 39, + 38, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _i2_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _i3_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + 0]], + _i4_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _i5_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + 0]], + _iY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 37, + 14, + 37, + 32, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _iU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 186, + 5, + 186, + 43, + [0, + caml_string_of_jsbytes("Article R521-4"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iM_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prise_en_compte"), + [0,caml_string_of_jsbytes("input0"),0]]], + _iN_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _iO_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prise_en_compte"), + [0,caml_string_of_jsbytes("output"),0]]], + _iP_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _iQ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _iR_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], + _iS_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _iT_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], + _iV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 132, + 11, + 132, + 49, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iL_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 132, + 11, + 132, + 49, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 125, + 14, + 125, + 46, + [0, + caml_string_of_jsbytes("Article R521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 268, + 5, + 270, + 41, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 142, + 11, + 142, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 278, + 5, + 280, + 40, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 142, + 11, + 142, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 142, + 11, + 142, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 286, + 14, + 286, + 55, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ip_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _iq_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _ir_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _is_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _it_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 379, + 5, + 383, + 55, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _iu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 130, + 11, + 130, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ij_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _ik_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _il_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _im_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _in_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 389, + 5, + 392, + 56, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _io_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 130, + 11, + 130, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iv_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 130, + 11, + 130, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ii_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 22, + 14, + 22, + 40, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ie_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _if_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + 0]], + _ig_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _ih_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + 0]], + _iw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 130, + 11, + 130, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _id_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 130, + 11, + 130, + 37, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 356, + 5, + 357, + 69, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _h$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h7_=[8,0], + _h8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 151, + 24, + 151, + 44, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _h9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ia_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 18, + 14, + 18, + 34, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _h2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 199, + 14, + 199, + 39, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hY_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_forfaitaire"), + [0,caml_string_of_jsbytes("input0"),0]]], + _hZ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], + _h0_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _h1_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], + _hP_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _hQ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hR_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _hS_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 60, + 5, + 60, + 38, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 128, + 11, + 128, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hJ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _hK_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hL_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _hM_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 101, + 5, + 101, + 38, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 128, + 11, + 128, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hD_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _hE_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hF_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _hG_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 138, + 5, + 138, + 38, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 128, + 11, + 128, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hx_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("input0"),0]]], + _hy_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hz_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert_majoration"), + [0,caml_string_of_jsbytes("output"),0]]], + _hA_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _hB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 28, + 5, + 28, + 44, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _hC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 128, + 11, + 128, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 128, + 11, + 128, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 128, + 11, + 128, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ht_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 128, + 14, + 128, + 41, + [0, + caml_string_of_jsbytes("Article R521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _hl_=[8,0], + _hm_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 350, + 5, + 350, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hi_=[8,0], + _hj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 358, + 5, + 358, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hk_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hf_=[8,0], + _hg_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 366, + 5, + 366, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hc_=[8,0], + _hd_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 374, + 5, + 374, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _he_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _g$_=[8,0], + _ha_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 382, + 5, + 382, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _g8_=[8,0], + _g9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 390, + 5, + 390, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _g__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _g5_=[8,0], + _g6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 398, + 5, + 398, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _g7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _g2_=[8,0], + _g3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 406, + 5, + 406, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _g4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gZ_=[8,0], + _g0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 414, + 5, + 414, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _g1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gW_=[8,0], + _gX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 422, + 5, + 422, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _gY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ho_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gU_=[8,0], + _gV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 177, + 14, + 177, + 50, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _hp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gR_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 38, + 14, + 38, + 50, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 79, + 14, + 79, + 50, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 117, + 14, + 117, + 50, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 43, + 14, + 43, + 59, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 84, + 14, + 84, + 59, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 122, + 14, + 122, + 59, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 221, + 5, + 221, + 42, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 122, + 11, + 122, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gx_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 235, + 5, + 236, + 45, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 122, + 11, + 122, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gv_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 249, + 5, + 249, + 42, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 122, + 11, + 122, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 165, + 5, + 166, + 65, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 139, + 11, + 139, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 174, + 5, + 175, + 65, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _go_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 139, + 11, + 139, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gr_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 139, + 11, + 139, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gm_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 181, + 14, + 181, + 34, + [0, + caml_string_of_jsbytes("Article D521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gs_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 139, + 11, + 139, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 139, + 11, + 139, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gc_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + [0,caml_string_of_jsbytes("input0"),0]]], + _gd_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _ge_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _gf_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _gg_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 315, + 5, + 318, + 21, + [0, + caml_string_of_jsbytes("Article L521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _f5_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + [0,caml_string_of_jsbytes("input0"),0]]], + _f6_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _f7_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _f8_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _f9_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"), + [0,caml_string_of_jsbytes("input0"),0]]], + _f__= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], + _f$_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _ga_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], + _gb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 300, + 5, + 302, + 21, + [0, + caml_string_of_jsbytes("Article L521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _gi_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _f4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _f3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 126, + 11, + 126, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fV_=[8,0], + _fW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 159, + 6, + 159, + 71, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 409, + 5, + 410, + 72, + [0, + caml_string_of_jsbytes("Article L755-12"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _fY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 101, + 5, + 101, + 70, + [0, + caml_string_of_jsbytes("Article L521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _f0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fK_=[8,0], + _fL_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 251, + 5, + 252, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fH_=[8,0], + _fI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 260, + 5, + 261, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fE_=[8,0], + _fF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 269, + 5, + 270, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fB_=[8,0], + _fC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 278, + 5, + 279, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fy_=[8,0], + _fz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 287, + 5, + 288, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fv_=[8,0], + _fw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 296, + 5, + 297, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fx_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fs_=[8,0], + _ft_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 305, + 5, + 306, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fp_=[8,0], + _fq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 314, + 5, + 315, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fr_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fm_=[8,0], + _fn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 323, + 5, + 324, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fo_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fj_=[8,0], + _fk_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 332, + 5, + 333, + 53, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fg_=[8,0], + _fh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 341, + 5, + 341, + 49, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fi_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fe_=[8,0], + _ff_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 167, + 14, + 167, + 49, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _fO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fc_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 365, + 5, + 366, + 71, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _fd_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 362, + 29, + 362, + 64, + [0, + caml_string_of_jsbytes("Article D755-5"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _e9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 142, + 14, + 142, + 34, + [0, + caml_string_of_jsbytes("Article R521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _e5_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prise_en_compte"), + [0,caml_string_of_jsbytes("input0"),0]]], + _e6_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _e7_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prise_en_compte"), + [0,caml_string_of_jsbytes("output"),0]]], + _e8_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _e1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 160, + 14, + 160, + 34, + [0, + caml_string_of_jsbytes("Article R521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _eU_=[8,0], + _eV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 431, + 5, + 431, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eR_=[8,0], + _eS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 439, + 5, + 439, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eO_=[8,0], + _eP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 447, + 5, + 447, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eL_=[8,0], + _eM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 455, + 5, + 455, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eI_=[8,0], + _eJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 463, + 5, + 463, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eF_=[8,0], + _eG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 471, + 5, + 471, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eC_=[8,0], + _eD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 479, + 5, + 479, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ez_=[8,0], + _eA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 487, + 5, + 487, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ew_=[8,0], + _ex_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 495, + 5, + 495, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _ey_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _et_=[8,0], + _eu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 503, + 5, + 503, + 67, + [0, + caml_string_of_jsbytes("Annexe"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _ev_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _es_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 186, + 14, + 186, + 59, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _eo_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 195, + 14, + 195, + 67, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte"), + [0, + caml_string_of_jsbytes + ("Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte"), + 0]]]], + _ei_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 423, + 6, + 424, + 72, + [0, + caml_string_of_jsbytes("Article L755-12"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ej_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ed_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), + [0,caml_string_of_jsbytes("input0"),0]]], + _ee_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], + _ef_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"), + [0,caml_string_of_jsbytes("output"),0]]], + _eg_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], + _eh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 119, + 5, + 126, + 59, + [0, + caml_string_of_jsbytes("Article L521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ek_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ec_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _el_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 120, + 11, + 120, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 429, + 5, + 430, + 71, + [0, + caml_string_of_jsbytes("Article L755-12"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _d9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 137, + 11, + 137, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 31, + 9, + 31, + 32, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _d__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 137, + 11, + 137, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 137, + 11, + 137, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 23, + 5, + 23, + 67, + [0, + caml_string_of_jsbytes + ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _d1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 11, + 157, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 56, + 5, + 56, + 67, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 11, + 157, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 89, + 5, + 89, + 67, + [0, + caml_string_of_jsbytes + ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 11, + 157, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 116, + 5, + 116, + 67, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]], + _dV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 11, + 157, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 11, + 157, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 304, + 14, + 304, + 30, + [0, + caml_string_of_jsbytes("Article D521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _dN_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 30, + 5, + 30, + 67, + [0, + caml_string_of_jsbytes + ("Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 158, + 11, + 158, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dL_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 63, + 5, + 63, + 67, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 158, + 11, + 158, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 96, + 5, + 96, + 67, + [0, + caml_string_of_jsbytes + ("Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]], + _dK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 158, + 11, + 158, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/decrets_divers.catala_fr"), + 132, + 5, + 132, + 67, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations"), + [0,caml_string_of_jsbytes("Montant des plafonds de ressources"),0]]]], + _dI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 158, + 11, + 158, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 158, + 11, + 158, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 314, + 14, + 314, + 31, + [0, + caml_string_of_jsbytes("Article D521-3"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _dC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 34, + 14, + 34, + 36, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _dD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 155, + 11, + 155, + 33, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 155, + 11, + 155, + 33, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 75, + 14, + 75, + 64, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _du_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("input0"),0]]], + _dv_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _dw_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("output"),0]]], + _dx_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _dp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 83, + 19, + 83, + 67, + [0, + caml_string_of_jsbytes("Article R521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _dq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 152, + 11, + 152, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _do_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 56, + 14, + 56, + 41, + [0, + caml_string_of_jsbytes("Article R521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _dr_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 152, + 11, + 152, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 152, + 11, + 152, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _di_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 33, + 14, + 33, + 40, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _dc_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 165, + 14, + 165, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 161, + 14, + 161, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c9_=[1,0], + _c5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 163, + 14, + 163, + 50, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 167, + 14, + 167, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 64, + 14, + 64, + 44, + [0, + caml_string_of_jsbytes("Article R521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_D.catala_fr"), + 294, + 14, + 294, + 35, + [0, + caml_string_of_jsbytes("Article D521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 259, + 5, + 260, + 56, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cJ_=[1,0], + _cL_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cE_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 270, + 5, + 271, + 48, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cD_=[0,0], + _cF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 219, + 5, + 219, + 70, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cB_=[0,0], + _cG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 209, + 5, + 209, + 69, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cz_=[0,0], + _cH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 189, + 5, + 189, + 60, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cx_=[0,0], + _cI_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 98, + 11, + 98, + 20, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cs_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 215, + 5, + 215, + 70, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cr_=[1,0], + _ct_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 254, + 5, + 255, + 56, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _co_=[2,0], + _cq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ck_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 264, + 5, + 265, + 48, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cj_=[0,0], + _cl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ci_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 205, + 5, + 205, + 69, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _ch_=[0,0], + _cm_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cg_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 185, + 5, + 185, + 60, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _cf_=[0,0], + _cn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ce_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 97, + 11, + 97, + 26, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cv_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prise_en_compte"),0]], + _cN_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("versement"),0]], + _cQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 151, + 11, + 151, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 151, + 11, + 151, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cR_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("nombre_enfants_l521_1"),0]], + _cU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 154, + 11, + 154, + 41, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 154, + 11, + 154, + 41, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cV_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]], + _cW_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("version_avril_2008"), + [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]], + _cX_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("version_avril_2008"), + [0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0]]], + _c0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 167, + 14, + 167, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c1_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("bmaf.date_courante"),0]], + _cY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 167, + 14, + 167, + 32, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c2_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("bmaf"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _c3_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("bmaf"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _c6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 163, + 14, + 163, + 50, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c7_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]], + _c4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 163, + 14, + 163, + 50, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _c$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 161, + 14, + 161, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _da_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prestations_familiales.prestation_courante"), + 0]], + _c8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 161, + 14, + 161, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dd_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 165, + 14, + 165, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _de_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]], + _db_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 165, + 14, + 165, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _df_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prestations_familiales"), + [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]], + _dg_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("prestations_familiales"), + [0,caml_string_of_jsbytes("PrestationsFamiliales"),0]]], + _dj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 33, + 14, + 33, + 40, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _dk_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"), + 0]], + _dh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 33, + 14, + 33, + 40, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _dl_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"), + [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]], + _dm_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("enfant_le_plus_\xc3\xa2g\xc3\xa9"), + [0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0]]], + _ds_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _dz_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 95, + 11, + 95, + 61, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dt_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 95, + 11, + 95, + 61, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dA_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"), + 0]], + _dE_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("est_enfant_le_plus_\xc3\xa2g\xc3\xa9"),0]], + _dQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 158, + 11, + 158, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 158, + 11, + 158, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dR_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("plafond_II_d521_3"),0]], + _d3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 11, + 157, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _dS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 157, + 11, + 157, + 27, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d4_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("plafond_I_d521_3"),0]], + _d$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 137, + 11, + 137, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _d5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 137, + 11, + 137, + 34, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ea_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_compl\xc3\xa9ment"),0]], + _em_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_forfaitaire"),0]], + _ep_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 117, + 11, + 117, + 64, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _en_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 117, + 11, + 117, + 64, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eq_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"), + 0]], + _eY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _er_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 116, + 11, + 116, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _eZ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"), + 0]], + _e2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 110, + 11, + 110, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _e0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 110, + 11, + 110, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _e3_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("nombre_total_enfants"),0]], + _e__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 109, + 11, + 109, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _e4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 109, + 11, + 109, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _e$_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("nombre_moyen_enfants"),0]], + _fP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fa_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 105, + 11, + 105, + 46, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fQ_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_base_premier_enfant"),0]], + _f1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _fR_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 103, + 11, + 103, + 28, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _f2_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_base"),0]], + _gk_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert_majoration"),0]], + _gt_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("compl\xc3\xa9ment_d\xc3\xa9gressif"),0]], + _gB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 122, + 11, + 122, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 122, + 11, + 122, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gC_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire_par_enfant"), + 0]], + _gK_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 107, + 11, + 107, + 56, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gL_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"), + 0]], + _hq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _gM_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 106, + 11, + 106, + 47, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hr_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_base_deuxi\xc3\xa8me_enfant"), + 0]], + _hu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 108, + 11, + 108, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hs_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 108, + 11, + 108, + 38, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hv_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("rapport_enfants_total_moyen"),0]], + _hW_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes("montant_initial_m\xc3\xa9tropole_majoration"), + 0]], + _h3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 123, + 11, + 123, + 36, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _hX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 123, + 11, + 123, + 36, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h4_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_forfaitaire"),0]], + _ib_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _h5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 104, + 11, + 104, + 31, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ic_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_base"),0]], + _ix_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_initial_majoration"),0]], + _iF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 142, + 11, + 142, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iy_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 142, + 11, + 142, + 52, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iG_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"), + 0]], + _iJ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 111, + 11, + 111, + 43, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 111, + 11, + 111, + 43, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iK_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_avec_garde_altern\xc3\xa9e_base"),0]], + _iW_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_avec_garde_altern\xc3\xa9e_majoration"), + 0]], + _iZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 112, + 11, + 112, + 29, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _iX_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 112, + 11, + 112, + 29, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _i0_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_base"),0]], + _i7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 134, + 11, + 134, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _i1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 134, + 11, + 134, + 35, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _i8_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_vers\xc3\xa9_majoration"),0]], + _i$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 138, + 11, + 138, + 58, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _i9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 138, + 11, + 138, + 58, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ja_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"), + 0]], + _jh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 141, + 11, + 141, + 59, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _jb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 141, + 11, + 141, + 59, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _ji_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0, + caml_string_of_jsbytes + ("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"), + 0]], + _jl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 100, + 12, + 100, + 25, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _jj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 100, + 12, + 100, + 25, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _jm_= + [0, + caml_string_of_jsbytes("AllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant_vers\xc3\xa9"),0]], + _jn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 231, + 5, + 235, + 6, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _jo_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 231, + 5, + 235, + 6, + [0, + caml_string_of_jsbytes("Article L521-2"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _b$_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/autres_codes.catala_fr"), + 24, + 5, + 24, + 63, + [0, + caml_string_of_jsbytes("Article L821-3"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"), + [0, + caml_string_of_jsbytes + ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ca_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b7_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 60, + 5, + 62, + 62, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _b8_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 49, + 5, + 50, + 50, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _b9_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b__= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cb_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _cc_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b4_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 57, + 12, + 57, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b0_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 68, + 5, + 71, + 56, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _b1_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 58, + 12, + 58, + 31, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bZ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 58, + 12, + 58, + 31, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _b2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 58, + 12, + 58, + 31, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bY_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 58, + 12, + 58, + 31, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bU_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 215, + 18, + 215, + 41, + [0, + caml_string_of_jsbytes("Article R755-0-2"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _bV_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 59, + 11, + 59, + 27, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 31, + 14, + 31, + 30, + [0, + caml_string_of_jsbytes("Article R512-2"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _bI_=[5,0], + _bJ_=[4,0], + _bK_=[3,0], + _bL_=[2,0], + _bM_=[1,0], + _bN_=[0,0], + _bO_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_L.catala_fr"), + 357, + 5, + 362, + 30, + [0, + caml_string_of_jsbytes("Article L751-1"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _bP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 61, + 12, + 61, + 35, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bH_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 61, + 12, + 61, + 35, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bB_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 68, + 14, + 68, + 28, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bx_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 69, + 14, + 69, + 32, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bt_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 21, + 14, + 21, + 26, + [0, + caml_string_of_jsbytes("Article R512-2"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _bu_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 60, + 12, + 60, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bs_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 60, + 12, + 60, + 24, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bv_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]], + _by_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 69, + 14, + 69, + 32, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bz_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic.date_courante"),0]], + _bw_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 69, + 14, + 69, + 32, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 68, + 14, + 68, + 28, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bD_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]], + _bA_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 68, + 14, + 68, + 28, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bE_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], + _bF_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], + _bQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 61, + 12, + 61, + 35, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 61, + 12, + 61, + 35, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bR_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]], + _bW_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 59, + 11, + 59, + 27, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 59, + 11, + 59, + 27, + [0, + caml_string_of_jsbytes("Prestations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _bX_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]], + _b3_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], + _cd_= + [0, + caml_string_of_jsbytes("PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _bo_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 28, + 5, + 29, + 33, + [0, + caml_string_of_jsbytes + ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _bp_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bm_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 48, + 5, + 49, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _bn_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bk_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 64, + 5, + 65, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _bl_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bi_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 82, + 5, + 83, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _bj_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _bh_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _br_= + [0, + caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant"),0]], + _a7_=[7,0], + _a8_=[5,0], + _a9_=[4,0], + _a__=[3,0], + _a$_=[2,0], + _ba_=[1,0], + _bb_=[0,0], + _bc_=[6,0], + _bd_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 29, + 5, + 38, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _be_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _a4_=[8,0], + _a5_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 47, + 5, + 49, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _a6_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _aU_=[7,0], + _aV_=[5,0], + _aW_=[4,0], + _aX_=[3,0], + _aY_=[2,0], + _aZ_=[1,0], + _a0_=[0,0], + _a1_=[6,0], + _a2_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 68, + 5, + 77, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _a3_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _aR_=[8,0], + _aS_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 86, + 5, + 88, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aT_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _aH_=[7,0], + _aI_=[5,0], + _aJ_=[4,0], + _aK_=[3,0], + _aL_=[2,0], + _aM_=[1,0], + _aN_=[0,0], + _aO_=[6,0], + _aP_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 107, + 5, + 116, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aQ_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _aE_=[8,0], + _aF_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 125, + 5, + 127, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aG_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _au_=[7,0], + _av_=[5,0], + _aw_=[4,0], + _ax_=[3,0], + _ay_=[2,0], + _az_=[1,0], + _aA_=[0,0], + _aB_=[6,0], + _aC_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 146, + 5, + 155, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aD_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _ar_=[8,0], + _as_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 165, + 5, + 167, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _at_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _ah_=[7,0], + _ai_=[5,0], + _aj_=[4,0], + _ak_=[3,0], + _al_=[2,0], + _am_=[1,0], + _an_=[0,0], + _ao_=[6,0], + _ap_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 186, + 5, + 195, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _aq_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _ae_=[8,0], + _af_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 204, + 5, + 206, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _ag_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _W_=[7,0], + _X_=[5,0], + _Y_=[4,0], + _Z_=[3,0], + ___=[2,0], + _$_=[1,0], + _aa_=[0,0], + _ab_=[6,0], + _ac_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 225, + 5, + 234, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _ad_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _T_=[8,0], + _U_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 243, + 5, + 245, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _V_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _J_=[7,0], + _K_=[5,0], + _L_=[4,0], + _M_=[3,0], + _N_=[2,0], + _O_=[1,0], + _P_=[0,0], + _Q_=[6,0], + _R_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 265, + 5, + 274, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _S_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _G_=[8,0], + _H_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 283, + 5, + 285, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _I_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _bf_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _F_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _bg_= + [0, + caml_string_of_jsbytes("Smic"), + [0,caml_string_of_jsbytes("brut_horaire"),0]], + _C_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/epilogue.catala_fr"), + 12, + 14, + 12, + 25, + [0, + caml_string_of_jsbytes("R\xc3\xa8gles diverses"), + [0,caml_string_of_jsbytes("\xc3\x89pilogue"),0]]], + _A_=[2,0], + _B_=[1,0], + _D_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 80, + 12, + 80, + 23, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _z_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 80, + 12, + 80, + 23, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _E_= + [0, + caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"), + [0,caml_string_of_jsbytes("le_plus_\xc3\xa2g\xc3\xa9"),0]], + _w_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/securite_sociale_R.catala_fr"), + 78, + 14, + 78, + 41, + [0, + caml_string_of_jsbytes("Article R521-1"), + [0, + caml_string_of_jsbytes("Chapitre 1er : Allocations familiales"), + [0, + caml_string_of_jsbytes + ("Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _x_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 76, + 12, + 76, + 39, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _v_= + [0, + caml_string_of_jsbytes + ("examples/allocations_familiales/prologue.catala_fr"), + 76, + 12, + 76, + 39, + [0, + caml_string_of_jsbytes("Allocations familiales"), + [0, + caml_string_of_jsbytes("Champs d'applications"), + [0,caml_string_of_jsbytes("Prologue"),0]]]], + _y_= + [0, + caml_string_of_jsbytes("AllocationFamilialesAvril2008"), + [0, + caml_string_of_jsbytes("\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3"), + 0]], + _u_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales_in"),0], + _t_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0], + _s_=[0,caml_string_of_jsbytes("Smic_in"),0], + _r_=[0,caml_string_of_jsbytes("AllocationsFamiliales_in"),0], + _q_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9_in"),0], + _p_=[0,caml_string_of_jsbytes("PrestationsFamiliales_in"),0], + _o_=[0,caml_string_of_jsbytes("PrestationsFamiliales"),0], + _n_=[0,caml_string_of_jsbytes("EnfantLePlus\xc3\x82g\xc3\xa9"),0], + _m_=[0,caml_string_of_jsbytes("Enfant"),0], + _l_=[0,caml_string_of_jsbytes("EnfantEntr\xc3\xa9e"),0], + _k_=[0,caml_string_of_jsbytes("InterfaceAllocationsFamiliales"),0], + _j_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0], + _i_=[0,caml_string_of_jsbytes("Smic"),0], + _h_=[0,caml_string_of_jsbytes("AllocationsFamiliales"),0], + _g_=[0,caml_string_of_jsbytes("AllocationFamilialesAvril2008"),0], + _f_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0], + _e_= + [0, + caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"), + 0], + _d_=[0,caml_string_of_jsbytes("VersementAllocations"),0], + _c_=[0,caml_string_of_jsbytes("PriseEnCompte"),0], + _b_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0], + _a_=[0,caml_string_of_jsbytes("PriseEnCharge"),0], + _kz_=[7,0], + _kA_=[5,0], + _kB_=[4,0], + _kC_=[6,0], + _kD_=[8,0], + _kE_=[2,0], + _kF_=[3,0], + _kG_=[1,0], + _kH_=[0,0], + _ky_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'Collectivite.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")], + _kq_=[0,0], + _kr_=[2,0], + _ks_=[1,0], + _kt_=[5,0], + _ku_=[6,0], + _kv_=[3,0], + _kw_=[7,0], + _kx_=[4,0], + _kp_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")], + _kn_=[0,0], + _ko_=[1,0], + _km_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'VersementAllocations.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'VersementAllocations.t'")], + _kj_=[2,0], + _kk_=[1,0], + _kl_=[0,0], + _ki_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PriseEnCompte.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PriseEnCompte.t'")], + _kf_=[1,0], + _kg_=[0,0], + _kh_=[2,0], + _ke_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationObligationScolaire.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")], + _j$_=[4,0], + _ka_=[3,0], + _kb_=[0,0], + _kc_=[1,0], + _kd_=[2,0], + _j__= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PriseEnCharge.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")], + _Vy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 284, + 14, + 284, + 25, + [0, + caml_string_of_jsbytes + ("Conseil d'\xc3\x89tat, 5\xc3\xa8me - 4\xc3\xa8me chambres r\xc3\xa9unies, 21/07/2017, 398563"), + 0]], + _Vu_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Vv_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Vw_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Vx_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Vq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1165, + 14, + 1165, + 63, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1193, + 14, + 1193, + 25, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1161, + 5, + 1161, + 70, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1158, + 14, + 1158, + 58, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1156, + 14, + 1156, + 54, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1154, + 14, + 1154, + 51, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1152, + 14, + 1152, + 59, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1150, + 14, + 1150, + 38, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _US_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1148, + 14, + 1148, + 34, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1146, + 14, + 1146, + 31, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1167, + 14, + 1167, + 48, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1135, + 11, + 1135, + 45, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1135, + 11, + 1135, + 45, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UM_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("m\xc3\xa9nage_sans_enfants_garde_altern\xc3\xa9e"), + 0]], + _UP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1146, + 14, + 1146, + 31, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UQ_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("calculette.m\xc3\xa9nage"),0]], + _UN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1146, + 14, + 1146, + 31, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1148, + 14, + 1148, + 34, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UU_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("calculette.demandeur"),0]], + _UR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1148, + 14, + 1148, + 34, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1150, + 14, + 1150, + 38, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UY_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("calculette.date_courante"),0]], + _UV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1150, + 14, + 1150, + 38, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1152, + 14, + 1152, + 59, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U2_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette.ressources_m\xc3\xa9nage_prises_en_compte"), + 0]], + _UZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1152, + 14, + 1152, + 59, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U3_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes("calculette"), + [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], + _U4_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes("calculette"), + [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], + _U7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1154, + 14, + 1154, + 51, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U8_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette_sans_garde_altern\xc3\xa9e.m\xc3\xa9nage"), + 0]], + _U5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1154, + 14, + 1154, + 51, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _U$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1156, + 14, + 1156, + 54, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Va_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette_sans_garde_altern\xc3\xa9e.demandeur"), + 0]], + _U9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1156, + 14, + 1156, + 54, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1158, + 14, + 1158, + 58, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ve_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette_sans_garde_altern\xc3\xa9e.date_courante"), + 0]], + _Vb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1158, + 14, + 1158, + 58, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1161, + 5, + 1161, + 70, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vi_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("calculette_sans_garde_altern\xc3\xa9e.ressources_m\xc3\xa9nage_prises_en_compte"), + 0]], + _Vf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1161, + 5, + 1161, + 70, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vj_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], + _Vk_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes("calculette_sans_garde_altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0]]], + _Vn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1142, + 12, + 1142, + 23, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1142, + 12, + 1142, + 23, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vo_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], + _Vr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1136, + 11, + 1136, + 60, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1136, + 11, + 1136, + 60, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vs_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _Vz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1143, + 12, + 1143, + 23, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Vt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1143, + 12, + 1143, + 23, + [0, + caml_string_of_jsbytes("Calculette avec garde altern\xc3\xa9e"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _VA_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + [0,caml_string_of_jsbytes("aide_finale"),0]], + _UG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1075, + 14, + 1075, + 33, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Uy_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Uz_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _UA_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _UB_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _UC_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _UD_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _UE_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _UF_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Uu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1092, + 14, + 1092, + 36, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Um_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Un_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Uo_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Up_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Uq_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ur_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Us_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ut_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Uv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1070, + 12, + 1070, + 34, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ul_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1070, + 12, + 1070, + 34, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ui_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1054, + 14, + 1054, + 25, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Ue_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1116, + 14, + 1116, + 63, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1111, + 14, + 1111, + 62, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1107, + 14, + 1107, + 53, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1101, + 5, + 1101, + 65, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1096, + 14, + 1096, + 68, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1092, + 14, + 1092, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1063, + 14, + 1063, + 58, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TP_=[0,0], + _TL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1088, + 14, + 1088, + 64, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1065, + 14, + 1065, + 50, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TC_=[2,0], + _TD_=[1,0], + _TE_=[2,0], + _Ty_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1113, + 14, + 1113, + 54, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1109, + 14, + 1109, + 45, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1105, + 14, + 1105, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1098, + 14, + 1098, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ti_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1094, + 14, + 1094, + 58, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Te_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1090, + 14, + 1090, + 56, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1084, + 14, + 1084, + 67, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1080, + 14, + 1080, + 63, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1076, + 14, + 1076, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1049, + 5, + 1049, + 74, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _SS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1082, + 14, + 1082, + 55, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1078, + 14, + 1078, + 52, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1086, + 14, + 1086, + 59, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1086, + 14, + 1086, + 59, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SM_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.date_courante"), + 0]], + _SJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1086, + 14, + 1086, + 59, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1078, + 14, + 1078, + 52, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SQ_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.m\xc3\xa9nage"), + 0]], + _SN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1078, + 14, + 1078, + 52, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _ST_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1082, + 14, + 1082, + 55, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SU_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.demandeur"), + 0]], + _SR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1082, + 14, + 1082, + 55, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _SX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1049, + 5, + 1049, + 74, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _SY_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement.b\xc3\xa9n\xc3\xa9ficie_aide_personnalis\xc3\xa9e_logement"), + 0]], + _SV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1049, + 5, + 1049, + 74, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _SZ_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"), + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + 0]]], + _S0_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement"), + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + 0]]], + _S3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1076, + 14, + 1076, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S4_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.m\xc3\xa9nage"), + 0]], + _S1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1076, + 14, + 1076, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1080, + 14, + 1080, + 63, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S8_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.demandeur"), + 0]], + _S5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1080, + 14, + 1080, + 63, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _S$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1084, + 14, + 1084, + 67, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ta_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement.date_courante"), + 0]], + _S9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1084, + 14, + 1084, + 67, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tb_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + 0]]], + _Tc_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_aide_personnalis\xc3\xa9e_logement"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + 0]]], + _Tf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1090, + 14, + 1090, + 56, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tg_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_allocation_logement.mode_occupation"), + 0]], + _Td_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1090, + 14, + 1090, + 56, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1094, + 14, + 1094, + 58, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tk_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_allocation_logement.ressources_m\xc3\xa9nage_sans_arrondi"), + 0]], + _Th_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1094, + 14, + 1094, + 58, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1098, + 14, + 1098, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _To_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_allocation_logement.situation_familiale"), + 0]], + _Tl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1098, + 14, + 1098, + 60, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1105, + 14, + 1105, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ts_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_allocation_logement.nombre_personnes_\xc3\xa0_charge"), + 0]], + _Tp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1105, + 14, + 1105, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1109, + 14, + 1109, + 45, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tw_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("calcul_allocation_logement.zone"),0]], + _Tt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1109, + 14, + 1109, + 45, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Tz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1113, + 14, + 1113, + 54, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TA_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_allocation_logement.date_courante"), + 0]], + _Tx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1113, + 14, + 1113, + 54, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1065, + 14, + 1065, + 50, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TH_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("calcul_allocation_logement.type_aide"),0]], + _TB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1065, + 14, + 1065, + 50, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TI_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_allocation_logement"), + [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]], + _TJ_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_allocation_logement"), + [0,caml_string_of_jsbytes("CalculAllocationLogement"),0]]], + _TM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1088, + 14, + 1088, + 64, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TN_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.mode_occupation"), + 0]], + _TK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1088, + 14, + 1088, + 64, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1063, + 14, + 1063, + 58, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TS_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.type_aide"), + 0]], + _TO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1063, + 14, + 1063, + 58, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _TV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1092, + 14, + 1092, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TW_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.ressources_m\xc3\xa9nage_sans_arrondi"), + 0]], + _TT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1092, + 14, + 1092, + 66, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _TZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1096, + 14, + 1096, + 68, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T0_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.situation_familiale"), + 0]], + _TX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1096, + 14, + 1096, + 68, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1101, + 5, + 1101, + 65, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T4_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.nombre_personnes_\xc3\xa0_charge"), + 0]], + _T1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1101, + 5, + 1101, + 65, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1107, + 14, + 1107, + 53, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T8_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.zone"), + 0]], + _T5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1107, + 14, + 1107, + 53, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _T$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1111, + 14, + 1111, + 62, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ua_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("calcul_aide_personnalis\xc3\xa9e_logement.date_courante"), + 0]], + _T9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1111, + 14, + 1111, + 62, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ub_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"), + [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]], + _Uc_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes("calcul_aide_personnalis\xc3\xa9e_logement"), + [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0]]], + _Uf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1072, + 12, + 1072, + 61, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ud_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1072, + 12, + 1072, + 61, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ug_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _Uj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1068, + 12, + 1068, + 23, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Uh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1068, + 12, + 1068, + 23, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Uk_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], + _Uw_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _UH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1069, + 12, + 1069, + 31, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _Ux_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1069, + 12, + 1069, + 31, + [0, + caml_string_of_jsbytes("Calculette globale"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]], + _UI_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogement"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _SG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1406, + 14, + 1406, + 33, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _SC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1408, + 14, + 1408, + 36, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _SD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1006, + 12, + 1006, + 34, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _SB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1006, + 12, + 1006, + 34, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Sy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1520, + 14, + 1520, + 36, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sr_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ss_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _St_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Su_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Si_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Sj_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Sk_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Sl_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _R__= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _R$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Sa_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Sb_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _R1_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _R2_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _R3_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _R4_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _RS_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _RT_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _RU_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _RV_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _RP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1539, + 16, + 1542, + 39, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _RQ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _RR_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _RW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1524, + 9, + 1545, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _RX_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _RY_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _RZ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _R0_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("direct"),0]], + _R5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1588, + 9, + 1599, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _R6_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _R7_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("direct"),0]], + _R8_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _R9_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1609, + 10, + 1624, + 11, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sd_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Se_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1571, + 16, + 1574, + 39, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sg_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _Sh_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1556, + 9, + 1577, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sn_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _So_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sp_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _Sq_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _Sv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1636, + 10, + 1651, + 11, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Sw_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Sx_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _RL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 88, + 14, + 88, + 44, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _RF_=[0,0], + _RG_=[1,0], + _RH_=[1,0], + _RI_=[1,0], + _RJ_=[0,0], + _RK_=[1,0], + _RB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4812, + 14, + 4812, + 31, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Rx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1395, + 14, + 1395, + 34, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Ry_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1000, + 11, + 1000, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Rw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1000, + 11, + 1000, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Rz_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]], + _RC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 993, + 10, + 993, + 22, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 993, + 10, + 993, + 22, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RD_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]], + _RM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1001, + 11, + 1001, + 41, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1001, + 11, + 1001, + 41, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RN_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]], + _Sz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1003, + 11, + 1003, + 33, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _RO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1003, + 11, + 1003, + 33, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _SA_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("sous_calcul_traitement"),0]], + _SE_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _SH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1005, + 12, + 1005, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _SF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1005, + 12, + 1005, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _SI_= + [0, + caml_string_of_jsbytes("CalculAllocationLogement"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _Rr_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1124, + 5, + 1124, + 73, + [0, + caml_string_of_jsbytes("Article L841-3"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Rq_=[2,0], + _Rs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 413, + 10, + 413, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ro_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1137, + 5, + 1140, + 28, + [0, + caml_string_of_jsbytes("Article L841-4"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Rn_=[0,0], + _Rp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 413, + 10, + 413, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 413, + 10, + 413, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1033, + 14, + 1033, + 25, + [0, + caml_string_of_jsbytes("Article L841-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Ri_=[0,0], + _Rj_=[0,0], + _Rk_=[1,0], + _Rl_=[2,0], + _Q$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 1002, + 5, + 1006, + 29, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Ra_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Q7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 979, + 5, + 990, + 13, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Q8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Q2_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("condition_2_r823_4"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Q3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _Q4_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("condition_2_r823_4"), + [0,caml_string_of_jsbytes("output"),0]]], + _Q5_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _Q6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 961, + 5, + 963, + 9, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Q9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Q__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QV_=[2,0], + _Q0_=[0,0], + _QW_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("input0"),0]]], + _QX_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _QY_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("output"),0]]], + _QZ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _Q1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 922, + 5, + 947, + 29, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Rc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QO_=[2,0], + _QT_=[0,0], + _QP_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("input0"),0]]], + _QQ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _QR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0, + caml_string_of_jsbytes("droit_ouvert"), + [0,caml_string_of_jsbytes("output"),0]]], + _QS_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _QU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 890, + 5, + 911, + 8, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Rd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QJ_=[4,0], + _QK_=[3,0], + _QL_=[1,0], + _QM_=[0,0], + _QN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 870, + 5, + 875, + 6, + [0, + caml_string_of_jsbytes("Article L841-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Re_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 840, + 14, + 840, + 25, + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]], + _QC_=[0,0], + _QD_=[2,0], + _Qy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 432, + 14, + 432, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 434, + 14, + 434, + 63, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4770, + 9, + 4770, + 55, + [0, + caml_string_of_jsbytes("Article R842-14"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Qp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4770, + 9, + 4770, + 55, + [0, + caml_string_of_jsbytes("Article R842-14"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Qq_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_surface"), + 0]], + _Ql_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4769, + 9, + 4769, + 68, + [0, + caml_string_of_jsbytes("Article R842-14"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Qm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4769, + 9, + 4769, + 68, + [0, + caml_string_of_jsbytes("Article R842-14"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Qn_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.condition_logement_r\xc3\xa9sidence_principale"), + 0]], + _Qi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 430, + 14, + 430, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qe_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 429, + 14, + 429, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qa_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 428, + 14, + 428, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4364, + 5, + 4369, + 28, + [0, + caml_string_of_jsbytes("Article R842-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _P4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 402, + 11, + 402, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4347, + 5, + 4352, + 28, + [0, + caml_string_of_jsbytes("Article R842-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _P5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 402, + 11, + 402, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4330, + 5, + 4337, + 28, + [0, + caml_string_of_jsbytes("Article R842-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _P6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 402, + 11, + 402, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 402, + 11, + 402, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4300, + 5, + 4302, + 28, + [0, + caml_string_of_jsbytes("Article R842-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _P8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 402, + 11, + 402, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 402, + 11, + 402, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 426, + 14, + 426, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PS_=[6,0], + _PO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 422, + 14, + 422, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PN_=[1,0], + _PJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 421, + 14, + 421, + 50, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4171, + 14, + 4171, + 28, + [0, + caml_string_of_jsbytes("Article D841-1"), + [0, + caml_string_of_jsbytes("Chapitre 1 : Champ d'application"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _PG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 405, + 11, + 405, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 405, + 11, + 405, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PH_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0,caml_string_of_jsbytes("dur\xc3\xa9e_l841_1_3"),0]], + _PK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 421, + 14, + 421, + 50, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PL_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0,caml_string_of_jsbytes("prestations_familiales.date_courante"),0]], + _PI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 421, + 14, + 421, + 50, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 422, + 14, + 422, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PQ_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("prestations_familiales.prestation_courante"), + 0]], + _PM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 422, + 14, + 422, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 426, + 14, + 426, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PV_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0,caml_string_of_jsbytes("prestations_familiales.r\xc3\xa9sidence"),0]], + _PR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 426, + 14, + 426, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PW_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("prestations_familiales"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + 0]]], + _PX_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("prestations_familiales"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + 0]]], + _P9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 402, + 11, + 402, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 402, + 11, + 402, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _P__= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("condition_accession_propri\xc3\xa9t\xc3\xa9"), + 0]], + _Qb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 428, + 14, + 428, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qc_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"), + 0]], + _P$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 428, + 14, + 428, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 429, + 14, + 429, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qg_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"), + 0]], + _Qd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 429, + 14, + 429, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 430, + 14, + 430, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qk_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"), + 0]], + _Qh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 430, + 14, + 430, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qr_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _Qs_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _Qv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 415, + 12, + 415, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 415, + 12, + 415, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qw_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _Qz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 414, + 12, + 414, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Qx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 414, + 12, + 414, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QA_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + 0]], + _QF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 412, + 10, + 412, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 412, + 10, + 412, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QG_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_dispositions_communes"), + 0]], + _Rf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _QH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 404, + 11, + 404, + 52, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rg_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_allocation_logement_familiale"), + 0]], + _Ru_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 413, + 10, + 413, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 413, + 10, + 413, + 16, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux allocations de logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Rv_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_l841_2"),0]], + _PA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 591, + 5, + 593, + 36, + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]], + _PB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 371, + 12, + 371, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 371, + 12, + 371, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 382, + 14, + 382, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 384, + 14, + 384, + 63, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ph_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3693, + 5, + 3698, + 30, + [0, + caml_string_of_jsbytes("Article R832-21"), + [0, + caml_string_of_jsbytes + ("Sous-Section 1 : Conditions d'assimilation des logements-foyers aux logements \xc3\xa0 usage locatif"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Pi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pd_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Pe_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + 0]], + _Pf_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + [0,caml_string_of_jsbytes("output"),0]]], + _Pg_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + 0]], + _Pc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 701, + 5, + 704, + 30, + [0, + caml_string_of_jsbytes("Article L831-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Pj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 684, + 5, + 687, + 30, + [0, + caml_string_of_jsbytes("Article L831-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Pk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pa_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 641, + 5, + 650, + 30, + [0, + caml_string_of_jsbytes("Article L831-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Pl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O8_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + [0,caml_string_of_jsbytes("input0"),0]]], + _O9_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + 0]], + _O__= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + [0,caml_string_of_jsbytes("output"),0]]], + _O$_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + 0]], + _O7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 620, + 5, + 623, + 30, + [0, + caml_string_of_jsbytes("Article L831-1"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Pm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 380, + 14, + 380, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 379, + 14, + 379, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 378, + 14, + 378, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 740, + 5, + 753, + 30, + [0, + caml_string_of_jsbytes("Article L831-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _OM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 721, + 5, + 726, + 30, + [0, + caml_string_of_jsbytes("Article L831-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _ON_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 716, + 31, + 716, + 54, + [0, + caml_string_of_jsbytes("Article L831-2"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _OO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 367, + 11, + 367, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 367, + 11, + 367, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 367, + 11, + 367, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ox_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3021, + 5, + 3024, + 41, + [0, + caml_string_of_jsbytes("Article R832-7"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Oy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ow_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2986, + 5, + 2988, + 42, + [0, + caml_string_of_jsbytes("Article R832-5"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Oz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ov_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ou_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 366, + 11, + 366, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OC_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_1"), + 0]], + _OG_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("caract\xc3\xa9ristiques_pr\xc3\xaat_l831_1_6"), + 0]], + _OP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 365, + 11, + 365, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OQ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("condition_logement_pr\xc3\xaat"),0]], + _OT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 378, + 14, + 378, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OU_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.m\xc3\xa9nage"), + 0]], + _OR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 378, + 14, + 378, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 379, + 14, + 379, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _OY_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune.demandeur"), + 0]], + _OV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 379, + 14, + 379, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 380, + 14, + 380, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O2_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes + ("\xc3\xa9ligibilit\xc3\xa9_commune.date_courante"), + 0]], + _OZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 380, + 14, + 380, + 47, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _O4_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_commune"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _Po_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _O5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 364, + 11, + 364, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pp_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("condition_logement_bailleur"),0]], + _Ps_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 373, + 12, + 373, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 373, + 12, + 373, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pt_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _Pw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 372, + 12, + 372, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Pu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 372, + 12, + 372, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Px_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0, + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + 0]], + _PC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 371, + 12, + 371, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Py_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 371, + 12, + 371, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _PD_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], + _Or_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2109, + 14, + 2109, + 40, + [0, + caml_string_of_jsbytes("Article D823-22"), + [0, + caml_string_of_jsbytes + ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Om_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 563, + 5, + 566, + 42, + [0, + caml_string_of_jsbytes("Article L823-8"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _On_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 457, + 11, + 457, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ol_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 457, + 11, + 457, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Oh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4206, + 14, + 4206, + 29, + [0, + caml_string_of_jsbytes("Article 45"), + [0, + caml_string_of_jsbytes + ("Chapitre VIII : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Oc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2069, + 6, + 2079, + 75, + [0, + caml_string_of_jsbytes("Article D823-20"), + [0, + caml_string_of_jsbytes + ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Od_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 456, + 11, + 456, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ob_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 456, + 11, + 456, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 470, + 14, + 470, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 469, + 14, + 469, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 468, + 14, + 468, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 472, + 14, + 472, + 65, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2060, + 5, + 2065, + 77, + [0, + caml_string_of_jsbytes("Article D823-20"), + [0, + caml_string_of_jsbytes + ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _NP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 455, + 11, + 455, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 455, + 11, + 455, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2083, + 14, + 2083, + 47, + [0, + caml_string_of_jsbytes("Article D823-20"), + [0, + caml_string_of_jsbytes + ("Section 2 : Prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _NK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 458, + 11, + 458, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 458, + 11, + 458, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NL_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("d\xc3\xa9lai_apr\xc3\xa8s_emm\xc3\xa9nagement_l823_8_2"), + 0]], + _NQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 455, + 11, + 455, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 455, + 11, + 455, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0,caml_string_of_jsbytes("condition_rang_enfant"),0]], + _NU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 472, + 14, + 472, + 65, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NV_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("base_mensuelle_allocations_familiales.date_courante"), + 0]], + _NS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 472, + 14, + 472, + 65, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _NW_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _NX_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _N0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 468, + 14, + 468, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N1_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.m\xc3\xa9nage"), + 0]], + _NY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 468, + 14, + 468, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 469, + 14, + 469, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N5_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.demandeur"),0]], + _N2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 469, + 14, + 469, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 470, + 14, + 470, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N9_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl.date_courante"), + 0]], + _N6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 470, + 14, + 470, + 43, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _N__= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _N$_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_apl"), + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0]]], + _Oe_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 456, + 11, + 456, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Oa_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 456, + 11, + 456, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Of_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("condition_p\xc3\xa9riode_d\xc3\xa9m\xc3\xa9nagement"), + 0]], + _Oi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 459, + 11, + 459, + 26, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Og_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 459, + 11, + 459, + 26, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Oj_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0,caml_string_of_jsbytes("plafond_d823_22"),0]], + _Oo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 457, + 11, + 457, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ok_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 457, + 11, + 457, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Op_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]], + _Os_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 465, + 12, + 465, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Oq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 465, + 12, + 465, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 \xc3\xa0 la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ot_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes("montant_prime_d\xc3\xa9m\xc3\xa9nagement"), + 0]], + _NF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1424, + 14, + 1424, + 33, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _NB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1426, + 14, + 1426, + 36, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _NC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 752, + 12, + 752, + 34, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _NA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 752, + 12, + 752, + 34, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Nx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1436, + 14, + 1436, + 36, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Nq_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Nr_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Ns_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nt_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Nh_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ni_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Nj_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nk_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _M__= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _M$_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Na_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nb_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _M7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1455, + 16, + 1458, + 39, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _M8_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _M9_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _Nc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1440, + 9, + 1460, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Nd_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ne_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("direct"),0]], + _Nf_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _Ng_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _Nl_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1491, + 10, + 1507, + 11, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Nm_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nn_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("direct"),0]], + _No_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("input"),0]]], + _Np_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("direct"),0]], + _Nu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1471, + 9, + 1480, + 10, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Nv_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("direct"), + [0,caml_string_of_jsbytes("output"),0]]], + _Nw_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("direct"),0]], + _M3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 78, + 14, + 78, + 44, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _MX_=[0,0], + _MY_=[1,0], + _MZ_=[1,0], + _M0_=[1,0], + _M1_=[0,0], + _M2_=[1,0], + _MT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1974, + 14, + 1974, + 31, + [0, + caml_string_of_jsbytes("Article D823-17"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _MP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1413, + 14, + 1413, + 34, + [0, + caml_string_of_jsbytes("Article D823-9"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _MQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 746, + 11, + 746, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 746, + 11, + 746, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MR_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("cat\xc3\xa9gorie_calcul_apl"),0]], + _MU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 740, + 10, + 740, + 22, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 740, + 10, + 740, + 22, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MV_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_arrondi"),0]], + _M4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 747, + 11, + 747, + 41, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _MW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 747, + 11, + 747, + 41, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _M5_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("situation_familiale_calcul_apl"),0]], + _Ny_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 749, + 11, + 749, + 33, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _M6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 749, + 11, + 749, + 33, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _Nz_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("sous_calcul_traitement"),0]], + _ND_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _NG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 751, + 12, + 751, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _NE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 751, + 12, + 751, + 31, + [0, + caml_string_of_jsbytes("Tous secteurs"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _NH_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _ML_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4504, + 14, + 4504, + 36, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _MH_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input0"),0]]], + _MI_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _MJ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _MK_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _MM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 894, + 10, + 894, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _MG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 894, + 10, + 894, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _MD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4484, + 14, + 4484, + 36, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Mv_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Mw_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _Mx_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _My_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _Mz_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input0"),0]]], + _MA_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _MB_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _MC_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _ME_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 893, + 10, + 893, + 40, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 893, + 10, + 893, + 40, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mr_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4470, + 14, + 4470, + 36, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Mj_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Mk_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _Ml_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _Mm_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _Mn_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Mo_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _Mp_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Mq_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _Ms_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 892, + 10, + 892, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 892, + 10, + 892, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4382, + 14, + 4382, + 33, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Mb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4649, + 14, + 4649, + 47, + [0, + caml_string_of_jsbytes("Article D842-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _L9_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _L__= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _L$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ma_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Mc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 871, + 11, + 871, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 871, + 11, + 871, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4411, + 14, + 4411, + 41, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _L1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4437, + 14, + 4437, + 33, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4422, + 14, + 4422, + 33, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4672, + 7, + 4675, + 44, + [0, + caml_string_of_jsbytes("Article D842-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 866, + 11, + 866, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4660, + 14, + 4660, + 50, + [0, + caml_string_of_jsbytes("Article D842-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4408, + 14, + 4408, + 62, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4408, + 14, + 4408, + 62, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LN_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.n_nombre_parts_d832_25"), + 0]], + _LI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4401, + 14, + 4401, + 61, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4401, + 14, + 4401, + 61, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _LK_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.condition_2_du_832_25"), + 0]], + _LF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 907, + 14, + 907, + 49, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 917, + 14, + 917, + 53, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 915, + 14, + 915, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 913, + 14, + 913, + 70, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 911, + 14, + 911, + 65, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ll_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 909, + 14, + 909, + 67, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 905, + 14, + 905, + 61, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ld_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 903, + 14, + 903, + 59, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lc_=[3,0], + _K8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4444, + 14, + 4444, + 70, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4441, + 14, + 4441, + 69, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4442, + 14, + 4442, + 75, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _KV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4586, + 5, + 4586, + 44, + [0, + caml_string_of_jsbytes("Article D842-9"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _KN_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("input0"),0]]], + _KO_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KP_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _KQ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KR_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("input0"),0]]], + _KS_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KT_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _KU_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 860, + 11, + 860, + 36, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4568, + 14, + 4568, + 39, + [0, + caml_string_of_jsbytes("Article D842-9"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _KI_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("input0"),0]]], + _KJ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KK_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _KL_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4736, + 5, + 4736, + 28, + [0, + caml_string_of_jsbytes("Article D842-12"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _KE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 842, + 10, + 842, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4726, + 14, + 4726, + 41, + [0, + caml_string_of_jsbytes("Article D842-12"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Kv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 633, + 24, + 633, + 56, + [0, + caml_string_of_jsbytes("Article 37"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Kn_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ko_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kp_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Kq_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kr_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ks_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kt_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ku_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 864, + 10, + 864, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Km_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3985, + 24, + 3985, + 56, + [0, + caml_string_of_jsbytes("Article 37"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ke_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Kf_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kg_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Kh_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Ki_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Kj_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kk_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Kl_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 864, + 10, + 864, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ky_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 864, + 10, + 864, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Kd_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3909, + 14, + 3909, + 46, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _J$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ka_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kb_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + [0,caml_string_of_jsbytes("output"),0]]], + _Kc_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _Kz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 864, + 10, + 864, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 864, + 10, + 864, + 26, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4637, + 15, + 4637, + 37, + [0, + caml_string_of_jsbytes("Article D842-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _J8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 869, + 11, + 869, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 869, + 11, + 869, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4697, + 6, + 4703, + 6, + [0, + caml_string_of_jsbytes("Article D842-12"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _J3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 867, + 11, + 867, + 42, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4715, + 5, + 4716, + 59, + [0, + caml_string_of_jsbytes("Article D842-12"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _J1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 867, + 11, + 867, + 42, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2913, + 5, + 2913, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2959, + 5, + 2959, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3005, + 5, + 3005, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3051, + 5, + 3051, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3097, + 5, + 3097, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3143, + 5, + 3143, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3189, + 5, + 3189, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3235, + 5, + 3235, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3280, + 5, + 3280, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3325, + 5, + 3325, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3370, + 5, + 3370, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3415, + 5, + 3415, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _JA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3460, + 5, + 3460, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3505, + 5, + 3505, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3550, + 5, + 3550, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ju_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jr_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3595, + 5, + 3595, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Js_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3640, + 5, + 3640, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jn_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3685, + 5, + 3685, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jl_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3730, + 5, + 3730, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3775, + 5, + 3775, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3820, + 5, + 3820, + 62, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ji_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3865, + 5, + 3865, + 32, + [0, + caml_string_of_jsbytes("Article 33"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Jg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Je_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 863, + 10, + 863, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Jb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4456, + 14, + 4456, + 36, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Jc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 891, + 10, + 891, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ja_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 891, + 10, + 891, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 655, + 5, + 655, + 16, + [0, + caml_string_of_jsbytes("Article 37"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _I8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 617, + 43, + 617, + 70, + [0, + caml_string_of_jsbytes("Article 34"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _I9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4005, + 5, + 4005, + 16, + [0, + caml_string_of_jsbytes("Article 37"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _I4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3951, + 31, + 3951, + 58, + [0, + caml_string_of_jsbytes("Article 34"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _I5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 47, + 857, + 53, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 919, + 14, + 919, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4448, + 14, + 4448, + 64, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4446, + 14, + 4446, + 59, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4045, + 14, + 4045, + 33, + [0, + caml_string_of_jsbytes("Article 39"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ID_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4034, + 14, + 4034, + 33, + [0, + caml_string_of_jsbytes("Article 38"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Iz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4052, + 14, + 4052, + 41, + [0, + caml_string_of_jsbytes("Article 39"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Iv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4027, + 14, + 4027, + 41, + [0, + caml_string_of_jsbytes("Article 38"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ir_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3973, + 14, + 3973, + 41, + [0, + caml_string_of_jsbytes("Article 36"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _In_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 331, + 14, + 331, + 36, + [0, + caml_string_of_jsbytes("Article premier"), + [0, + caml_string_of_jsbytes + ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"), + 0]]], + _Ij_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 3963, + 14, + 3963, + 40, + [0, + caml_string_of_jsbytes("Article 35"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul des allocations de logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Ik_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 865, + 11, + 865, + 37, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ii_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 865, + 11, + 865, + 37, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Il_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d842_6"),0]], + _Io_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 868, + 11, + 868, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Im_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 868, + 11, + 868, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ip_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]], + _Is_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 873, + 11, + 873, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Iq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 873, + 11, + 873, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _It_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d842_6"),0]], + _Iw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 874, + 11, + 874, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Iu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 874, + 11, + 874, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ix_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d842_11"),0]], + _IA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 875, + 11, + 875, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Iy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 875, + 11, + 875, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IB_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d842_12"),0]], + _IE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 876, + 11, + 876, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 876, + 11, + 876, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IF_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_d842_11"),0]], + _II_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 877, + 11, + 877, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 877, + 11, + 877, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IJ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_d842_12"),0]], + _IM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4446, + 14, + 4446, + 59, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IN_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), + 0]], + _IK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4446, + 14, + 4446, + 59, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4448, + 14, + 4448, + 64, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IR_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.situation_familiale_calcul_apl"), + 0]], + _IO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4448, + 14, + 4448, + 64, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _IS_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0]]], + _IT_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0]]], + _IW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 919, + 14, + 919, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IX_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _IU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 919, + 14, + 919, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _IY_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _IZ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _I__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 857, + 11, + 857, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _I$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]], + _Jd_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _JY_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d842_6_base"), + 0]], + _J4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 867, + 11, + 867, + 42, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _JZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 867, + 11, + 867, + 42, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _J5_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("seuil_minimal_ressources_m\xc3\xa9nage"),0]], + _J9_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _KA_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_plafond_mensualit\xc3\xa9_d842_6_avec_copropri\xc3\xa9t\xc3\xa9"), + 0]], + _KF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 842, + 10, + 842, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 842, + 10, + 842, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KG_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"), + 0]], + _KX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 860, + 11, + 860, + 36, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 860, + 11, + 860, + 36, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _KY_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d842_6"),0]], + _K1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4442, + 14, + 4442, + 75, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K2_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _KZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4442, + 14, + 4442, + 75, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4441, + 14, + 4441, + 69, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K6_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), + 0]], + _K3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4441, + 14, + 4441, + 69, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4444, + 14, + 4444, + 70, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K__= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), + 0]], + _K7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4444, + 14, + 4444, + 70, + [0, + caml_string_of_jsbytes("Article D842-6"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _K$_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _La_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _Le_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 903, + 14, + 903, + 59, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lf_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.type_logement_foyer"), + 0]], + _Lb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 903, + 14, + 903, + 59, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Li_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 905, + 14, + 905, + 61, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lj_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.date_conventionnement"), + 0]], + _Lg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 905, + 14, + 905, + 61, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 909, + 14, + 909, + 67, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ln_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _Lk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 909, + 14, + 909, + 67, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 911, + 14, + 911, + 65, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lr_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"), + 0]], + _Lo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 911, + 14, + 911, + 65, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 913, + 14, + 913, + 70, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lv_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"), + 0]], + _Ls_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 913, + 14, + 913, + 70, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ly_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 915, + 14, + 915, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Lz_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]], + _Lw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 915, + 14, + 915, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 917, + 14, + 917, + 53, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LD_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]], + _LA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 917, + 14, + 917, + 53, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 907, + 14, + 907, + 49, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LH_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]], + _LE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 907, + 14, + 907, + 49, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LO_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_apl_logement_foyer"), + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0]]], + _LP_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_apl_logement_foyer"), + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0]]], + _LU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 866, + 11, + 866, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 866, + 11, + 866, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LV_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("seuil_minimal_d\xc3\xa9pense_nette_minimale"), + 0]], + _LY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 856, + 11, + 856, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 856, + 11, + 856, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _LZ_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]], + _L2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 858, + 11, + 858, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 858, + 11, + 858, + 30, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L3_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]], + _L6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 859, + 11, + 859, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 859, + 11, + 859, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _L7_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]], + _Md_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _Mg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 887, + 12, + 887, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Me_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 887, + 12, + 887, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Mh_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _Mt_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _MF_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _MN_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _If_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4919, + 14, + 4919, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Ib_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ic_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _Id_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _Ie_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _Ig_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 964, + 10, + 964, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ia_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 964, + 10, + 964, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _H9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4898, + 14, + 4898, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _H1_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_redevance"), + [0,caml_string_of_jsbytes("input0"),0]]], + _H2_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], + _H3_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_redevance"), + [0,caml_string_of_jsbytes("output"),0]]], + _H4_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], + _H5_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input0"),0]]], + _H6_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _H7_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _H8_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _H__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 963, + 10, + 963, + 40, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _H0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 963, + 10, + 963, + 40, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4884, + 14, + 4884, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _HT_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _HU_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _HV_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _HW_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _HY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 962, + 10, + 962, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 962, + 10, + 962, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4866, + 14, + 4866, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _HH_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input0"),0]]], + _HI_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _HJ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _HK_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _HL_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _HM_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _HN_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _HO_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _HQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 961, + 10, + 961, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 961, + 10, + 961, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4785, + 14, + 4785, + 33, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4973, + 14, + 4973, + 47, + [0, + caml_string_of_jsbytes("Article D842-17"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hr_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Hs_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Ht_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Hu_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Hv_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Hw_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Hx_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"), + [0,caml_string_of_jsbytes("output"),0]]], + _Hy_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _HA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 939, + 11, + 939, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 939, + 11, + 939, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hn_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4844, + 14, + 4844, + 27, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4964, + 14, + 4964, + 36, + [0, + caml_string_of_jsbytes("Article D842-17"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 937, + 11, + 937, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 937, + 11, + 937, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4806, + 14, + 4806, + 41, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4842, + 14, + 4842, + 70, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4832, + 14, + 4832, + 69, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4833, + 14, + 4833, + 75, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _GZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4852, + 14, + 4852, + 36, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 960, + 10, + 960, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 960, + 10, + 960, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4118, + 6, + 4118, + 79, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4153, + 6, + 4154, + 38, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4171, + 6, + 4172, + 24, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4135, + 6, + 4136, + 46, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 709, + 6, + 709, + 79, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 746, + 6, + 747, + 38, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 765, + 6, + 766, + 24, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 727, + 6, + 728, + 46, + [0, + caml_string_of_jsbytes("Article 43"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4076, + 14, + 4076, + 41, + [0, + caml_string_of_jsbytes("Article 40"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 946, + 12, + 946, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 686, + 14, + 686, + 41, + [0, + caml_string_of_jsbytes("Article 40"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _GA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 946, + 12, + 946, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4803, + 14, + 4803, + 61, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Gu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4803, + 14, + 4803, + 61, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Gv_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.condition_2_du_832_25"), + 0]], + _Gq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 971, + 14, + 971, + 49, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 981, + 14, + 981, + 53, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 979, + 14, + 979, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ge_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 977, + 14, + 977, + 70, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ga_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 975, + 14, + 975, + 65, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 973, + 14, + 973, + 67, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 969, + 14, + 969, + 61, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 967, + 14, + 967, + 59, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 983, + 14, + 983, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4838, + 14, + 4838, + 64, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4836, + 14, + 4836, + 59, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4840, + 14, + 4840, + 55, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4191, + 14, + 4191, + 51, + [0, + caml_string_of_jsbytes("Article 44"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Fy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4089, + 14, + 4089, + 41, + [0, + caml_string_of_jsbytes("Article 41"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Fu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 4100, + 14, + 4100, + 42, + [0, + caml_string_of_jsbytes("Article 42"), + [0, + caml_string_of_jsbytes + ("Chapitre VII : Calcul des allocations de logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _Fv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 941, + 11, + 941, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ft_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 941, + 11, + 941, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fw_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d842_15"),0]], + _Fz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 942, + 11, + 942, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 942, + 11, + 942, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FA_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d842_15"),0]], + _FD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 943, + 11, + 943, + 48, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 943, + 11, + 943, + 48, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FE_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("montant_minimal_d\xc3\xa9pense_nette_d842_17"), + 0]], + _FH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4840, + 14, + 4840, + 55, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FI_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"), + 0]], + _FF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4840, + 14, + 4840, + 55, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4836, + 14, + 4836, + 59, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FM_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), + 0]], + _FJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4836, + 14, + 4836, + 59, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4838, + 14, + 4838, + 64, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FQ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.situation_familiale_calcul_apl"), + 0]], + _FN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4838, + 14, + 4838, + 64, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _FR_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], + _FS_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], + _FV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 983, + 14, + 983, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FW_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _FT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 983, + 14, + 983, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _FX_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _FY_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _F1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 967, + 14, + 967, + 59, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F2_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.type_logement_foyer"), + 0]], + _FZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 967, + 14, + 967, + 59, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 969, + 14, + 969, + 61, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F6_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.date_conventionnement"), + 0]], + _F3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 969, + 14, + 969, + 61, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 973, + 14, + 973, + 67, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _F__= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _F7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 973, + 14, + 973, + 67, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 975, + 14, + 975, + 65, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gc_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.nombre_personnes_\xc3\xa0_charge"), + 0]], + _F$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 975, + 14, + 975, + 65, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 977, + 14, + 977, + 70, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gg_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_apl_logement_foyer.situation_familiale_calcul_apl"), + 0]], + _Gd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 977, + 14, + 977, + 70, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 979, + 14, + 979, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gk_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.zone"),0]], + _Gh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 979, + 14, + 979, + 44, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 981, + 14, + 981, + 53, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Go_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.date_courante"),0]], + _Gl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 981, + 14, + 981, + 53, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 971, + 14, + 971, + 49, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gs_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("calcul_apl_logement_foyer.redevance"),0]], + _Gp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 971, + 14, + 971, + 49, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gw_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_apl_logement_foyer"), + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0]]], + _Gx_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_apl_logement_foyer"), + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0]]], + _GD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 946, + 12, + 946, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Gy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 946, + 12, + 946, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GE_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("montant_forfaitaire_charges"),0]], + _GW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 945, + 12, + 945, + 29, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _GX_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer"),0]], + _G1_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _G4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4833, + 14, + 4833, + 75, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G5_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _G2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4833, + 14, + 4833, + 75, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4832, + 14, + 4832, + 69, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _G9_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), + 0]], + _G6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4832, + 14, + 4832, + 69, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Ha_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4842, + 14, + 4842, + 70, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hb_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), + 0]], + _G__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4842, + 14, + 4842, + 70, + [0, + caml_string_of_jsbytes("Article D842-15"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Hc_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _Hd_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _Hg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 944, + 12, + 944, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _He_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 944, + 12, + 944, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hh_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("coefficient_prise_en_charge"),0]], + _Hl_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale"),0]], + _Ho_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 947, + 12, + 947, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 947, + 12, + 947, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Hp_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("loyer_minimal"),0]], + _HB_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes("abattement_d\xc3\xa9pense_nette_minimale"), + 0]], + _HE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 957, + 12, + 957, + 31, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 957, + 12, + 957, + 31, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _HF_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _HR_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_d\xc3\xa9pense_nette_minimale"), + 0]], + _HZ_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_redevance"),0]], + _H$_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _Ih_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _Fp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4273, + 24, + 4273, + 43, + [0, + caml_string_of_jsbytes("Article D842-4"), + [0, + caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Fq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 793, + 12, + 793, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 831, + 14, + 831, + 33, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4281, + 24, + 4281, + 46, + [0, + caml_string_of_jsbytes("Article D842-4"), + [0, + caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Fk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 795, + 12, + 795, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 832, + 14, + 832, + 36, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fe_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ff_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _Fg_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"), + [0,caml_string_of_jsbytes("output"),0]]], + _Fh_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _Fl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 795, + 12, + 795, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 795, + 12, + 795, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 827, + 14, + 827, + 55, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 825, + 14, + 825, + 59, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 823, + 14, + 823, + 43, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 821, + 14, + 821, + 42, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 817, + 5, + 818, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 814, + 14, + 814, + 53, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 812, + 14, + 812, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 810, + 14, + 810, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 808, + 14, + 808, + 58, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 806, + 14, + 806, + 46, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ew_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 803, + 14, + 803, + 78, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Es_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 801, + 14, + 801, + 60, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Eo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 799, + 14, + 799, + 48, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ep_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 799, + 14, + 799, + 48, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Eq_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.loyer_principal_base"),0]], + _En_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 799, + 14, + 799, + 48, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Et_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 801, + 14, + 801, + 60, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Eu_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _Er_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 801, + 14, + 801, + 60, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ex_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 803, + 14, + 803, + 78, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ey_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.b\xc3\xa9n\xc3\xa9ficiaire_aide_adulte_ou_enfant_handicap\xc3\xa9s"), + 0]], + _Ev_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 803, + 14, + 803, + 78, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 806, + 14, + 806, + 46, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EC_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.date_courante"),0]], + _Ez_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 806, + 14, + 806, + 46, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 808, + 14, + 808, + 58, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EG_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.nombre_personnes_\xc3\xa0_charge"), + 0]], + _ED_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 808, + 14, + 808, + 58, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 810, + 14, + 810, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EK_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.situation_familiale_calcul_apl"), + 0]], + _EH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 810, + 14, + 810, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 812, + 14, + 812, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EO_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.zone"),0]], + _EL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 812, + 14, + 812, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _ER_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 814, + 14, + 814, + 53, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _ES_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.logement_est_chambre"),0]], + _EP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 814, + 14, + 814, + 53, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 817, + 5, + 818, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EW_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.\xc3\xa2g\xc3\xa9es_ou_handicap_adultes_h\xc3\xa9berg\xc3\xa9es_on\xc3\xa9reux_particuliers"), + 0]], + _ET_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 817, + 5, + 818, + 63, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _EZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 821, + 14, + 821, + 42, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E0_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.type_aide"),0]], + _EX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 821, + 14, + 821, + 42, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 823, + 14, + 823, + 43, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E4_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("calcul_apl_locatif.colocation"),0]], + _E1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 823, + 14, + 823, + 43, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 825, + 14, + 825, + 59, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E8_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + 0]], + _E5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 825, + 14, + 825, + 59, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _E$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 827, + 14, + 827, + 55, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fa_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes + ("calcul_apl_locatif.logement_meubl\xc3\xa9_d842_2"), + 0]], + _E9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 827, + 14, + 827, + 55, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fb_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("calcul_apl_locatif"), + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + 0]]], + _Fc_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0, + caml_string_of_jsbytes("calcul_apl_locatif"), + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + 0]]], + _Fm_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale"),0]], + _Fr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 793, + 12, + 793, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 793, + 12, + 793, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Fs_= + [0, + caml_string_of_jsbytes("CalculAllocationLogementLocatif"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _Eh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), + 67, + 5, + 71, + 21, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _Ei_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Eg_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), + 56, + 5, + 57, + 50, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _Ej_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ek_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ef_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _El_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ee_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 40, + 12, + 40, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ea_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), + 77, + 5, + 81, + 24, + [0, + caml_string_of_jsbytes("Article L512-3"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _Eb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 42, + 12, + 42, + 31, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 42, + 12, + 42, + 31, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _Ec_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 42, + 12, + 42, + 31, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 42, + 12, + 42, + 31, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), + 62, + 18, + 62, + 41, + [0, + caml_string_of_jsbytes("Article R755-0-2"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes("Titre 5 : D\xc3\xa9partements d'outre-mer"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _D7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 44, + 11, + 44, + 27, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), + 31, + 14, + 31, + 30, + [0, + caml_string_of_jsbytes("Article R512-2"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _DU_=[5,0], + _DV_=[4,0], + _DW_=[3,0], + _DX_=[2,0], + _DY_=[1,0], + _DZ_=[0,0], + _D0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_L.catala_fr"), + 126, + 5, + 131, + 30, + [0, + caml_string_of_jsbytes("Article L751-1"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin"), + [0, + caml_string_of_jsbytes + ("Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _D1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 46, + 12, + 46, + 35, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 46, + 12, + 46, + 35, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 53, + 14, + 53, + 28, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 54, + 14, + 54, + 32, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/s\xc3\xa9curit\xc3\xa9_sociale_R.catala_fr"), + 21, + 14, + 21, + 26, + [0, + caml_string_of_jsbytes("Article R512-2"), + [0, + caml_string_of_jsbytes("Chapitre 2 : Champ d'application."), + [0, + caml_string_of_jsbytes + ("Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"), + [0, + caml_string_of_jsbytes + ("Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _DG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 45, + 12, + 45, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 45, + 12, + 45, + 24, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DH_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_l512_3_2"),0]], + _DK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 54, + 14, + 54, + 32, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DL_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic.date_courante"),0]], + _DI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 54, + 14, + 54, + 32, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 53, + 14, + 53, + 28, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DP_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic.r\xc3\xa9sidence"),0]], + _DM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 53, + 14, + 53, + 28, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DQ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], + _DR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("smic"),[0,caml_string_of_jsbytes("Smic"),0]]], + _D2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 46, + 12, + 46, + 35, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _DS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 46, + 12, + 46, + 35, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("r\xc3\xa9gime_outre_mer_l751_1"),0]], + _D8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 44, + 11, + 44, + 27, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/prologue.catala_fr"), + 44, + 11, + 44, + 27, + [0,caml_string_of_jsbytes("Prologue : prestations familiales"),0]], + _D9_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("plafond_l512_3_2"),0]], + _Ed_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("conditions_hors_\xc3\xa2ge"),0]], + _Em_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + [0,caml_string_of_jsbytes("droit_ouvert"),0]], + _Dz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 409, + 14, + 409, + 32, + [0, + caml_string_of_jsbytes("Article R822-7"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Du_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 854, + 6, + 857, + 35, + [0, + caml_string_of_jsbytes("Article R822-20"), + [0, + caml_string_of_jsbytes + ("Sous-section 3 : Montant forfaitaire de ressources applicable aux \xc3\xa9tudiants"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 509, + 12, + 509, + 39, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 124, + 14, + 124, + 41, + [0, + caml_string_of_jsbytes("Article R822-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 462, + 14, + 462, + 32, + [0, + caml_string_of_jsbytes("Article R822-8"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 418, + 14, + 418, + 65, + [0, + caml_string_of_jsbytes("Article R822-7"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Df_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 524, + 14, + 524, + 33, + [0, + caml_string_of_jsbytes("Article R822-10"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Db_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 129, + 14, + 129, + 62, + [0, + caml_string_of_jsbytes("Article R822-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _C9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 504, + 51, + 504, + 57, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 11, + 14, + 11, + 41, + [0, + caml_string_of_jsbytes("Article 3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Dispositions applicables aux ressources"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _C1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 21, + 14, + 21, + 41, + [0, + caml_string_of_jsbytes("Article 4"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Dispositions applicables aux ressources"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _CX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 494, + 46, + 494, + 52, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 496, + 10, + 496, + 15, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 496, + 10, + 496, + 15, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CZ_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("ressources_m\xc3\xa9nage_arrondies_seuil"), + 0]], + _C2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 500, + 11, + 500, + 38, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 500, + 11, + 500, + 38, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C3_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_8"),0]], + _C6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 502, + 11, + 502, + 38, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 502, + 11, + 502, + 38, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C7_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant_forfaitaire_r_822_7"),0]], + _C__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 504, + 11, + 504, + 42, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 504, + 11, + 504, + 42, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _C$_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("ressources_forfaitaires_r822_20"),0]], + _Dc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 498, + 11, + 498, + 59, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Da_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 498, + 11, + 498, + 59, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dd_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("ressources_personnes_vivant_habituellement_foyer"), + 0]], + _Dg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 503, + 11, + 503, + 30, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _De_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 503, + 11, + 503, + 30, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dh_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("abattement_r_822_10"),0]], + _Dk_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 418, + 14, + 418, + 65, + [0, + caml_string_of_jsbytes("Article R822-7"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dl_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("base_mensuelle_allocations_familiales.date_courante"), + 0]], + _Di_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 418, + 14, + 418, + 65, + [0, + caml_string_of_jsbytes("Article R822-7"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Principes de neutralisation et d'abattement"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Dm_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _Dn_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("base_mensuelle_allocations_familiales"), + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0]]], + _Dq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 499, + 11, + 499, + 29, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Do_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 499, + 11, + 499, + 29, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dr_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("abattement_r_822_8"),0]], + _Dw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 509, + 12, + 509, + 39, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ds_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 509, + 12, + 509, + 39, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dx_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("ressources_prises_en_compte"),0]], + _DA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 501, + 11, + 501, + 29, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Dy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 501, + 11, + 501, + 29, + [0, + caml_string_of_jsbytes + ("Prise en compte des ressources pour les aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _DB_= + [0, + caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("abattement_r_822_7"),0]], + _DC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 142, + 13, + 143, + 74, + [0, + caml_string_of_jsbytes("Article R822-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _DD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 142, + 13, + 143, + 74, + [0, + caml_string_of_jsbytes("Article R822-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Modalit\xc3\xa9s g\xc3\xa9n\xc3\xa9rales de l'appr\xc3\xa9ciation des ressources"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _CP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 335, + 14, + 335, + 56, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 337, + 14, + 337, + 63, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1137, + 14, + 1137, + 49, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _CD_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + [0,caml_string_of_jsbytes("input0"),0]]], + _CE_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + 0]], + _CF_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + [0,caml_string_of_jsbytes("output"),0]]], + _CG_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + 0]], + _Cx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1213, + 4, + 1219, + 48, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Cy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cs_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("condition_2_r823_4"), + [0,caml_string_of_jsbytes("input0"),0]]], + _Ct_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _Cu_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("condition_2_r823_4"), + [0,caml_string_of_jsbytes("output"),0]]], + _Cv_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _Cw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1194, + 5, + 1194, + 44, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Cz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1149, + 5, + 1152, + 44, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Cr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Co_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 303, + 11, + 303, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ck_=[0,0], + _Cj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1173, + 5, + 1189, + 10, + [0, + caml_string_of_jsbytes("Article R823-4"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Cl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 324, + 12, + 324, + 30, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ci_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 324, + 12, + 324, + 30, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 324, + 12, + 324, + 30, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ch_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 324, + 12, + 324, + 30, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 331, + 5, + 333, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ce_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 320, + 12, + 320, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 320, + 12, + 320, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 163, + 14, + 163, + 31, + [0, + caml_string_of_jsbytes("Article L351-8"), + [0, + caml_string_of_jsbytes("Section 5 : Taux et montant de la pension"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite"), + [0, + caml_string_of_jsbytes + ("Titre V : Assurance vieillesse - Assurance veuvage"), + [0, + caml_string_of_jsbytes + ("Livre III : Dispositions relatives aux assurances sociales et \xc3\xa0 diverses cat\xc3\xa9gories de personnes rattach\xc3\xa9es au r\xc3\xa9gime g\xc3\xa9n\xc3\xa9rale"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]], + _B4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 72, + 5, + 73, + 52, + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]], + _B5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 65, + 5, + 68, + 52, + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]], + _B6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 286, + 18, + 286, + 75, + [0, + caml_string_of_jsbytes("Article L822-5"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BS_=[5,0], + _BT_=[4,0], + _BU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 267, + 18, + 269, + 45, + [0, + caml_string_of_jsbytes("Article L822-5"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 944, + 5, + 944, + 58, + [0, + caml_string_of_jsbytes("Article R822-22"), + [0, + caml_string_of_jsbytes + ("Sous-section 4 : Prise en compte du patrimoine"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _BY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 250, + 33, + 250, + 58, + [0, + caml_string_of_jsbytes("Article L822-5"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 125, + 14, + 125, + 32, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _BH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 385, + 18, + 385, + 44, + [0, + caml_string_of_jsbytes("Article L822-10"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 300, + 11, + 300, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 300, + 11, + 300, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 171, + 5, + 177, + 65, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _By_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 156, + 5, + 158, + 30, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 125, + 5, + 131, + 33, + [0, + caml_string_of_jsbytes("Article L822-2"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _BC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 203, + 5, + 208, + 39, + [0, + caml_string_of_jsbytes("Article L822-4"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Br_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 197, + 5, + 198, + 34, + [0, + caml_string_of_jsbytes("Article L822-4"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Bs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 329, + 5, + 330, + 34, + [0, + caml_string_of_jsbytes("Article D815-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]], + _Bk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 334, + 5, + 335, + 34, + [0, + caml_string_of_jsbytes("Article D815-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]], + _Bi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 339, + 5, + 340, + 34, + [0, + caml_string_of_jsbytes("Article D815-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Ouverture du droit et liquidation de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Chapitre 5 : Allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Titre I : Allocations aux personnes \xc3\xa2g\xc3\xa9es"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Allocations aux personnes \xc3\xa2g\xc3\xa9es - Allocation aux adultes handicap\xc3\xa9s - Aides \xc3\xa0 l'emploi pour la garde des jeunes enfants - Protection compl\xc3\xa9mentaire en mati\xc3\xa8re de sant\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]], + _Bg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bd_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 58, + 5, + 59, + 33, + [0, + caml_string_of_jsbytes + ('Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2023"'), + [0, + caml_string_of_jsbytes + ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + 0]]], + _Be_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 90, + 5, + 91, + 33, + [0, + caml_string_of_jsbytes + ('Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation \xc3\xa0 compter du 1er janvier 2022"'), + [0, + caml_string_of_jsbytes + ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + 0]]], + _Bc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 123, + 5, + 124, + 33, + [0, + caml_string_of_jsbytes + ('Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation \xc3\xa0 compter du 1er janvier 2021"'), + [0, + caml_string_of_jsbytes + ("Montants revaloris\xc3\xa9s de l'allocation de solidarit\xc3\xa9 aux personnes \xc3\xa2g\xc3\xa9es"), + 0]]], + _Ba_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 107, + 5, + 110, + 67, + [0, + caml_string_of_jsbytes("Article L822-2"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _A7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 293, + 11, + 293, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 293, + 11, + 293, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 246, + 14, + 246, + 40, + [0, + caml_string_of_jsbytes("Article L822-5"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _AV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 123, + 14, + 123, + 61, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _AP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 46, + 5, + 46, + 41, + [0, + caml_string_of_jsbytes("Article L821-2"), + [0, + caml_string_of_jsbytes + ("Sous-section 1 : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Section 2 : R\xc3\xa8gles de non-cumul"), + [0, + caml_string_of_jsbytes + ("Chapitre Ier : Principes g\xc3\xa9n\xc3\xa9raux"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _AQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1035, + 5, + 1063, + 65, + [0, + caml_string_of_jsbytes("Article R822-25"), + [0, + caml_string_of_jsbytes + ("Section 3 : Conditions relatives au logement"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _AJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 346, + 18, + 346, + 67, + [0, + caml_string_of_jsbytes("Article L822-8"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _AD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 298, + 11, + 298, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 298, + 11, + 298, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Aw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 360, + 18, + 360, + 61, + [0, + caml_string_of_jsbytes("Article L822-9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _Ax_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 299, + 11, + 299, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Av_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 299, + 11, + 299, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ar_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 146, + 14, + 146, + 43, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _An_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 927, + 14, + 927, + 37, + [0, + caml_string_of_jsbytes("Article R822-22"), + [0, + caml_string_of_jsbytes + ("Sous-section 4 : Prise en compte du patrimoine"), + [0, + caml_string_of_jsbytes + ("Section 2 : Conditions relatives aux ressources"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _Aj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 106, + 14, + 106, + 41, + [0, + caml_string_of_jsbytes("Article R822-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Af_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 105, + 14, + 105, + 42, + [0, + caml_string_of_jsbytes("Article R822-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Conditions relatives au b\xc3\xa9n\xc3\xa9ficiaire"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _Ab_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 301, + 11, + 301, + 48, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _z9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 292, + 11, + 292, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _z__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 292, + 11, + 292, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _z8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 292, + 11, + 292, + 25, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _z$_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_pr\xc3\xaat"),0]], + _Ac_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 301, + 11, + 301, + 48, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Aa_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 301, + 11, + 301, + 48, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ad_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_peuplement_logement_l822_10"),0]], + _Ag_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 311, + 11, + 311, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ae_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 311, + 11, + 311, + 39, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ah_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("seuil_l822_3_parts_propri\xc3\xa9t\xc3\xa9"), + 0]], + _Ak_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 312, + 11, + 312, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ai_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 312, + 11, + 312, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Al_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("seuil_l822_3_parts_usufruit"),0]], + _Ao_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 313, + 11, + 313, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Am_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 313, + 11, + 313, + 34, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ap_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("seuil_l822_5_patrimoine"),0]], + _As_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 310, + 11, + 310, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Aq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 310, + 11, + 310, + 40, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _At_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("usufruit_ou_propri\xc3\xa9t\xc3\xa9_famille"), + 0]], + _Ay_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 299, + 11, + 299, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Au_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 299, + 11, + 299, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Az_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("condition_non_ouverture_l822_9_decence_logement"), + 0]], + _AE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 298, + 11, + 298, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 298, + 11, + 298, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AF_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_non_ouverture_l822_8"),0]], + _AL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 297, + 12, + 297, + 38, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AM_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_logement_surface"),0]], + _AS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 294, + 12, + 294, + 51, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _AT_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("condition_logement_r\xc3\xa9sidence_principale"), + 0]], + _AW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 123, + 14, + 123, + 61, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _AX_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("ouverture_droits_retraite.date_naissance_assur\xc3\xa9"), + 0]], + _AU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 123, + 14, + 123, + 61, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _AY_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("ouverture_droits_retraite"), + [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]], + _AZ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("ouverture_droits_retraite"), + [0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0]]], + _A2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 309, + 11, + 309, + 37, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 309, + 11, + 309, + 37, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("patrimoine_total_demandeur"),0]], + _A8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 293, + 11, + 293, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 293, + 11, + 293, + 32, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A9_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_nationalit\xc3\xa9"),0]], + _Bl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _A__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 317, + 11, + 317, + 41, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bm_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("plafond_individuel_l815_9_s\xc3\xa9cu"),0]], + _Bt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 296, + 11, + 296, + 44, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bu_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_logement_location_tiers"),0]], + _BD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Bv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 295, + 11, + 295, + 45, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BE_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_logement_mode_occupation"),0]], + _BJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 300, + 11, + 300, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 300, + 11, + 300, + 58, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BK_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("condition_ouverture_l822_10_peuplement_logement"), + 0]], + _BN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 316, + 11, + 316, + 29, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 316, + 11, + 316, + 29, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BO_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_l161_17_2_s\xc3\xa9cu"),0]], + _BZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _BP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 314, + 11, + 314, + 36, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B0_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("patrimoine_pris_en_compte"),0]], + _B7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 302, + 11, + 302, + 31, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B8_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9_logement"),0]], + _B$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 315, + 11, + 315, + 28, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _B9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 315, + 11, + 315, + 28, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Ca_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_l351_8_1_s\xc3\xa9cu"),0]], + _Cf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 320, + 12, + 320, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 320, + 12, + 320, + 23, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _Cg_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("\xc3\xa9ligibilit\xc3\xa9"),0]], + _Cn_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("condition_2_r823_4"),0]], + _CB_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("prise_en_compte_personne_\xc3\xa0_charge"), + 0]], + _CI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 305, + 11, + 305, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 305, + 11, + 305, + 46, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CJ_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("personnes_\xc3\xa0_charge_prises_en_compte"), + 0]], + _CM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 322, + 12, + 322, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 322, + 12, + 322, + 61, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CN_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("coefficents_enfants_garde_altern\xc3\xa9e_pris_en_compte"), + 0]], + _CQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 321, + 12, + 321, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 321, + 12, + 321, + 54, + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9 aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _CR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes + ("nombre_personnes_\xc3\xa0_charge_prises_en_compte"), + 0]], + _CS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 182, + 13, + 182, + 47, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _CV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 182, + 13, + 182, + 47, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _CT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 181, + 13, + 181, + 48, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _CU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 181, + 13, + 181, + 48, + [0, + caml_string_of_jsbytes("Article L822-3"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Conditions g\xc3\xa9n\xc3\xa9rales d'attribution"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _z5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3178, + 14, + 3178, + 36, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _z1_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input0"),0]]], + _z2_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _z3_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _z4_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _z6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 721, + 10, + 721, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _z0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 721, + 10, + 721, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3085, + 14, + 3085, + 33, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3158, + 14, + 3158, + 36, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zL_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_abattement"), + [0,caml_string_of_jsbytes("input0"),0]]], + _zM_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _zN_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_abattement"), + [0,caml_string_of_jsbytes("output"),0]]], + _zO_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _zP_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input0"),0]]], + _zQ_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _zR_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _zS_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _zU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 720, + 10, + 720, + 40, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 720, + 10, + 720, + 40, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3213, + 14, + 3213, + 49, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3105, + 14, + 3105, + 33, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3144, + 14, + 3144, + 36, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zr_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input0"),0]]], + _zs_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _zt_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _zu_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _zv_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + [0,caml_string_of_jsbytes("input0"),0]]], + _zw_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + 0]], + _zx_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + [0,caml_string_of_jsbytes("output"),0]]], + _zy_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + 0]], + _zA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 719, + 10, + 719, + 20, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 719, + 10, + 719, + 20, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zn_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3210, + 14, + 3210, + 49, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zi_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3426, + 5, + 3438, + 77, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 682, + 12, + 682, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zg_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3481, + 5, + 3481, + 75, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _zh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 682, + 12, + 682, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1290, + 14, + 1290, + 42, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _za_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 685, + 10, + 685, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y__= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 497, + 14, + 497, + 42, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _zb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 685, + 10, + 685, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2393, + 14, + 2393, + 42, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _zc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 685, + 10, + 685, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3553, + 14, + 3553, + 55, + [0, + caml_string_of_jsbytes("Article D832-17"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _y1_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), + [0,caml_string_of_jsbytes("input0"),0]]], + _y2_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], + _y3_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"), + [0,caml_string_of_jsbytes("output"),0]]], + _y4_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], + _y6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 695, + 11, + 695, + 52, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 695, + 11, + 695, + 52, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3194, + 14, + 3194, + 49, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3489, + 14, + 3489, + 70, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3486, + 14, + 3486, + 69, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3487, + 14, + 3487, + 75, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3366, + 5, + 3366, + 44, + [0, + caml_string_of_jsbytes("Article D832-14"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yw_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("input0"),0]]], + _yx_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yy_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _yz_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yA_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("input0"),0]]], + _yB_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yC_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _yD_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 10, + 684, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3346, + 14, + 3346, + 42, + [0, + caml_string_of_jsbytes("Article D832-14"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yr_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("input0"),0]]], + _ys_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yt_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + [0,caml_string_of_jsbytes("output"),0]]], + _yu_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _ym_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3531, + 5, + 3531, + 40, + [0, + caml_string_of_jsbytes("Article D832-17"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 693, + 11, + 693, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yl_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3542, + 14, + 3542, + 44, + [0, + caml_string_of_jsbytes("Article D832-17"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 693, + 11, + 693, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 693, + 11, + 693, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3279, + 14, + 3279, + 36, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 806, + 5, + 821, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _yc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1061, + 5, + 1065, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1094, + 5, + 1098, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1127, + 5, + 1131, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1160, + 5, + 1164, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1193, + 5, + 1197, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _x0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1226, + 5, + 1230, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _x1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xY_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1259, + 5, + 1263, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1292, + 5, + 1296, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1325, + 5, + 1329, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1358, + 5, + 1362, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1391, + 5, + 1395, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1424, + 5, + 1428, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1457, + 5, + 1461, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1490, + 5, + 1494, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1523, + 5, + 1527, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1556, + 5, + 1560, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1589, + 5, + 1593, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1622, + 5, + 1626, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1655, + 5, + 1659, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1688, + 5, + 1692, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1721, + 5, + 1725, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1754, + 5, + 1758, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xs_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1787, + 5, + 1791, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1820, + 5, + 1824, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1853, + 5, + 1857, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1886, + 5, + 1890, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xk_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1919, + 5, + 1923, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xi_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1952, + 5, + 1956, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xg_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 1985, + 5, + 1989, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xe_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2018, + 5, + 2022, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2051, + 5, + 2055, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _xa_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2084, + 5, + 2088, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _xb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2117, + 5, + 2121, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2150, + 5, + 2154, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2183, + 5, + 2187, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2216, + 5, + 2220, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2249, + 5, + 2252, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _w0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2281, + 5, + 2284, + 36, + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]], + _w1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ya_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 618, + 5, + 621, + 33, + [0, + caml_string_of_jsbytes("Article 17"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 662, + 5, + 665, + 33, + [0, + caml_string_of_jsbytes("Article 17"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 707, + 5, + 709, + 33, + [0, + caml_string_of_jsbytes("Article 17"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 750, + 5, + 752, + 33, + [0, + caml_string_of_jsbytes("Article 17"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur accession"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 55, + 686, + 61, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ye_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 686, + 11, + 686, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3595, + 5, + 3595, + 28, + [0, + caml_string_of_jsbytes("Article D832-18"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 697, + 11, + 697, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3587, + 14, + 3587, + 44, + [0, + caml_string_of_jsbytes("Article D832-18"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wG_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3130, + 14, + 3130, + 36, + [0, + caml_string_of_jsbytes("Article D832-10"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 718, + 10, + 718, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 718, + 10, + 718, + 32, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2412, + 7, + 2412, + 18, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 517, + 7, + 517, + 18, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ww_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1310, + 7, + 1310, + 18, + [0, + caml_string_of_jsbytes("Article 24"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _wx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2333, + 29, + 2333, + 64, + [0, + caml_string_of_jsbytes("Article 19"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _wu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 483, + 29, + 483, + 64, + [0, + caml_string_of_jsbytes("Article 19"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ws_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1276, + 29, + 1276, + 64, + [0, + caml_string_of_jsbytes("Article 19"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _wq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 724, + 14, + 724, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2439, + 14, + 2439, + 50, + [0, + caml_string_of_jsbytes("Article 25"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _v$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3283, + 14, + 3283, + 64, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _v7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3281, + 14, + 3281, + 59, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _v3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 328, + 14, + 328, + 36, + [0, + caml_string_of_jsbytes("Article premier"), + [0, + caml_string_of_jsbytes + ("R\xc3\xa8glement (CE) n\xc2\xb02866/98 du conseil du 31 d\xc3\xa9cembre 1998 concernant les taux de conversion entre l'euro et les monnaies des \xc3\x89tats membres adoptant l'euro"), + 0]]], + _vZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2381, + 14, + 2381, + 47, + [0, + caml_string_of_jsbytes("Article 23"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2380, + 14, + 2380, + 47, + [0, + caml_string_of_jsbytes("Article 23"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2379, + 14, + 2379, + 47, + [0, + caml_string_of_jsbytes("Article 23"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2457, + 14, + 2457, + 48, + [0, + caml_string_of_jsbytes("Article 26"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2364, + 15, + 2364, + 49, + [0, + caml_string_of_jsbytes("Article 22"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2355, + 14, + 2355, + 42, + [0, + caml_string_of_jsbytes("Article 21"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2344, + 14, + 2344, + 41, + [0, + caml_string_of_jsbytes("Article 20"), + [0, + caml_string_of_jsbytes("Article 18"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _vC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 699, + 11, + 699, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 699, + 11, + 699, + 38, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vD_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d832_10"),0]], + _vG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 700, + 11, + 700, + 39, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 700, + 11, + 700, + 39, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vH_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d832_10"),0]], + _vK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 702, + 11, + 702, + 45, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 702, + 11, + 702, + 45, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vL_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_11"),0]], + _vO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 703, + 11, + 703, + 45, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 703, + 11, + 703, + 45, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vP_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_18"),0]], + _vS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 704, + 11, + 704, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 704, + 11, + 704, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vT_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_limite_tranches_d832_15_1"),0]], + _vW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 705, + 11, + 705, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 705, + 11, + 705, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vX_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("taux_tranche_inf\xc3\xa9rieure_d832_15_1"), + 0]], + _v0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 706, + 11, + 706, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 706, + 11, + 706, + 44, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _v1_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("taux_tranche_sup\xc3\xa9rieure_d832_15_1"), + 0]], + _v4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 707, + 11, + 707, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _v2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 707, + 11, + 707, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _v5_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("taux_francs_vers_euros"),0]], + _v8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3281, + 14, + 3281, + 59, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _v9_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), + 0]], + _v6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3281, + 14, + 3281, + 59, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wa_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3283, + 14, + 3283, + 64, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wb_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.situation_familiale_calcul_apl"), + 0]], + _v__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3283, + 14, + 3283, + 64, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _wc_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0]]], + _wd_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0]]], + _wg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 701, + 11, + 701, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _we_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 701, + 11, + 701, + 47, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wh_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_17_3"),0]], + _wk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 724, + 14, + 724, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wl_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _wi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 724, + 14, + 724, + 50, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wm_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _wn_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _wD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 698, + 11, + 698, + 46, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wE_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d832_10"),0]], + _wI_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _wN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 697, + 11, + 697, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 697, + 11, + 697, + 41, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _wO_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("ressources_m\xc3\xa9nage_avec_d832_18"),0]], + _yf_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_plafond_mensualit\xc3\xa9_d832_10_3"), + 0]], + _yi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 688, + 11, + 688, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 688, + 11, + 688, + 33, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yj_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]], + _yp_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_10"),0]], + _yG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 10, + 684, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 684, + 10, + 684, + 14, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yH_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("plafond_mensualit\xc3\xa9_d832_10_3_base"), + 0]], + _yK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3487, + 14, + 3487, + 75, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yL_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _yI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3487, + 14, + 3487, + 75, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3486, + 14, + 3486, + 69, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yP_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), + 0]], + _yM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3486, + 14, + 3486, + 69, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3489, + 14, + 3489, + 70, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yT_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), + 0]], + _yQ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3489, + 14, + 3489, + 70, + [0, + caml_string_of_jsbytes("Article D832-15"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _yU_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _yV_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _yY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 690, + 10, + 690, + 17, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 690, + 10, + 690, + 17, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _yZ_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_formule"), + 0]], + _y7_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_10"), + 0]], + _zd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 685, + 10, + 685, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _y8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 685, + 10, + 685, + 25, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ze_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("plafond_mensualit\xc3\xa9_d832_10_3_copropri\xc3\xa9taires"), + 0]], + _zk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 682, + 12, + 682, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 682, + 12, + 682, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zl_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("mensualit\xc3\xa9_minimale"),0]], + _zo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 691, + 10, + 691, + 23, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 691, + 10, + 691, + 23, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zp_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("coefficient_prise_en_charge_d832_10_coeff_arrondi"), + 0]], + _zB_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _zE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 681, + 12, + 681, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 681, + 12, + 681, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zF_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("mensualit\xc3\xa9_\xc3\xa9ligible"),0]], + _zI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 692, + 10, + 692, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 692, + 10, + 692, + 15, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zJ_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_10_seuil"), + 0]], + _zV_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _zY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 715, + 12, + 715, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 715, + 12, + 715, + 31, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _zZ_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _z7_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _vx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3832, + 14, + 3832, + 36, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _vt_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input0"),0]]], + _vu_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _vv_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _vw_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _vy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 648, + 10, + 648, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 648, + 10, + 648, + 25, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3736, + 14, + 3736, + 33, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _vl_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3811, + 14, + 3811, + 36, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _vd_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_abattement"), + [0,caml_string_of_jsbytes("input0"),0]]], + _ve_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _vf_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_abattement"), + [0,caml_string_of_jsbytes("output"),0]]], + _vg_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _vh_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input0"),0]]], + _vi_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _vj_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _vk_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _vm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 647, + 10, + 647, + 40, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 647, + 10, + 647, + 40, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _u__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3976, + 5, + 3976, + 26, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _u$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 641, + 10, + 641, + 15, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _u9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3889, + 14, + 3889, + 49, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _u5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3797, + 14, + 3797, + 36, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uX_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input0"),0]]], + _uY_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _uZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _u0_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _u1_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + [0,caml_string_of_jsbytes("input0"),0]]], + _u2_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + 0]], + _u3_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + [0,caml_string_of_jsbytes("output"),0]]], + _u4_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + 0]], + _u6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 646, + 10, + 646, + 20, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 646, + 10, + 646, + 20, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3970, + 5, + 3970, + 26, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 640, + 10, + 640, + 23, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3886, + 14, + 3886, + 49, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3769, + 14, + 3769, + 40, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4141, + 14, + 4141, + 55, + [0, + caml_string_of_jsbytes("Article D832-27"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uF_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), + [0,caml_string_of_jsbytes("input0"),0]]], + _uG_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], + _uH_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"), + [0,caml_string_of_jsbytes("output"),0]]], + _uI_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], + _uK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 623, + 11, + 623, + 52, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 623, + 11, + 623, + 52, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3953, + 5, + 3953, + 26, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 639, + 10, + 639, + 17, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3865, + 14, + 3865, + 49, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ut_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3775, + 14, + 3775, + 70, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _up_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3771, + 14, + 3771, + 69, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ul_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3773, + 14, + 3773, + 75, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4137, + 14, + 4137, + 44, + [0, + caml_string_of_jsbytes("Article D832-27"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ui_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 625, + 11, + 625, + 41, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ug_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 625, + 11, + 625, + 41, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3941, + 14, + 3941, + 36, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ud_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 620, + 21, + 620, + 43, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t__= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3757, + 14, + 3757, + 40, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _t6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2575, + 14, + 2575, + 48, + [0, + caml_string_of_jsbytes("Article 30"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _t2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2714, + 14, + 2714, + 41, + [0, + caml_string_of_jsbytes("Article 32"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _tW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3937, + 14, + 3937, + 64, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3935, + 14, + 3935, + 59, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3939, + 14, + 3939, + 55, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3783, + 14, + 3783, + 36, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 645, + 10, + 645, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 645, + 10, + 645, + 32, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tF_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2486, + 14, + 2486, + 48, + [0, + caml_string_of_jsbytes("Article 27"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _tG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 622, + 12, + 622, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 552, + 14, + 552, + 48, + [0, + caml_string_of_jsbytes("Article 27"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _tE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 622, + 12, + 622, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1347, + 14, + 1347, + 48, + [0, + caml_string_of_jsbytes("Article 27"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _tC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 622, + 12, + 622, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 651, + 14, + 651, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3850, + 14, + 3850, + 35, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 616, + 12, + 616, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2551, + 14, + 2551, + 42, + [0, + caml_string_of_jsbytes("Article 29"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ti_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2540, + 14, + 2540, + 41, + [0, + caml_string_of_jsbytes("Article 28"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _te_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2565, + 14, + 2565, + 35, + [0, + caml_string_of_jsbytes("Article 30"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _tf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 619, + 12, + 619, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _td_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 619, + 12, + 619, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tg_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("coefficient_r_d832_25"),0]], + _tj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 627, + 11, + 627, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _th_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 627, + 11, + 627, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tk_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d832_24"),0]], + _tn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 629, + 11, + 629, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 629, + 11, + 629, + 39, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _to_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d823_24"),0]], + _ts_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 616, + 12, + 616, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 616, + 12, + 616, + 33, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tt_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("condition_2_du_832_25"),0]], + _tw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 651, + 14, + 651, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tx_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _tu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 651, + 14, + 651, + 50, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ty_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _tz_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _tH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 622, + 12, + 622, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 622, + 12, + 622, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _tI_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("plafond_\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), + 0]], + _tM_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _tP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3939, + 14, + 3939, + 55, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tQ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts.condition_2_du_832_25"), + 0]], + _tN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3939, + 14, + 3939, + 55, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3935, + 14, + 3935, + 59, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tU_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.nombre_personnes_\xc3\xa0_charge"), + 0]], + _tR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3935, + 14, + 3935, + 59, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tX_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3937, + 14, + 3937, + 64, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tY_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_nombre_parts.situation_familiale_calcul_apl"), + 0]], + _tV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3937, + 14, + 3937, + 64, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], + _t0_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_nombre_parts"), + [0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0]]], + _t3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 628, + 11, + 628, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 628, + 11, + 628, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t4_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d832_27"),0]], + _t7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 618, + 12, + 618, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 618, + 12, + 618, + 46, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t8_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("coefficient_multiplicateur_d832_25"),0]], + _t$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 621, + 12, + 621, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _t9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 621, + 12, + 621, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ua_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_\xc3\xa9ligible"), + 0]], + _ue_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 620, + 21, + 620, + 43, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ub_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 620, + 21, + 620, + 43, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uf_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]], + _uj_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_nette_minimale_d832_27"),0]], + _um_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3773, + 14, + 3773, + 75, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _un_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.ressources_m\xc3\xa9nage_arrondies"), + 0]], + _uk_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3773, + 14, + 3773, + 75, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3771, + 14, + 3771, + 69, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ur_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.condition_2_du_832_25"), + 0]], + _uo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3771, + 14, + 3771, + 69, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uu_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3775, + 14, + 3775, + 70, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uv_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("calcul_\xc3\xa9quivalence_loyer_minimale.n_nombre_parts_d832_25"), + 0]], + _us_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3775, + 14, + 3775, + 70, + [0, + caml_string_of_jsbytes("Article D832-24"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _uw_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _ux_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("calcul_\xc3\xa9quivalence_loyer_minimale"), + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0]]], + _uC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 639, + 10, + 639, + 17, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 639, + 10, + 639, + 17, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uD_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_formule"), + 0]], + _uL_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("abattement_d\xc3\xa9pense_nette_minimale_d832_27"), + 0]], + _uO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 630, + 12, + 630, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 630, + 12, + 630, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uP_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("\xc3\xa9quivalence_loyer_minimale"),0]], + _uU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 640, + 10, + 640, + 23, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 640, + 10, + 640, + 23, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _uV_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("coefficient_prise_en_charge_d832_25_coeff_arrondi"), + 0]], + _u7_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_abattement"),0]], + _va_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 641, + 10, + 641, + 15, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _u8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 641, + 10, + 641, + 15, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vb_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes("coefficient_prise_en_charge_d832_25_seuil"), + 0]], + _vn_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _vq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 643, + 12, + 643, + 31, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 643, + 12, + 643, + 31, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _vr_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _vz_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _s8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1788, + 14, + 1788, + 33, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _s4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1931, + 14, + 1931, + 39, + [0, + caml_string_of_jsbytes("Article D823-17"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _s0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1914, + 14, + 1914, + 36, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _sW_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + [0,caml_string_of_jsbytes("input0"),0]]], + _sX_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + 0]], + _sY_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _sZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + 0]], + _s1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 578, + 10, + 578, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 578, + 10, + 578, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1965, + 14, + 1965, + 42, + [0, + caml_string_of_jsbytes("Article D823-17"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _sO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 807, + 14, + 807, + 36, + [0, + caml_string_of_jsbytes("Article L832-3"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _sK_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("input0"),0]]], + _sL_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _sM_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + [0,caml_string_of_jsbytes("output"),0]]], + _sN_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _sP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 577, + 10, + 577, + 36, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 577, + 10, + 577, + 36, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1134, + 14, + 1134, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _sE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 10, + 551, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 341, + 14, + 341, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _sF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 10, + 551, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 414, + 14, + 414, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _sG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 10, + 551, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1882, + 14, + 1882, + 36, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _sp_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("input0"),0]]], + _sq_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _sr_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + [0,caml_string_of_jsbytes("output"),0]]], + _ss_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _st_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("input0"),0]]], + _su_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _sv_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0, + caml_string_of_jsbytes("montant"), + [0,caml_string_of_jsbytes("output"),0]]], + _sw_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _sy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 576, + 10, + 576, + 40, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _so_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 576, + 10, + 576, + 40, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _si_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1127, + 14, + 1127, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _sj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 334, + 14, + 334, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _sk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sg_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 407, + 14, + 407, + 33, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _sl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1865, + 14, + 1865, + 36, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _r__= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), + [0,caml_string_of_jsbytes("input0"),0]]], + _r$_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], + _sa_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"), + [0,caml_string_of_jsbytes("output"),0]]], + _sb_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], + _sd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 575, + 10, + 575, + 32, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 575, + 10, + 575, + 32, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1103, + 14, + 1103, + 28, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _r4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 307, + 14, + 307, + 28, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _r5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 381, + 14, + 381, + 28, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _r6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rW_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 302, + 14, + 302, + 36, + [0, + caml_string_of_jsbytes("Article 13"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 228, + 14, + 228, + 36, + [0, + caml_string_of_jsbytes("Article 13"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1024, + 14, + 1024, + 36, + [0, + caml_string_of_jsbytes("Article 13"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _rT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1855, + 5, + 1855, + 50, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _rO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 574, + 10, + 574, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1841, + 14, + 1841, + 36, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _rP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 574, + 10, + 574, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 574, + 10, + 574, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1806, + 14, + 1806, + 28, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _rE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 253, + 14, + 253, + 42, + [0, + caml_string_of_jsbytes("Article 10"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 259, + 14, + 259, + 41, + [0, + caml_string_of_jsbytes("Article 10"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4211, + 14, + 4211, + 29, + [0, + caml_string_of_jsbytes("Article D842-2"), + [0, + caml_string_of_jsbytes("Section 1 : Secteur locatif ordinaire"), + [0, + caml_string_of_jsbytes + ("Chapitre 2 : Modalit\xc3\xa9s de liquidation et de versement des allocations de logement"), + [0, + caml_string_of_jsbytes("Titre IV : Allocations de Logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _rq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 572, + 29, + 572, + 64, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ro_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 450, + 29, + 450, + 64, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1241, + 29, + 1241, + 64, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _rn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 230, + 29, + 230, + 64, + [0, + caml_string_of_jsbytes("Article 9"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _rk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rh_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 214, + 29, + 214, + 64, + [0, + caml_string_of_jsbytes("Article 9"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ri_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1010, + 29, + 1010, + 64, + [0, + caml_string_of_jsbytes("Article 9"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _rg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 529, + 5, + 530, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _ra_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 538, + 5, + 539, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 547, + 5, + 547, + 35, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 406, + 5, + 407, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 415, + 5, + 416, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _q1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 424, + 5, + 424, + 35, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _q2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qZ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1197, + 5, + 1198, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _q0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1206, + 5, + 1207, + 34, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1215, + 5, + 1215, + 35, + [0, + caml_string_of_jsbytes("Article 16"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qR_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 195, + 5, + 195, + 61, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qP_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 179, + 5, + 179, + 61, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 975, + 5, + 975, + 61, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qK_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 188, + 14, + 188, + 37, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 172, + 14, + 172, + 37, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 968, + 14, + 968, + 37, + [0, + caml_string_of_jsbytes("Article 8"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qD_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 104, + 5, + 105, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qE_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 114, + 5, + 115, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qC_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 124, + 5, + 124, + 35, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 87, + 5, + 88, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qy_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 97, + 5, + 98, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 107, + 5, + 107, + 35, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qr_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 884, + 5, + 885, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qs_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 894, + 5, + 895, + 34, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 904, + 5, + 904, + 35, + [0, + caml_string_of_jsbytes("Article 7"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qo_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qj_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 286, + 14, + 286, + 42, + [0, + caml_string_of_jsbytes("Article 12"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qd_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 359, + 14, + 359, + 29, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qe_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 553, + 11, + 553, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 431, + 14, + 431, + 29, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _qf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 553, + 11, + 553, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qa_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1152, + 14, + 1152, + 29, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _qb_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 553, + 11, + 553, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 467, + 14, + 467, + 44, + [0, + caml_string_of_jsbytes("Article 15"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _p8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 559, + 11, + 559, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 27, + 14, + 27, + 44, + [0, + caml_string_of_jsbytes("Article 15"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er juillet 2022 au 31 d\xc3\xa9cembre 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _p6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 559, + 11, + 559, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 822, + 14, + 822, + 44, + [0, + caml_string_of_jsbytes("Article 15"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er janvier 2022 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _p4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 559, + 11, + 559, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1418, + 14, + 1418, + 44, + [0, + caml_string_of_jsbytes("Article 15"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er janvier 2020 au 31 d\xc3\xa9cembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _p2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 559, + 11, + 559, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pU_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 1069, + 14, + 1069, + 40, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2020 au 31 septembre 2021"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]]], + _pV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 565, + 12, + 565, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/archives.catala_fr"), + 273, + 14, + 273, + 40, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Articles valables du 1er octobre 2021 au 30 juin 2022"), + [0, + caml_string_of_jsbytes + ("Archives de l'arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _pW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 565, + 12, + 565, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pS_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 348, + 14, + 348, + 40, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _pX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 565, + 12, + 565, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 581, + 14, + 581, + 50, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pI_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 274, + 14, + 274, + 41, + [0, + caml_string_of_jsbytes("Article 11"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Calcul des aides personnelles au logement en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _pE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1905, + 14, + 1905, + 29, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _pF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 554, + 11, + 554, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 554, + 11, + 554, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pG_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("fraction_l832_3"),0]], + _pJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 557, + 11, + 557, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 557, + 11, + 557, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pK_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d823_16"),0]], + _pN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 581, + 14, + 581, + 50, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pO_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("contributions_sociales.date_courante"),0]], + _pL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 581, + 14, + 581, + 50, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pP_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _pQ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("contributions_sociales"), + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement"), + 0]]], + _pY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 565, + 12, + 565, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 565, + 12, + 565, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _pZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("taux_composition_familiale"),0]], + _p9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 559, + 11, + 559, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 559, + 11, + 559, + 41, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p__= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("abattement_forfaitaire_d823_17"),0]], + _qg_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 553, + 11, + 553, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _p$_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 553, + 11, + 553, + 26, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qh_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("loyer_r\xc3\xa9f\xc3\xa9rence"),0]], + _qk_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 558, + 11, + 558, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qi_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 558, + 11, + 558, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ql_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("montant_minimal_aide_d823_16"),0]], + _rc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _qm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 563, + 12, + 563, + 35, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rd_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("plafond_loyer_d823_16_2"),0]], + _rt_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _re_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 562, + 12, + 562, + 47, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ru_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("montant_forfaitaire_charges_d823_16"),0]], + _rx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 532, + 10, + 532, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rv_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 532, + 10, + 532, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _ry_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("loyer_principal_avec_r\xc3\xa9duction_meubl\xc3\xa9"), + 0]], + _rB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 556, + 11, + 556, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 556, + 11, + 556, + 38, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rC_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("plafond_suppression_d823_16"),0]], + _rF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 555, + 11, + 555, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 555, + 11, + 555, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rG_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes("plafond_d\xc3\xa9gressivit\xc3\xa9_d823_16"), + 0]], + _rJ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 548, + 11, + 548, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 548, + 11, + 548, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rK_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("loyer_\xc3\xa9ligible"),0]], + _rQ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_diminu\xc3\xa9"),0]], + _rY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 564, + 12, + 564, + 34, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _rZ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("participation_minimale"),0]], + _r7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r0_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 552, + 11, + 552, + 25, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _r8_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("rapport_loyers"),0]], + _se_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_minoration_forfaitaire"), + 0]], + _sm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sf_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 550, + 10, + 550, + 17, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sn_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_formule"),0]], + _sz_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_contributions_sociales_arrondi"), + 0]], + _sH_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 10, + 551, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sA_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 551, + 10, + 551, + 22, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sI_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("taux_loyer_\xc3\xa9ligible_taux_arrondi"),0]], + _sQ_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0, + caml_string_of_jsbytes + ("traitement_aide_finale_r\xc3\xa9duction_loyer_solidarit\xc3\xa9"), + 0]], + _sT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 560, + 11, + 560, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 560, + 11, + 560, + 39, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _sU_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("taux_prise_compte_ressources"),0]], + _s2_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("traitement_aide_finale_montant_minimal"),0]], + _s5_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 566, + 12, + 566, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _s3_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 566, + 12, + 566, + 37, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _s6_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("participation_personnelle"),0]], + _s9_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 571, + 12, + 571, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _s7_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 571, + 12, + 571, + 31, + [0, + caml_string_of_jsbytes("Secteur locatif"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _s__= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + [0,caml_string_of_jsbytes("aide_finale_formule"),0]], + _s$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1858, + 13, + 1858, + 74, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _tc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 1858, + 13, + 1858, + 74, + [0, + caml_string_of_jsbytes("Article D823-16"), + [0, + caml_string_of_jsbytes + ("Sous-section 2 : Calcul de l'aide en secteur locatif"), + [0, + caml_string_of_jsbytes + ("Section 1 : Calcul, liquidation et versement des aides"), + [0, + caml_string_of_jsbytes + ("Chapitre III : Modalit\xc3\xa9s de liquidation et de versement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _ta_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 817, + 13, + 817, + 61, + [0, + caml_string_of_jsbytes("Article L832-3"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _tb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_legislatif.catala_fr"), + 817, + 13, + 817, + 61, + [0, + caml_string_of_jsbytes("Article L832-3"), + [0, + caml_string_of_jsbytes("Chapitre Ier : Champ d'application"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]], + _pr_=[7,0], + _ps_=[5,0], + _pt_=[4,0], + _pu_=[3,0], + _pv_=[2,0], + _pw_=[1,0], + _px_=[0,0], + _py_=[6,0], + _pz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 29, + 5, + 38, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _po_=[8,0], + _pp_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 47, + 5, + 49, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pq_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _pe_=[7,0], + _pf_=[5,0], + _pg_=[4,0], + _ph_=[3,0], + _pi_=[2,0], + _pj_=[1,0], + _pk_=[0,0], + _pl_=[6,0], + _pm_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 68, + 5, + 77, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pn_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _pb_=[8,0], + _pc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 86, + 5, + 88, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pd_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _o3_=[7,0], + _o4_=[5,0], + _o5_=[4,0], + _o6_=[3,0], + _o7_=[2,0], + _o8_=[1,0], + _o9_=[0,0], + _o__=[6,0], + _o$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 107, + 5, + 116, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _pa_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _o0_=[8,0], + _o1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 125, + 5, + 127, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _o2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oQ_=[7,0], + _oR_=[5,0], + _oS_=[4,0], + _oT_=[3,0], + _oU_=[2,0], + _oV_=[1,0], + _oW_=[0,0], + _oX_=[6,0], + _oY_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 146, + 5, + 155, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oN_=[8,0], + _oO_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 165, + 5, + 167, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2021-1741 du 22 d\xc3\xa9cembre 2021 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oD_=[7,0], + _oE_=[5,0], + _oF_=[4,0], + _oG_=[3,0], + _oH_=[2,0], + _oI_=[1,0], + _oJ_=[0,0], + _oK_=[6,0], + _oL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 186, + 5, + 195, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oM_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oA_=[8,0], + _oB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 204, + 5, + 206, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 19 avril 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oq_=[7,0], + _or_=[5,0], + _os_=[4,0], + _ot_=[3,0], + _ou_=[2,0], + _ov_=[1,0], + _ow_=[0,0], + _ox_=[6,0], + _oy_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 225, + 5, + 234, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oz_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _on_=[8,0], + _oo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 243, + 5, + 245, + 6, + [0, + caml_string_of_jsbytes("Article 2"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 29 juillet 2022 relatif au rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _op_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _od_=[7,0], + _oe_=[5,0], + _of_=[4,0], + _og_=[3,0], + _oh_=[2,0], + _oi_=[1,0], + _oj_=[0,0], + _ok_=[6,0], + _ol_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 265, + 5, + 274, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _om_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _oa_=[8,0], + _ob_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 283, + 5, + 285, + 6, + [0, + caml_string_of_jsbytes("Article 1"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9cret n\xc2\xb0 2022-1608 du 22 d\xc3\xa9cembre 2022 portant rel\xc3\xa8vement du salaire minimum de croissance"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]]], + _oc_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _pB_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _n$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../prestations_familiales/../smic/smic.catala_fr"), + 11, + 12, + 11, + 24, + [0, + caml_string_of_jsbytes("Prologue"), + [0, + caml_string_of_jsbytes("Montant du salaire minimum de croissance"), + 0]]], + _pC_= + [0, + caml_string_of_jsbytes("Smic"), + [0,caml_string_of_jsbytes("brut_horaire"),0]], + _n7_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 28, + 5, + 29, + 33, + [0, + caml_string_of_jsbytes + ("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _n8_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 48, + 5, + 49, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _n6_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n3_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 64, + 5, + 65, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _n4_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n1_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 82, + 5, + 83, + 33, + [0, + caml_string_of_jsbytes + ("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2022/82 du 28 mars 2022 relative \xc3\xa0 la revalorisation au 1er avril 2022 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"), + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]]], + _n2_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/../base_mensuelle_allocations_familiales/bmaf.catala_fr"), + 6, + 12, + 6, + 19, + [0, + caml_string_of_jsbytes + ("Montant de la base mensuelle des allocations familiales"), + 0]], + _n__= + [0, + caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"), + [0,caml_string_of_jsbytes("montant"),0]], + _nV_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2245, + 14, + 2245, + 28, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1034, + 12, + 1034, + 26, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2182, + 14, + 2182, + 28, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nX_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1034, + 12, + 1034, + 26, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2187, + 20, + 2187, + 55, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1029, + 11, + 1029, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nN_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2203, + 20, + 2203, + 51, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nO_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1029, + 11, + 1029, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nL_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2269, + 7, + 2269, + 42, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nM_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1029, + 11, + 1029, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2297, + 7, + 2297, + 51, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1029, + 11, + 1029, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nE_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2226, + 14, + 2226, + 36, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1032, + 11, + 1032, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2322, + 14, + 2322, + 36, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1032, + 11, + 1032, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nw_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2313, + 14, + 2313, + 36, + [0, + caml_string_of_jsbytes("Article R824-2"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nx_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1031, + 11, + 1031, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nv_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2217, + 14, + 2217, + 36, + [0, + caml_string_of_jsbytes("Article R824-1"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _ny_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1031, + 11, + 1031, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nr_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 2345, + 14, + 2345, + 36, + [0, + caml_string_of_jsbytes("Article R824-3"), + [0, + caml_string_of_jsbytes + ("Section 1 : Seuils de constitution d'un impay\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre IV : Impay\xc3\xa9s de d\xc3\xa9penses de logement"), + [0, + caml_string_of_jsbytes + ("Titre II : Dispositions communes aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _nm_=[0,0], + _nn_=[1,0], + _no_=[1,0], + _np_=[0,0], + _nq_=[0,0], + _ns_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1030, + 11, + 1030, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nl_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1030, + 11, + 1030, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nt_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0,caml_string_of_jsbytes("mode_occupation_impay\xc3\xa9"),0]], + _nz_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1031, + 11, + 1031, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1031, + 11, + 1031, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nA_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_brute"),0]], + _nG_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1032, + 11, + 1032, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1032, + 11, + 1032, + 33, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nH_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0,caml_string_of_jsbytes("d\xc3\xa9pense_logement_nette"),0]], + _nR_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1029, + 11, + 1029, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nI_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1029, + 11, + 1029, + 43, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nS_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0, + caml_string_of_jsbytes + ("seuil_impay\xc3\xa9_d\xc3\xa9pense_de_logement"), + 0]], + _nY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1034, + 12, + 1034, + 26, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nT_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1034, + 12, + 1034, + 26, + [0, + caml_string_of_jsbytes + ("Quantification des impay\xc3\xa9s de d\xc3\xa9pense de logement"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nZ_= + [0, + caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"), + [0,caml_string_of_jsbytes("montant_impay\xc3\xa9"),0]], + _nh_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 119, + 5, + 119, + 42, + [0, + caml_string_of_jsbytes("Article L161-17-2"), + [0, + caml_string_of_jsbytes + ("Paragraphe 1 : Information et simplification des d\xc3\xa9marches des assur\xc3\xa9s."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _ni_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 12, + 1014, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nf_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 256, + 5, + 256, + 41, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _ng_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 12, + 1014, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nd_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 266, + 5, + 267, + 42, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _ne_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 12, + 1014, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nb_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 276, + 5, + 276, + 48, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _nc_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 12, + 1014, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _m$_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 285, + 5, + 285, + 48, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _na_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 12, + 1014, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _m9_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 294, + 5, + 294, + 48, + [0, + caml_string_of_jsbytes("Article D161-2-1-9"), + [0, + caml_string_of_jsbytes + ("Paragraphe 2 : Ouverture du droit et liquidation."), + [0, + caml_string_of_jsbytes("Sous-section 4 : Assurance vieillesse"), + [0, + caml_string_of_jsbytes("Section 1 : B\xc3\xa9n\xc3\xa9ficiaires"), + [0, + caml_string_of_jsbytes + ("Chapitre 1er : Dispositions relatives aux prestations"), + [0, + caml_string_of_jsbytes + ("Titre VI : Dispositions relatives aux prestations et aux soins - Contr\xc3\xb4le m\xc3\xa9dical - Tutelle aux prestations sociales"), + [0, + caml_string_of_jsbytes + ("Livre I : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s - Dispositions communes \xc3\xa0 tout ou partie des r\xc3\xa9gimes de base"), + [0, + caml_string_of_jsbytes + ("Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]]]]], + _m__= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 12, + 1014, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nj_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 12, + 1014, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _m8_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 1014, + 12, + 1014, + 31, + [0, + caml_string_of_jsbytes + ("Date d'ouverture des droits \xc3\xa0 la retraite"), + [0, + caml_string_of_jsbytes("Calcul du montant de l'allocation logement"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _nk_= + [0, + caml_string_of_jsbytes("OuvertureDroitsRetraite"), + [0,caml_string_of_jsbytes("\xc3\xa2ge_ouverture_droit"),0]], + _m5_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3260, + 14, + 3260, + 36, + [0, + caml_string_of_jsbytes("Article D832-11"), + [0, + caml_string_of_jsbytes + ("Section 2 : Accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]], + _m6_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 661, + 12, + 661, + 34, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _m4_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 661, + 12, + 661, + 34, + [0, + caml_string_of_jsbytes + ("Secteur accession \xc3\xa0 la propri\xc3\xa9t\xc3\xa9"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _m7_= + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + [0,caml_string_of_jsbytes("n_nombre_parts_d832_11"),0]], + _m0_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4003, + 5, + 4003, + 26, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _m1_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 604, + 12, + 604, + 34, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mZ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 3916, + 14, + 3916, + 36, + [0, + caml_string_of_jsbytes("Article D832-25"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _m2_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 604, + 12, + 604, + 34, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mY_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 604, + 12, + 604, + 34, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _m3_= + [0, + caml_string_of_jsbytes("CalculNombrePartLogementFoyer"), + [0,caml_string_of_jsbytes("n_nombre_parts_d832_25"),0]], + _mU_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4089, + 5, + 4089, + 26, + [0, + caml_string_of_jsbytes("Article D832-26"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _mV_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 597, + 12, + 597, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mT_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4051, + 14, + 4051, + 21, + [0, + caml_string_of_jsbytes("Article D832-26"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _mP_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_construction_reglementaire.catala_fr"), + 4038, + 14, + 4038, + 50, + [0, + caml_string_of_jsbytes("Article D832-26"), + [0, + caml_string_of_jsbytes + ("Sous-Section 2 : Conditions d'octroi de l'aide personnalis\xc3\xa9e au logement aux personnes r\xc3\xa9sidant dans un logement-foyer"), + [0, + caml_string_of_jsbytes("Section 3 : Logements-foyers"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Modalit\xc3\xa9s de liquidation et de versement de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Titre III : Aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("Livre VIII : Aides personnelles au logement"), + [0, + caml_string_of_jsbytes("Partie r\xc3\xa9glementaire"), + [0, + caml_string_of_jsbytes + ("Code de la construction et de l'habitation"), + 0]]]]]]]]], + _mO_=[1,0], + _mJ_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2650, + 5, + 2650, + 26, + [0, + caml_string_of_jsbytes("Article 31"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _mI_=[1,0], + _mK_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 592, + 11, + 592, + 35, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mH_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2601, + 14, + 2601, + 38, + [0, + caml_string_of_jsbytes("Article 31"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _mG_=[1,0], + _mC_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/arrete_2019-09-27.catala_fr"), + 2685, + 14, + 2685, + 41, + [0, + caml_string_of_jsbytes("Article 31"), + [0, + caml_string_of_jsbytes + ("Chapitre V : Calcul de l'aide personnalis\xc3\xa9e au logement en secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Arr\xc3\xaat\xc3\xa9 du 27 septembre 2019 relatif au calcul des aides personnelles au logement et de la prime de d\xc3\xa9m\xc3\xa9nagement"), + 0]]]], + _mD_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 595, + 11, + 595, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mB_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 595, + 11, + 595, + 38, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mE_= + [0, + caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), + [0,caml_string_of_jsbytes("montant_forfaitaire_d832_26"),0]], + _mL_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 592, + 11, + 592, + 35, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mF_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 592, + 11, + 592, + 35, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mM_= + [0, + caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), + [0,caml_string_of_jsbytes("tranches_revenus_d832_26"),0]], + _mQ_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 593, + 11, + 593, + 47, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mN_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 593, + 11, + 593, + 47, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mR_= + [0, + caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), + [0, + caml_string_of_jsbytes("tranches_revenus_d832_26_multipli\xc3\xa9es"), + 0]], + _mW_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 597, + 12, + 597, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mS_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 597, + 12, + 597, + 19, + [0, + caml_string_of_jsbytes("Secteur logement-foyer"), + [0, + caml_string_of_jsbytes + ("Calcul du montant de l'aide personnalis\xc3\xa9e au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]]], + _mX_= + [0, + caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"), + [0,caml_string_of_jsbytes("montant"),0]], + _mx_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 153, + 5, + 153, + 34, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), + [0, + caml_string_of_jsbytes + ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), + 0]]]], + _my_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 521, + 12, + 521, + 19, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mw_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 521, + 12, + 521, + 19, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mt_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 191, + 39, + 191, + 68, + [0, + caml_string_of_jsbytes("Article 19"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), + [0, + caml_string_of_jsbytes + ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), + 0]]]], + _mo_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/code_s\xc3\xa9curit\xc3\xa9_sociale.catala_fr"), + 37, + 9, + 37, + 20, + [0, + caml_string_of_jsbytes("Article L136-1-3"), + [0, + caml_string_of_jsbytes + ("Section 1 : De la contribution sociale sur les revenus d'activit\xc3\xa9 et sur les revenus de remplacement"), + [0, + caml_string_of_jsbytes + ("Chapitre 6 : Contribution sociale g\xc3\xa9n\xc3\xa9ralis\xc3\xa9e"), + [0, + caml_string_of_jsbytes + ("Titre III: Titre III : Dispositions communes relatives au financement"), + [0, + caml_string_of_jsbytes("Partie l\xc3\xa9gislative"), + [0, + caml_string_of_jsbytes + ("Code de la s\xc3\xa9curit\xc3\xa9 sociale"), + 0]]]]]]], + _mp_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 519, + 11, + 519, + 22, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mn_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 519, + 11, + 519, + 22, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mq_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 519, + 11, + 519, + 22, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mm_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 519, + 11, + 519, + 22, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mr_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("exon\xc3\xa9r\xc3\xa9_csg"),0]], + _mu_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 518, + 11, + 518, + 20, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _ms_= + [0, + caml_string_of_jsbytes("examples/aides_logement/prologue.catala_fr"), + 518, + 11, + 518, + 20, + [0, + caml_string_of_jsbytes + ("Calcul des contributions sociales s'appliquant aux aides personnelles au logement"), + [0, + caml_string_of_jsbytes + ("D\xc3\xa9clarations des champs d'application"), + [0,caml_string_of_jsbytes("Prologue : aides au logement"),0]]]], + _mv_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("taux_crds"),0]], + _mz_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + [0,caml_string_of_jsbytes("montant"),0]], + _mA_= + [0, + caml_string_of_jsbytes + ("examples/aides_logement/autres_sources.catala_fr"), + 157, + 13, + 157, + 24, + [0, + caml_string_of_jsbytes("Article 14"), + [0, + caml_string_of_jsbytes + ("Chapitre II : Des contributions pour le remboursement de la dette sociale."), + [0, + caml_string_of_jsbytes + ("Ordonnance n\xc2\xb0 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale"), + 0]]]], + _ml_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales_in"), + 0], + _mk_=[0,caml_string_of_jsbytes("Smic_in"),0], + _mj_= + [0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales_in"),0], + _mi_= + [0, + caml_string_of_jsbytes + ("CalculetteAidesAuLogementGardeAltern\xc3\xa9e_in"), + 0], + _mh_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement_in"),0], + _mg_= + [0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement_in"),0], + _mf_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite_in"),0], + _me_=[0,caml_string_of_jsbytes("CalculAllocationLogement_in"),0], + _md_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer_in"),0], + _mc_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"), + 0], + _mb_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif_in"),0], + _ma_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement_in"), + 0], + _l$_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9_in"), + 0], + _l__= + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9_in"), + 0], + _l9_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementFoyer_in"), + 0], + _l8_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer_in"),0], + _l7_= + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale_in"),0], + _l6_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementLocatif_in"), + 0], + _l5_= + [0, + caml_string_of_jsbytes + ("ContributionsSocialesAidesPersonnelleLogement_in"), + 0], + _l4_= + [0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement_in"),0], + _l3_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement_in"), + 0], + _l2_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AllocationLogement_in"), + 0], + _l1_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement_in"), + 0], + _l0_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement_in"), + 0], + _lZ_=[0,caml_string_of_jsbytes("M\xc3\xa9nage"),0], + _lY_=[0,caml_string_of_jsbytes("Logement"),0], + _lX_=[0,caml_string_of_jsbytes("ModeOccupation"),0], + _lW_=[0,caml_string_of_jsbytes("Cat\xc3\xa9gorieCalculAPL"),0], + _lV_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidesPersonnelleLogement"), + 0], + _lU_=[0,caml_string_of_jsbytes("Location"),0], + _lT_=[0,caml_string_of_jsbytes("Demandeur"),0], + _lS_=[0,caml_string_of_jsbytes("Personne\xc3\x80Charge"),0], + _lR_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrestationsFamiliales"), + 0], + _lQ_= + [0, + caml_string_of_jsbytes("InformationsPrimeDeD\xc3\xa9m\xc3\xa9nagement"), + 0], + _lP_=[0,caml_string_of_jsbytes("Propri\xc3\xa9taire"),0], + _lO_=[0,caml_string_of_jsbytes("ChangementLogementD842_4"),0], + _lN_=[0,caml_string_of_jsbytes("Nationalit\xc3\xa9"),0], + _lM_= + [0, + caml_string_of_jsbytes("Lou\xc3\xa9OuSousLou\xc3\xa9\xc3\x80DesTiers"), + 0], + _lL_=[0,caml_string_of_jsbytes("TypeBailleur"),0], + _lK_=[0,caml_string_of_jsbytes("Enfant\xc3\x80Charge"),0], + _lJ_=[0,caml_string_of_jsbytes("EnfantPrestationsFamiliales"),0], + _lI_=[0,caml_string_of_jsbytes("LogementFoyer"),0], + _lH_= + [0, + caml_string_of_jsbytes("\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + 0], + _lG_= + [0, + caml_string_of_jsbytes + ("DateNaissanceTroisi\xc3\xa8meOuDernierPlusEnfant"), + 0], + _lF_=[0,caml_string_of_jsbytes("AutrePersonne\xc3\x80Charge"),0], + _lE_=[0,caml_string_of_jsbytes("TrancheRevenuD\xc3\xa9cimal"),0], + _lD_=[0,caml_string_of_jsbytes("TrancheRevenu"),0], + _lC_=[0,caml_string_of_jsbytes("NeufOuAncien"),0], + _lB_=[0,caml_string_of_jsbytes("Pr\xc3\xaat"),0], + _lA_=[0,caml_string_of_jsbytes("Smic"),0], + _lz_=[0,caml_string_of_jsbytes("BaseMensuelleAllocationsFamiliales"),0], + _ly_= + [0, + caml_string_of_jsbytes("CalculetteAidesAuLogementGardeAltern\xc3\xa9e"), + 0], + _lx_=[0,caml_string_of_jsbytes("CalculetteAidesAuLogement"),0], + _lw_=[0,caml_string_of_jsbytes("Impay\xc3\xa9D\xc3\xa9penseLogement"),0], + _lv_=[0,caml_string_of_jsbytes("OuvertureDroitsRetraite"),0], + _lu_=[0,caml_string_of_jsbytes("CalculAllocationLogement"),0], + _lt_=[0,caml_string_of_jsbytes("CalculAllocationLogementFoyer"),0], + _ls_= + [0, + caml_string_of_jsbytes + ("CalculAllocationLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + 0], + _lr_=[0,caml_string_of_jsbytes("CalculAllocationLogementLocatif"),0], + _lq_=[0,caml_string_of_jsbytes("InfosChangementLogementD842_4"),0], + _lp_= + [0,caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogement"),0], + _lo_=[0,caml_string_of_jsbytes("Traitement_formule_aide_finale"),0], + _ln_= + [0, + caml_string_of_jsbytes + ("CalculAidePersonnalis\xc3\xa9eLogementAccessionPropri\xc3\xa9t\xc3\xa9"), + 0], + _lm_= + [0, + caml_string_of_jsbytes + ("CalculNombrePartsAccessionPropri\xc3\xa9t\xc3\xa9"), + 0], + _ll_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementFoyer"), + 0], + _lk_=[0,caml_string_of_jsbytes("CalculNombrePartLogementFoyer"),0], + _lj_= + [0,caml_string_of_jsbytes("Calcul\xc3\x89quivalenceLoyerMinimale"),0], + _li_= + [0, + caml_string_of_jsbytes("CalculAidePersonnalis\xc3\xa9eLogementLocatif"), + 0], + _lh_= + [0, + caml_string_of_jsbytes("ContributionsSocialesAidesPersonnelleLogement"), + 0], + _lg_=[0,caml_string_of_jsbytes("RessourcesAidesPersonnelleLogement"),0], + _lf_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9PrimeDeD\xc3\xa9m\xc3\xa9nagement"), + 0], + _le_= + [0, + caml_string_of_jsbytes + ("\xc3\x89ligibilit\xc3\xa9AidePersonnalis\xc3\xa9eLogement"), + 0], + _ld_=[0,caml_string_of_jsbytes("PersonneVivantHabituellementAuFoyer"),0], + _lc_=[0,caml_string_of_jsbytes("Conditions\xc3\x89trangers"),0], + _lb_=[0,caml_string_of_jsbytes("Patrimoine"),0], + _la_=[0,caml_string_of_jsbytes("PersonneSousLocation"),0], + _k$_=[0,caml_string_of_jsbytes("ConventionANHA"),0], + _k__=[0,caml_string_of_jsbytes("ConventionBailleurSocial"),0], + _k9_= + [0, + caml_string_of_jsbytes("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"), + 0], + _k8_=[0,caml_string_of_jsbytes("SituationObligationScolaire"),0], + _k7_=[0,caml_string_of_jsbytes("PriseEnChargeEnfant"),0], + _k6_=[0,caml_string_of_jsbytes("Collectivit\xc3\xa9"),0], + _k5_=[0,caml_string_of_jsbytes("SituationFamilialeCalculAPL"),0], + _k4_= + [0, + caml_string_of_jsbytes + ("Cat\xc3\xa9gorie\xc3\x89quivalenceLoyerAllocationLogementFoyer"), + 0], + _k3_=[0,caml_string_of_jsbytes("TypeLogementFoyer"),0], + _k2_=[0,caml_string_of_jsbytes("PriseEnCharge"),0], + _k1_=[0,caml_string_of_jsbytes("SituationFamiliale"),0], + _k0_=[0,caml_string_of_jsbytes("TypeAidesPersonnelleLogement"),0], + _kZ_= + [0, + caml_string_of_jsbytes + ("Type\xc3\x89ligibilit\xc3\xa9AllocationLogement"), + 0], + _kY_=[0,caml_string_of_jsbytes("ModeOccupationImpay\xc3\xa9"),0], + _kX_=[0,caml_string_of_jsbytes("D\xc3\xa9penseLogement"),0], + _kW_=[0,caml_string_of_jsbytes("Versement\xc3\x80"),0], + _kV_= + [0,caml_string_of_jsbytes("PaiementLogementDistinctProfessionnel"),0], + _kU_=[0,caml_string_of_jsbytes("ZoneDHabitation"),0], + _kT_=[0,caml_string_of_jsbytes("DateDeNaissanceOuMoisDeGrossesse"),0], + _kS_=[0,caml_string_of_jsbytes("Parent\xc3\xa9"),0], + _kR_=[0,caml_string_of_jsbytes("SituationGardeAltern\xc3\xa9e"),0], + _kQ_=[0,caml_string_of_jsbytes("ParentOuAutre"),0], + _kP_=[0,caml_string_of_jsbytes("PrestationRe\xc3\xa7ue"),0], + _kO_=[0,caml_string_of_jsbytes("LimiteTrancheD\xc3\xa9cimal"),0], + _kN_=[0,caml_string_of_jsbytes("LimiteTranche"),0], + _kM_=[0,caml_string_of_jsbytes("Am\xc3\xa9lior\xc3\xa9ParOccupant"),0], + _kL_=[0,caml_string_of_jsbytes("TypeTravauxLogementR842_5"),0], + _kK_=[0,caml_string_of_jsbytes("TypeTravauxLogementD832_15"),0], + _kJ_=[0,caml_string_of_jsbytes("TitulairePr\xc3\xaat"),0], + _kI_=[0,caml_string_of_jsbytes("TypePr\xc3\xaat"),0], + _XE_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ModeOccupation.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ModeOccupation.t'")], + _XD_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'CategorieCalculAPL.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'CategorieCalculAPL.t'")], + _XC_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PersonneACharge.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PersonneACharge.t'")], + _XB_=[1,0], + _XA_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ChangementLogementD8424.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ChangementLogementD8424.t'")], + _Xz_=[0,0], + _Xy_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' kind for the enumeration 'Nationalite.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'Nationalite.t'")], + _Xx_=[0,0], + _Xw_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'LoueOuSousLoueADesTiers.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'LoueOuSousLoueADesTiers.t'")], + _Xv_=[2,0], + _Xu_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeBailleur.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeBailleur.t'")], + _Xt_=[0,0], + _Xs_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'DateNaissanceTroisiemeOuDernierPlusEnfant.t'")], + _Xr_=[0,0], + _Xq_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'NeufOuAncien.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'NeufOuAncien.t'")], + _Xi_=[0,0], + _Xj_=[2,0], + _Xk_=[1,0], + _Xl_=[5,0], + _Xm_=[6,0], + _Xn_=[3,0], + _Xo_=[7,0], + _Xp_=[4,0], + _Xh_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ElementPrestationsFamiliales.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ElementPrestationsFamiliales.t'")], + _Xe_=[1,0], + _Xf_=[0,0], + _Xg_=[2,0], + _Xd_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationObligationScolaire.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationObligationScolaire.t'")], + _W__=[4,0], + _W$_=[3,0], + _Xa_=[0,0], + _Xb_=[1,0], + _Xc_=[2,0], + _W9_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PriseEnChargeEnfant.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PriseEnChargeEnfant.t'")], + _W0_=[7,0], + _W1_=[5,0], + _W2_=[4,0], + _W3_=[6,0], + _W4_=[8,0], + _W5_=[2,0], + _W6_=[3,0], + _W7_=[1,0], + _W8_=[0,0], + _WZ_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'Collectivite.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'Collectivite.t'")], + _WX_=[0,0], + _WY_=[1,0], + _WW_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationFamilialeCalculAPL.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationFamilialeCalculAPL.t'")], + _WS_=[2,0], + _WT_=[1,0], + _WU_=[0,0], + _WV_=[3,0], + _WR_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'CategorieEquivalenceLoyerAllocationLogementFoyer.t'")], + _WN_=[1,0], + _WO_=[0,0], + _WP_=[2,0], + _WQ_=[3,0], + _WM_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeLogementFoyer.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeLogementFoyer.t'")], + _WJ_=[2,0], + _WK_=[1,0], + _WL_=[0,0], + _WI_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PriseEnCharge.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PriseEnCharge.t'")], + _WD_=[2,0], + _WE_=[3,0], + _WF_=[5,0], + _WG_=[4,0], + _WH_=[0,0], + _WC_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationFamiliale.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationFamiliale.t'")], + _Wz_=[2,0], + _WA_=[1,0], + _WB_=[0,0], + _Wy_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeAidesPersonnelleLogement.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeAidesPersonnelleLogement.t'")], + _Wv_=[0,0], + _Ww_=[2,0], + _Wx_=[1,0], + _Wu_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeEligibiliteAllocationLogement.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeEligibiliteAllocationLogement.t'")], + _Ws_=[1,0], + _Wt_=[0,0], + _Wr_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ModeOccupationImpaye.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ModeOccupationImpaye.t'")], + _Wq_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'DepenseLogement.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'DepenseLogement.t'")], + _Wn_=[2,0], + _Wo_=[1,0], + _Wp_=[0,0], + _Wm_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' kind for the enumeration 'VersementA.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'VersementA.t'")], + _Wl_=[1,0], + _Wk_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PaiementLogementDistinctProfessionnel.t'")], + _Wh_=[2,0], + _Wi_=[1,0], + _Wj_=[0,0], + _Wg_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ZoneDHabitation.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ZoneDHabitation.t'")], + _We_=[1,0], + _Wf_=[2,0], + _Wd_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'DateDeNaissanceOuMoisDeGrossesse.t'")], + _Wa_=[1,0], + _Wb_=[2,0], + _Wc_=[0,0], + _V$_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' kind for the enumeration 'Parente.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'Parente.t'")], + _V__=[0,0], + _V9_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'SituationGardeAlternee.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'SituationGardeAlternee.t'")], + _V8_=[1,0], + _V7_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'ParentOuAutre.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'ParentOuAutre.t'")], + _V1_=[1,0], + _V2_=[0,0], + _V3_=[3,0], + _V4_=[4,0], + _V5_=[2,0], + _V6_=[5,0], + _V0_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'PrestationRecue.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'PrestationRecue.t'")], + _VZ_=[1,0], + _VY_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'LimiteTrancheDecimal.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'LimiteTrancheDecimal.t'")], + _VX_=[1,0], + _VW_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'LimiteTranche.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'LimiteTranche.t'")], + _VU_=[0,0], + _VV_=[1,0], + _VT_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'AmelioreParOccupant.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'AmelioreParOccupant.t'")], + _VP_=[1,0], + _VQ_=[3,0], + _VR_=[0,0], + _VS_=[2,0], + _VO_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeTravauxLogementR8425.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementR8425.t'")], + _VL_=[1,0], + _VM_=[0,0], + _VN_=[2,0], + _VK_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TypeTravauxLogementD83215.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypeTravauxLogementD83215.t'")], + _VI_=[1,0], + _VJ_=[0,0], + _VH_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes + ("' kind for the enumeration 'TitulairePret.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TitulairePret.t'")], + _VC_=[3,0], + _VD_=[1,0], + _VE_=[2,0], + _VF_=[0,0], + _VG_=[4,0], + _VB_= + [0, + [11, + caml_string_of_jsbytes("Unexpected '"), + [2, + 0, + [11, + caml_string_of_jsbytes("' kind for the enumeration 'TypePret.t'"), + 0]]], + caml_string_of_jsbytes + ("Unexpected '%s' kind for the enumeration 'TypePret.t'")]; + function embed_prise_en_charge(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciM_= + [0, + cst_GardeAltern_ePartageAlloca, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciM_= + [0, + cst_GardeAltern_eAllocataireUn, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _ciM_= + [0, + cst_EffectiveEtPermanente, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _ciM_= + [0, + cst_ServicesSociauxAllocationV, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + default: + var + x$4=x[1], + _ciM_= + [0, + cst_ServicesSociauxAllocationV$0, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]} + return [6,_a_,_ciM_]} + var SituationObligationScolaire=[0]; + function embed_situation_obligation_sco(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciL_=[0,cst_Avant,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciL_=[0,cst_Pendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _ciL_=[0,cst_Apr_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_b_,_ciL_]} + var PriseEnCompte=[0]; + function embed_prise_en_compte(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciK_=[0,cst_Compl_te,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciK_=[0,cst_Partag_e,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _ciK_=[0,cst_Z_ro,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_c_,_ciK_]} + var VersementAllocations=[0]; + function embed_versement_allocations(x) + {if(0 === x[0]) + var + x$0=x[1], + _ciJ_=[0,cst_Normal,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _ciJ_= + [0, + cst_AllocationVers_eAuxService, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_d_,_ciJ_]} + var ElementPrestationsFamiliales=[0]; + function embed_element_prestations_fami(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciI_= + [0, + cst_PrestationAccueilJeuneEnfa, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciI_= + [0, + cst_AllocationsFamiliales, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _ciI_= + [0, + cst_Compl_mentFamilial, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _ciI_= + [0, + cst_AllocationLogement, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _ciI_= + [0, + cst_Allocation_ducationEnfantH, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + case 5: + var + x$5=x[1], + _ciI_= + [0, + cst_AllocationSoutienFamilial, + caml_call1(Runtime_ocaml_Runtime[11],x$5)]; + break; + case 6: + var + x$6=x[1], + _ciI_= + [0, + cst_AllocationRentr_eScolaire, + caml_call1(Runtime_ocaml_Runtime[11],x$6)]; + break; + default: + var + x$7=x[1], + _ciI_= + [0, + cst_AllocationJournali_rePrese, + caml_call1(Runtime_ocaml_Runtime[11],x$7)]} + return [6,_e_,_ciI_]} + var Collectivite=[0]; + function embed_collectivite(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _ciH_=[0,cst_Guadeloupe,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _ciH_=[0,cst_Guyane,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _ciH_=[0,cst_Martinique,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _ciH_=[0,cst_LaR_union,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _ciH_= + [0,cst_SaintBarth_lemy,caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + case 5: + var + x$5=x[1], + _ciH_=[0,cst_SaintMartin,caml_call1(Runtime_ocaml_Runtime[11],x$5)]; + break; + case 6: + var + x$6=x[1], + _ciH_=[0,cst_M_tropole,caml_call1(Runtime_ocaml_Runtime[11],x$6)]; + break; + case 7: + var + x$7=x[1], + _ciH_= + [0, + cst_SaintPierreEtMiquelon, + caml_call1(Runtime_ocaml_Runtime[11],x$7)]; + break; + default: + var + x$8=x[1], + _ciH_=[0,cst_Mayotte,caml_call1(Runtime_ocaml_Runtime[11],x$8)]} + return [6,_f_,_ciH_]} + var AllocationFamilialesAvril2008=[0]; + function embed_allocation_familiales_av(x) + {return [7, + _g_, + [0, + [0, + cst_ge_minimum_alin_a_1_l521_3, + caml_call1(Runtime_ocaml_Runtime[17],x[1])], + 0]]} + var AllocationsFamiliales=[0]; + function embed_allocations_familiales(x) + {return [7, + _h_, + [0, + [0,cst_montant_vers,caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var Smic=[0]; + function embed_smic(x) + {return [7, + _i_, + [0, + [0,cst_brut_horaire,caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var BaseMensuelleAllocationsFamili=[0]; + function embed_base_mensuelle_allocatio(x) + {return [7, + _j_, + [0,[0,cst_montant,caml_call1(Runtime_ocaml_Runtime[13],x[1])],0]]} + var InterfaceAllocationsFamiliales=[0]; + function embed_interface_allocations_fa(x) + {return [7, + _k_, + [0, + [0, + cst_i_montant_vers, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var EnfantEntree=[0]; + function embed_enfant_entree(x) + {var + _ciC_= + [0, + [0, + cst_d_b_n_ficie_titre_personne, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + 0], + _ciD_= + [0, + [0, + cst_d_a_d_j_ouvert_droit_aux_a, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _ciC_], + _ciE_=[0,[0,cst_d_prise_en_charge,embed_prise_en_charge(x[4])],_ciD_], + _ciF_= + [0, + [0, + cst_d_date_de_naissance, + caml_call1(Runtime_ocaml_Runtime[16],x[3])], + _ciE_], + _ciG_= + [0, + [0, + cst_d_r_muneration_mensuelle, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _ciF_]; + return [7, + _l_, + [0, + [0, + cst_d_identifiant, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _ciG_]]} + var Enfant=[0]; + function embed_enfant(x) + {var + _ciw_= + [0, + [0, + cst_b_n_ficie_titre_personnel_, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _cix_= + [0, + [0, + cst_a_d_j_ouvert_droit_aux_all, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _ciw_], + _ciy_=[0,[0,cst_prise_en_charge,embed_prise_en_charge(x[5])],_cix_], + _ciz_= + [0, + [0,cst_date_de_naissance,caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _ciy_], + _ciA_= + [0, + [0, + cst_r_muneration_mensuelle, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _ciz_], + _ciB_= + [0, + [0,cst_obligation_scolaire,embed_situation_obligation_sco(x[2])], + _ciA_]; + return [7, + _m_, + [0, + [0,cst_identifiant,caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _ciB_]]} + var EnfantLePlusAge=[0]; + function embed_enfant_le_plus_age(x) + {return [7,_n_,[0,[0,cst_le_plus_g,embed_enfant(x[1])],0]]} + var PrestationsFamiliales=[0]; + function embed_prestations_familiales(x) + {var + _cit_= + [0, + [0, + cst_r_gime_outre_mer_l751_1, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + 0], + _ciu_= + [0, + [0,cst_ge_l512_3_2,caml_call1(Runtime_ocaml_Runtime[17],x[3])], + _cit_], + _civ_= + [0, + [0,cst_conditions_hors_ge,caml_call1(Runtime_ocaml_Runtime[10],x[2])], + _ciu_]; + return [7, + _o_, + [0, + [0,cst_droit_ouvert,caml_call1(Runtime_ocaml_Runtime[10],x[1])], + _civ_]]} + var PrestationsFamilialesIn=[0]; + function embed_prestations_familiales_i(x) + {var + _cir_=[0,[0,cst_r_sidence_in,embed_collectivite(x[3])],0], + _cis_= + [0, + [0,cst_prestation_courante_in,embed_element_prestations_fami(x[2])], + _cir_]; + return [7, + _p_, + [0, + [0, + cst_date_courante_in, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _cis_]]} + var AllocationFamilialesAvril2008I=[0]; + function embed_allocation_familiales_av$0(param){return 0} + var EnfantLePlusAgeIn=[0]; + function embed_enfant_le_plus_age_in(x) + {return [7, + _q_, + [0, + [0, + cst_enfants_in, + caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[1])], + 0]]} + var AllocationsFamilialesIn=[0]; + function embed_allocations_familiales_i(x) + {var + _cil_= + [0, + [0, + cst_avait_enfant_charge_avant_, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _cim_= + [0, + [0, + cst_enfants_charge_in, + caml_call2(Runtime_ocaml_Runtime[18],embed_enfant,x[6])], + _cil_], + _cin_= + [0, + [0,cst_date_courante_in$0,caml_call1(Runtime_ocaml_Runtime[16],x[5])], + _cim_], + _cio_=[0,[0,cst_r_sidence_in$0,embed_collectivite(x[4])],_cin_], + _cip_= + [0, + [0, + cst_ressources_m_nage_in, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _cio_], + _ciq_= + [0, + [0, + cst_personne_charge_effective_, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _cip_]; + return [7, + _r_, + [0, + [0, + cst_personne_charge_effective_$0, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _ciq_]]} + var SmicIn=[0]; + function embed_smic_in(x) + {var _cik_=[0,[0,cst_r_sidence_in$1,embed_collectivite(x[2])],0]; + return [7, + _s_, + [0, + [0, + cst_date_courante_in$1, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _cik_]]} + var BaseMensuelleAllocationsFamili$0=[0]; + function embed_base_mensuelle_allocatio$0(x) + {return [7, + _t_, + [0, + [0, + cst_date_courante_in$2, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + 0]]} + var InterfaceAllocationsFamiliales$0=[0]; + function embed_interface_allocations_fa$0(x) + {var + _cie_= + [0, + [0, + cst_i_avait_enfant_charge_avan, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _cif_= + [0, + [0, + cst_i_personne_charge_effectiv, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _cie_], + _cig_= + [0, + [0, + cst_i_personne_charge_effectiv$0, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _cif_], + _cih_=[0,[0,cst_i_r_sidence_in,embed_collectivite(x[4])],_cig_], + _cii_= + [0, + [0, + cst_i_ressources_m_nage_in, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _cih_], + _cij_= + [0, + [0, + cst_i_enfants_in, + caml_call2(Runtime_ocaml_Runtime[18],embed_enfant_entree,x[2])], + _cii_]; + return [7, + _u_, + [0, + [0, + cst_i_date_courante_in, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _cij_]]} + function allocation_familiales_avril200(allocation_familiales_avril200) + {try + {var + _cia_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],16,0,0)}, + _cib_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_w_,1)}, + _cic_=caml_call4(Runtime_ocaml_Runtime[63],_x_,[0],_cib_,_cia_)} + catch(_cid_) + {_cid_ = caml_wrap_exception(_cid_); + if(_cid_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_v_]; + throw _cid_} + var + age_minimum_alinea_1_l521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_y_,Runtime_ocaml_Runtime[17],_cic_); + return [0,age_minimum_alinea_1_l521_3]} + function enfant_le_plus_age(enfant_le_plus_age_in) + {var enfants=enfant_le_plus_age_in[1]; + try + {var + _ch4_= + function(param) + {var + _ch8_=caml_call3(Runtime_ocaml_Runtime[57],2999,12,31), + _ch9_=caml_call1(Runtime_ocaml_Runtime[31],cst_0), + _ch__= + [0, + caml_call1(Runtime_ocaml_Runtime[46],cst_1), + _B_, + _ch9_, + _ch8_, + _A_, + 0, + 0]; + function _ch$_(potentiel_plus_age_1,potentiel_plus_age_2) + {return caml_call2 + (Runtime_ocaml_Runtime[115], + potentiel_plus_age_1[4], + potentiel_plus_age_2[4]) + ?potentiel_plus_age_1 + :potentiel_plus_age_2} + return caml_call3(Runtime_ocaml_Runtime[88],_ch$_,_ch__,enfants)}, + _ch5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C_,1)}, + _ch6_=caml_call4(Runtime_ocaml_Runtime[63],_D_,[0],_ch5_,_ch4_)} + catch(_ch7_) + {_ch7_ = caml_wrap_exception(_ch7_); + if(_ch7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_z_]; + throw _ch7_} + var + le_plus_age= + caml_call3(Runtime_ocaml_Runtime[28],_E_,embed_enfant,_ch6_); + return [0,le_plus_age]} + function smic(smic_in) + {var date_courante=smic_in[1],residence=smic_in[2]; + try + {var + _ceg_=function(param){throw Runtime_ocaml_Runtime[2]}, + _ceh_=function(param){return 0}, + _cei_= + function(param) + {function _chV_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_851)} + function _chW_(param) + {var + _chX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_G_), + _chY_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), + _chZ_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_chY_), + _ch0_=caml_call2(Runtime_ocaml_Runtime[83],_chZ_,_chX_), + _ch1_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _ch2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_ch1_), + _ch3_=caml_call2(Runtime_ocaml_Runtime[83],_ch2_,_ch0_); + return caml_call2(Runtime_ocaml_Runtime[29],_H_,_ch3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_I_,[0],_chW_,_chV_)}, + _cej_= + function(param) + {function _chy_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1127)} + function _chz_(param) + {var + _chA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_J_), + _chB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_K_), + _chC_=caml_call2(Runtime_ocaml_Runtime[84],_chB_,_chA_), + _chD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_L_), + _chE_=caml_call2(Runtime_ocaml_Runtime[84],_chD_,_chC_), + _chF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_M_), + _chG_=caml_call2(Runtime_ocaml_Runtime[84],_chF_,_chE_), + _chH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_N_), + _chI_=caml_call2(Runtime_ocaml_Runtime[84],_chH_,_chG_), + _chJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_O_), + _chK_=caml_call2(Runtime_ocaml_Runtime[84],_chJ_,_chI_), + _chL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_P_), + _chM_=caml_call2(Runtime_ocaml_Runtime[84],_chL_,_chK_), + _chN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Q_), + _chO_=caml_call2(Runtime_ocaml_Runtime[84],_chN_,_chM_), + _chP_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), + _chQ_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_chP_), + _chR_=caml_call2(Runtime_ocaml_Runtime[83],_chQ_,_chO_), + _chS_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _chT_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_chS_), + _chU_=caml_call2(Runtime_ocaml_Runtime[83],_chT_,_chR_); + return caml_call2(Runtime_ocaml_Runtime[29],_R_,_chU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_S_,[0],_chz_,_chy_)}, + _cek_= + function(param) + {function _chp_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_835)} + function _chq_(param) + {var + _chr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_T_), + _chs_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _cht_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_chs_), + _chu_=caml_call2(Runtime_ocaml_Runtime[83],_cht_,_chr_), + _chv_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), + _chw_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_chv_), + _chx_=caml_call2(Runtime_ocaml_Runtime[83],_chw_,_chu_); + return caml_call2(Runtime_ocaml_Runtime[29],_U_,_chx_)} + return caml_call4(Runtime_ocaml_Runtime[63],_V_,[0],_chq_,_chp_)}, + _cel_= + function(param) + {function _cg4_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1107)} + function _cg5_(param) + {var + _cg6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_W_), + _cg7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_X_), + _cg8_=caml_call2(Runtime_ocaml_Runtime[84],_cg7_,_cg6_), + _cg9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Y_), + _cg__=caml_call2(Runtime_ocaml_Runtime[84],_cg9_,_cg8_), + _cg$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_Z_), + _cha_=caml_call2(Runtime_ocaml_Runtime[84],_cg$_,_cg__), + _chb_=caml_call2(Runtime_ocaml_Runtime[86],residence,___), + _chc_=caml_call2(Runtime_ocaml_Runtime[84],_chb_,_cha_), + _chd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_$_), + _che_=caml_call2(Runtime_ocaml_Runtime[84],_chd_,_chc_), + _chf_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aa_), + _chg_=caml_call2(Runtime_ocaml_Runtime[84],_chf_,_che_), + _chh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ab_), + _chi_=caml_call2(Runtime_ocaml_Runtime[84],_chh_,_chg_), + _chj_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _chk_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_chj_), + _chl_=caml_call2(Runtime_ocaml_Runtime[83],_chk_,_chi_), + _chm_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), + _chn_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_chm_), + _cho_=caml_call2(Runtime_ocaml_Runtime[83],_chn_,_chl_); + return caml_call2(Runtime_ocaml_Runtime[29],_ac_,_cho_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ad_,[0],_cg5_,_cg4_)}, + _cem_= + function(param) + {function _cgV_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_819)} + function _cgW_(param) + {var + _cgX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ae_), + _cgY_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), + _cgZ_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_cgY_), + _cg0_=caml_call2(Runtime_ocaml_Runtime[83],_cgZ_,_cgX_), + _cg1_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), + _cg2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cg1_), + _cg3_=caml_call2(Runtime_ocaml_Runtime[83],_cg2_,_cg0_); + return caml_call2(Runtime_ocaml_Runtime[29],_af_,_cg3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ag_,[0],_cgW_,_cgV_)}, + _cen_= + function(param) + {function _cgy_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085)} + function _cgz_(param) + {var + _cgA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ah_), + _cgB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ai_), + _cgC_=caml_call2(Runtime_ocaml_Runtime[84],_cgB_,_cgA_), + _cgD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aj_), + _cgE_=caml_call2(Runtime_ocaml_Runtime[84],_cgD_,_cgC_), + _cgF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ak_), + _cgG_=caml_call2(Runtime_ocaml_Runtime[84],_cgF_,_cgE_), + _cgH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_al_), + _cgI_=caml_call2(Runtime_ocaml_Runtime[84],_cgH_,_cgG_), + _cgJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_am_), + _cgK_=caml_call2(Runtime_ocaml_Runtime[84],_cgJ_,_cgI_), + _cgL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_an_), + _cgM_=caml_call2(Runtime_ocaml_Runtime[84],_cgL_,_cgK_), + _cgN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ao_), + _cgO_=caml_call2(Runtime_ocaml_Runtime[84],_cgN_,_cgM_), + _cgP_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), + _cgQ_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_cgP_), + _cgR_=caml_call2(Runtime_ocaml_Runtime[83],_cgQ_,_cgO_), + _cgS_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), + _cgT_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cgS_), + _cgU_=caml_call2(Runtime_ocaml_Runtime[83],_cgT_,_cgR_); + return caml_call2(Runtime_ocaml_Runtime[29],_ap_,_cgU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aq_,[0],_cgz_,_cgy_)}, + _ceo_= + function(param) + {function _cgp_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_798)} + function _cgq_(param) + {var + _cgr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ar_), + _cgs_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), + _cgt_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_cgs_), + _cgu_=caml_call2(Runtime_ocaml_Runtime[83],_cgt_,_cgr_), + _cgv_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _cgw_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cgv_), + _cgx_=caml_call2(Runtime_ocaml_Runtime[83],_cgw_,_cgu_); + return caml_call2(Runtime_ocaml_Runtime[29],_as_,_cgx_)} + return caml_call4(Runtime_ocaml_Runtime[63],_at_,[0],_cgq_,_cgp_)}, + _cep_= + function(param) + {function _cf4_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057)} + function _cf5_(param) + {var + _cf6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_au_), + _cf7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_av_), + _cf8_=caml_call2(Runtime_ocaml_Runtime[84],_cf7_,_cf6_), + _cf9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aw_), + _cf__=caml_call2(Runtime_ocaml_Runtime[84],_cf9_,_cf8_), + _cf$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ax_), + _cga_=caml_call2(Runtime_ocaml_Runtime[84],_cf$_,_cf__), + _cgb_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ay_), + _cgc_=caml_call2(Runtime_ocaml_Runtime[84],_cgb_,_cga_), + _cgd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_az_), + _cge_=caml_call2(Runtime_ocaml_Runtime[84],_cgd_,_cgc_), + _cgf_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aA_), + _cgg_=caml_call2(Runtime_ocaml_Runtime[84],_cgf_,_cge_), + _cgh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aB_), + _cgi_=caml_call2(Runtime_ocaml_Runtime[84],_cgh_,_cgg_), + _cgj_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), + _cgk_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_cgj_), + _cgl_=caml_call2(Runtime_ocaml_Runtime[83],_cgk_,_cgi_), + _cgm_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _cgn_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cgm_), + _cgo_=caml_call2(Runtime_ocaml_Runtime[83],_cgn_,_cgl_); + return caml_call2(Runtime_ocaml_Runtime[29],_aC_,_cgo_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aD_,[0],_cf5_,_cf4_)}, + _ceq_= + function(param) + {function _cfV_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_774)} + function _cfW_(param) + {var + _cfX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aE_), + _cfY_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _cfZ_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_cfY_), + _cf0_=caml_call2(Runtime_ocaml_Runtime[83],_cfZ_,_cfX_), + _cf1_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _cf2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cf1_), + _cf3_=caml_call2(Runtime_ocaml_Runtime[83],_cf2_,_cf0_); + return caml_call2(Runtime_ocaml_Runtime[29],_aF_,_cf3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aG_,[0],_cfW_,_cfV_)}, + _cer_= + function(param) + {function _cfy_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025)} + function _cfz_(param) + {var + _cfA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aH_), + _cfB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aI_), + _cfC_=caml_call2(Runtime_ocaml_Runtime[84],_cfB_,_cfA_), + _cfD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aJ_), + _cfE_=caml_call2(Runtime_ocaml_Runtime[84],_cfD_,_cfC_), + _cfF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aK_), + _cfG_=caml_call2(Runtime_ocaml_Runtime[84],_cfF_,_cfE_), + _cfH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aL_), + _cfI_=caml_call2(Runtime_ocaml_Runtime[84],_cfH_,_cfG_), + _cfJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aM_), + _cfK_=caml_call2(Runtime_ocaml_Runtime[84],_cfJ_,_cfI_), + _cfL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aN_), + _cfM_=caml_call2(Runtime_ocaml_Runtime[84],_cfL_,_cfK_), + _cfN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aO_), + _cfO_=caml_call2(Runtime_ocaml_Runtime[84],_cfN_,_cfM_), + _cfP_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _cfQ_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_cfP_), + _cfR_=caml_call2(Runtime_ocaml_Runtime[83],_cfQ_,_cfO_), + _cfS_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _cfT_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cfS_), + _cfU_=caml_call2(Runtime_ocaml_Runtime[83],_cfT_,_cfR_); + return caml_call2(Runtime_ocaml_Runtime[29],_aP_,_cfU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aQ_,[0],_cfz_,_cfy_)}, + _ces_= + function(param) + {function _cfp_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_766)} + function _cfq_(param) + {var + _cfr_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aR_), + _cfs_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _cft_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_cfs_), + _cfu_=caml_call2(Runtime_ocaml_Runtime[83],_cft_,_cfr_), + _cfv_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _cfw_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cfv_), + _cfx_=caml_call2(Runtime_ocaml_Runtime[83],_cfw_,_cfu_); + return caml_call2(Runtime_ocaml_Runtime[29],_aS_,_cfx_)} + return caml_call4(Runtime_ocaml_Runtime[63],_aT_,[0],_cfq_,_cfp_)}, + _cet_= + function(param) + {function _ce4_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015)} + function _ce5_(param) + {var + _ce6_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aU_), + _ce7_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aV_), + _ce8_=caml_call2(Runtime_ocaml_Runtime[84],_ce7_,_ce6_), + _ce9_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aW_), + _ce__=caml_call2(Runtime_ocaml_Runtime[84],_ce9_,_ce8_), + _ce$_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aX_), + _cfa_=caml_call2(Runtime_ocaml_Runtime[84],_ce$_,_ce__), + _cfb_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aY_), + _cfc_=caml_call2(Runtime_ocaml_Runtime[84],_cfb_,_cfa_), + _cfd_=caml_call2(Runtime_ocaml_Runtime[86],residence,_aZ_), + _cfe_=caml_call2(Runtime_ocaml_Runtime[84],_cfd_,_cfc_), + _cff_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a0_), + _cfg_=caml_call2(Runtime_ocaml_Runtime[84],_cff_,_cfe_), + _cfh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a1_), + _cfi_=caml_call2(Runtime_ocaml_Runtime[84],_cfh_,_cfg_), + _cfj_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _cfk_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_cfj_), + _cfl_=caml_call2(Runtime_ocaml_Runtime[83],_cfk_,_cfi_), + _cfm_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _cfn_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cfm_), + _cfo_=caml_call2(Runtime_ocaml_Runtime[83],_cfn_,_cfl_); + return caml_call2(Runtime_ocaml_Runtime[29],_a2_,_cfo_)} + return caml_call4(Runtime_ocaml_Runtime[63],_a3_,[0],_ce5_,_ce4_)}, + _ceu_= + function(param) + {function _ceV_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_757)} + function _ceW_(param) + {var + _ceX_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a4_), + _ceY_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _ceZ_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_ceY_), + _ce0_=caml_call2(Runtime_ocaml_Runtime[83],_ceZ_,_ceX_), + _ce1_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _ce2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_ce1_), + _ce3_=caml_call2(Runtime_ocaml_Runtime[83],_ce2_,_ce0_); + return caml_call2(Runtime_ocaml_Runtime[29],_a5_,_ce3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_a6_,[0],_ceW_,_ceV_)}, + _cev_= + [0, + function(param) + {function _cey_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003)} + function _cez_(param) + {var + _ceA_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a7_), + _ceB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a8_), + _ceC_=caml_call2(Runtime_ocaml_Runtime[84],_ceB_,_ceA_), + _ceD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a9_), + _ceE_=caml_call2(Runtime_ocaml_Runtime[84],_ceD_,_ceC_), + _ceF_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a__), + _ceG_=caml_call2(Runtime_ocaml_Runtime[84],_ceF_,_ceE_), + _ceH_=caml_call2(Runtime_ocaml_Runtime[86],residence,_a$_), + _ceI_=caml_call2(Runtime_ocaml_Runtime[84],_ceH_,_ceG_), + _ceJ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ba_), + _ceK_=caml_call2(Runtime_ocaml_Runtime[84],_ceJ_,_ceI_), + _ceL_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bb_), + _ceM_=caml_call2(Runtime_ocaml_Runtime[84],_ceL_,_ceK_), + _ceN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bc_), + _ceO_=caml_call2(Runtime_ocaml_Runtime[84],_ceN_,_ceM_), + _ceP_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _ceQ_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_ceP_), + _ceR_=caml_call2(Runtime_ocaml_Runtime[83],_ceQ_,_ceO_), + _ceS_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _ceT_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_ceS_), + _ceU_=caml_call2(Runtime_ocaml_Runtime[83],_ceT_,_ceR_); + return caml_call2(Runtime_ocaml_Runtime[29],_bd_,_ceU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_be_,[0],_cez_,_cey_)}, + _ceu_, + _cet_, + _ces_, + _cer_, + _ceq_, + _cep_, + _ceo_, + _cen_, + _cem_, + _cel_, + _cek_, + _cej_, + _cei_], + _cew_=caml_call4(Runtime_ocaml_Runtime[63],_bf_,_cev_,_ceh_,_ceg_)} + catch(_cex_) + {_cex_ = caml_wrap_exception(_cex_); + if(_cex_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_F_]; + throw _cex_} + var + brut_horaire= + caml_call3 + (Runtime_ocaml_Runtime[28],_bg_,Runtime_ocaml_Runtime[13],_cew_); + return [0,brut_horaire]} + function base_mensuelle_allocations_fam(base_mensuelle_allocations_fam) + {var date_courante=base_mensuelle_allocations_fam[1]; + try + {var + _cdI_=function(param){throw Runtime_ocaml_Runtime[2]}, + _cdJ_=function(param){return 0}, + _cdK_= + function(param) + {function _cd$_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228)} + function _cea_(param) + {var + _ceb_=caml_call3(Runtime_ocaml_Runtime[57],2023,4,1), + _cec_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_ceb_), + _ced_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), + _cee_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_ced_), + _cef_=caml_call2(Runtime_ocaml_Runtime[83],_cee_,_cec_); + return caml_call2(Runtime_ocaml_Runtime[29],_bi_,_cef_)} + return caml_call4(Runtime_ocaml_Runtime[63],_bj_,[0],_cea_,_cd$_)}, + _cdL_= + function(param) + {function _cd4_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481)} + function _cd5_(param) + {var + _cd6_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), + _cd7_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_cd6_), + _cd8_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), + _cd9_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cd8_), + _cd__=caml_call2(Runtime_ocaml_Runtime[83],_cd9_,_cd7_); + return caml_call2(Runtime_ocaml_Runtime[29],_bk_,_cd__)} + return caml_call4(Runtime_ocaml_Runtime[63],_bl_,[0],_cd5_,_cd4_)}, + _cdM_= + function(param) + {function _cdX_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440)} + function _cdY_(param) + {var + _cdZ_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), + _cd0_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_cdZ_), + _cd1_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), + _cd2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cd1_), + _cd3_=caml_call2(Runtime_ocaml_Runtime[83],_cd2_,_cd0_); + return caml_call2(Runtime_ocaml_Runtime[29],_bm_,_cd3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_bn_,[0],_cdY_,_cdX_)}, + _cdN_= + [0, + function(param) + {function _cdQ_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316)} + function _cdR_(param) + {var + _cdS_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), + _cdT_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_cdS_), + _cdU_=caml_call3(Runtime_ocaml_Runtime[57],2019,4,1), + _cdV_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cdU_), + _cdW_=caml_call2(Runtime_ocaml_Runtime[83],_cdV_,_cdT_); + return caml_call2(Runtime_ocaml_Runtime[29],_bo_,_cdW_)} + return caml_call4(Runtime_ocaml_Runtime[63],_bp_,[0],_cdR_,_cdQ_)}, + _cdM_, + _cdL_, + _cdK_], + _cdO_=caml_call4(Runtime_ocaml_Runtime[63],_bq_,_cdN_,_cdJ_,_cdI_)} + catch(_cdP_) + {_cdP_ = caml_wrap_exception(_cdP_); + if(_cdP_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bh_]; + throw _cdP_} + var + montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_br_,Runtime_ocaml_Runtime[13],_cdO_); + return [0,montant]} + function prestations_familiales(prestations_familiales_in) + {var + date_courante=prestations_familiales_in[1], + residence=prestations_familiales_in[3]; + try + {var + _ccl_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],20,0,0)}, + _ccm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bt_,1)}, + _ccn_=caml_call4(Runtime_ocaml_Runtime[63],_bu_,[0],_ccm_,_ccl_)} + catch(_cdH_) + {_cdH_ = caml_wrap_exception(_cdH_); + if(_cdH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bs_]; + throw _cdH_} + var + age_l512_3_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_bv_,Runtime_ocaml_Runtime[17],_ccn_); + try + {var + _cco_=function(param){return date_courante}, + _ccp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bx_,1)}, + _ccq_=caml_call4(Runtime_ocaml_Runtime[63],_by_,[0],_ccp_,_cco_), + smic_dot_date_courante= + caml_call3 + (Runtime_ocaml_Runtime[28],_bz_,Runtime_ocaml_Runtime[16],_ccq_)} + catch(_cdG_) + {_cdG_ = caml_wrap_exception(_cdG_); + if(_cdG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bw_]; + throw _cdG_} + try + {var + _ccr_=function(param){return residence}, + _ccs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bB_,1)}, + _cct_=caml_call4(Runtime_ocaml_Runtime[63],_bC_,[0],_ccs_,_ccr_), + smic_dot_residence= + caml_call3(Runtime_ocaml_Runtime[28],_bD_,embed_collectivite,_cct_)} + catch(_cdF_) + {_cdF_ = caml_wrap_exception(_cdF_); + if(_cdF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bA_]; + throw _cdF_} + var + _ccu_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_bE_,smic), + [0,smic_dot_date_courante,smic_dot_residence]), + result=caml_call2(Runtime_ocaml_Runtime[27],_bF_,_ccu_), + smic_dot_brut_horaire=result[1]; + try + {var + _ccv_=function(param){return 0}, + _ccw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bH_,1)}, + _ccx_= + [0, + function(param) + {function _cds_(param){return 1} + function _cdt_(param) + {var + _cdu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bI_), + _cdv_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bJ_), + _cdw_=caml_call2(Runtime_ocaml_Runtime[84],_cdv_,_cdu_), + _cdx_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bK_), + _cdy_=caml_call2(Runtime_ocaml_Runtime[84],_cdx_,_cdw_), + _cdz_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bL_), + _cdA_=caml_call2(Runtime_ocaml_Runtime[84],_cdz_,_cdy_), + _cdB_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bM_), + _cdC_=caml_call2(Runtime_ocaml_Runtime[84],_cdB_,_cdA_), + _cdD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_bN_), + _cdE_=caml_call2(Runtime_ocaml_Runtime[84],_cdD_,_cdC_); + return caml_call2(Runtime_ocaml_Runtime[29],_bO_,_cdE_)} + return caml_call4(Runtime_ocaml_Runtime[63],_bP_,[0],_cdt_,_cds_)}], + _ccy_=caml_call4(Runtime_ocaml_Runtime[63],_bQ_,_ccx_,_ccw_,_ccv_)} + catch(_cdr_) + {_cdr_ = caml_wrap_exception(_cdr_); + if(_cdr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bG_]; + throw _cdr_} + var + regime_outre_mer_l751_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_bR_,Runtime_ocaml_Runtime[12],_ccy_); + try + {var + _ccz_= + function(param) + {var + _cdo_=caml_call1(Runtime_ocaml_Runtime[39],cst_169), + _cdp_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55), + _cdq_= + caml_call2 + (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_cdp_); + return caml_call2(Runtime_ocaml_Runtime[104],_cdq_,_cdo_)}, + _ccA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_bT_,1)}, + _ccB_= + [0, + function(param) + {function _cdj_(param) + {var + _cdl_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$0), + _cdm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$0), + _cdn_= + caml_call2 + (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_cdm_); + return caml_call2(Runtime_ocaml_Runtime[104],_cdn_,_cdl_)} + function _cdk_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_bU_,regime_outre_mer_l751_1)} + return caml_call4(Runtime_ocaml_Runtime[63],_bV_,[0],_cdk_,_cdj_)}], + _ccC_=caml_call4(Runtime_ocaml_Runtime[63],_bW_,_ccB_,_ccA_,_ccz_)} + catch(_cdi_) + {_cdi_ = caml_wrap_exception(_cdi_); + if(_cdi_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bS_]; + throw _cdi_} + var + plafond_l512_3_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_bX_,Runtime_ocaml_Runtime[13],_ccC_); + function _ccD_(enfant) + {try + {var + _cc6_=function(param){return 0}, + _cc7_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_bZ_,1)}, + _cc8_= + [0, + function(param) + {function _cc$_(param){return 1} + function _cda_(param) + {var + _cdb_= + caml_call2 + (Runtime_ocaml_Runtime[118],enfant[3],plafond_l512_3_2); + switch(enfant[2][0]) + {case 0:var _cdc_=0;break; + case 1:var _cdc_=0;break; + default:var _cdc_=1} + switch(enfant[2][0]) + {case 0:var _cdd_=0;break; + case 1:var _cdd_=1;break; + default:var _cdd_=0} + var _cde_=caml_call2(Runtime_ocaml_Runtime[84],_cdd_,_cdc_); + switch(enfant[2][0]) + {case 0:var _cdf_=1;break; + case 1:var _cdf_=0;break; + default:var _cdf_=0} + var + _cdg_=caml_call2(Runtime_ocaml_Runtime[84],_cdf_,_cde_), + _cdh_=caml_call2(Runtime_ocaml_Runtime[83],_cdg_,_cdb_); + return caml_call2(Runtime_ocaml_Runtime[29],_b0_,_cdh_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_b1_,[0],_cda_,_cc$_)}], + _cc9_=caml_call4(Runtime_ocaml_Runtime[63],_b2_,_cc8_,_cc7_,_cc6_); + return _cc9_} + catch(_cc__) + {_cc__ = caml_wrap_exception(_cc__); + if(_cc__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_bY_]; + throw _cc__}} + var + conditions_hors_age= + caml_call3 + (Runtime_ocaml_Runtime[28],_b3_,Runtime_ocaml_Runtime[10],_ccD_); + function _ccE_(enfant) + {try + {var + _ccF_=function(param){return 0}, + _ccG_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_b5_,1)}, + _ccH_= + [0, + function(param) + {function _ccK_(param) + {function _ccP_(param){throw Runtime_ocaml_Runtime[2]} + function _ccQ_(param){return 0} + var + _ccR_= + [0, + function(param) + {function _ccS_(param){return 1} + function _ccT_(param) + {switch(enfant[2][0]) + {case 0:var _cc3_=0;break; + case 1:var _cc3_=1;break; + default:var _cc3_=0} + switch(enfant[2][0]) + {case 0:var _cc4_=1;break; + case 1:var _cc4_=0;break; + default:var _cc4_=0} + var _cc5_=caml_call2(Runtime_ocaml_Runtime[84],_cc4_,_cc3_); + return caml_call2(Runtime_ocaml_Runtime[29],_b6_,_cc5_)} + var + _ccU_= + [0, + function(param) + {function _ccV_(param){return 1} + function _ccW_(param) + {var + _ccX_= + caml_call2(Runtime_ocaml_Runtime[94],enfant[4],age_l512_3_2), + _ccY_= + caml_call2(Runtime_ocaml_Runtime[125],_ccX_,date_courante), + _ccZ_= + caml_call2 + (Runtime_ocaml_Runtime[118],enfant[3],plafond_l512_3_2), + _cc0_=caml_call2(Runtime_ocaml_Runtime[83],_ccZ_,_ccY_); + switch(enfant[2][0]) + {case 0:var _cc1_=0;break; + case 1:var _cc1_=0;break; + default:var _cc1_=1} + var _cc2_=caml_call2(Runtime_ocaml_Runtime[83],_cc1_,_cc0_); + return caml_call2(Runtime_ocaml_Runtime[29],_b7_,_cc2_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_b8_,[0],_ccW_,_ccV_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_b9_,_ccU_,_ccT_,_ccS_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_b__,_ccR_,_ccQ_,_ccP_)} + function _ccL_(param){return 1} + var + _ccM_= + [0, + function(param) + {function _ccN_(param){return 0} + function _ccO_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_b$_,enfant[7])} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ca_,[0],_ccO_,_ccN_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cb_,_ccM_,_ccL_,_ccK_)}], + _ccI_=caml_call4(Runtime_ocaml_Runtime[63],_cc_,_ccH_,_ccG_,_ccF_); + return _ccI_} + catch(_ccJ_) + {_ccJ_ = caml_wrap_exception(_ccJ_); + if(_ccJ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_b4_]; + throw _ccJ_}} + var + droit_ouvert= + caml_call3 + (Runtime_ocaml_Runtime[28],_cd_,Runtime_ocaml_Runtime[10],_ccE_); + return [0, + droit_ouvert, + conditions_hors_age, + age_l512_3_2, + regime_outre_mer_l751_1]} + function allocations_familiales(allocations_familiales_in) + {var + personne_charge_effective_perm=allocations_familiales_in[1], + personne_charge_effective_perm$0=allocations_familiales_in[2], + ressources_menage=allocations_familiales_in[3], + residence=allocations_familiales_in[4], + date_courante=allocations_familiales_in[5], + enfants_a_charge=allocations_familiales_in[6], + avait_enfant_a_charge_avant_1e=allocations_familiales_in[7]; + function _bVU_(enfant) + {try + {var + _cbZ_=function(param){throw Runtime_ocaml_Runtime[2]}, + _cb0_=function(param){return 0}, + _cb1_= + function(param) + {function _cca_(param){return _cf_} + function _ccb_(param) + {switch(enfant[5][0]) + {case 0:var _cck_=0;break; + case 1:var _cck_=0;break; + case 2:var _cck_=1;break; + case 3:var _cck_=0;break; + default:var _cck_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cg_,_cck_)} + var + _ccc_= + [0, + function(param) + {function _ccd_(param){return _ch_} + function _cce_(param) + {switch(enfant[5][0]) + {case 0:var _ccj_=0;break; + case 1:var _ccj_=1;break; + case 2:var _ccj_=0;break; + case 3:var _ccj_=0;break; + default:var _ccj_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_ci_,_ccj_)} + var + _ccf_= + [0, + function(param) + {function _ccg_(param){return _cj_} + function _cch_(param) + {switch(enfant[5][0]) + {case 0:var _cci_=0;break; + case 1:var _cci_=0;break; + case 2:var _cci_=0;break; + case 3:var _cci_=1;break; + default:var _cci_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_ck_,_cci_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_cl_,[0],_cch_,_ccg_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cm_,_ccf_,_cce_,_ccd_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cn_,_ccc_,_ccb_,_cca_)}, + _cb2_= + function(param) + {function _cb9_(param){return _co_} + function _cb__(param) + {switch(enfant[5][0]) + {case 0:var _cb$_=0;break; + case 1:var _cb$_=0;break; + case 2:var _cb$_=0;break; + case 3:var _cb$_=0;break; + default:var _cb$_=1} + return caml_call2(Runtime_ocaml_Runtime[29],_cp_,_cb$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_cq_,[0],_cb__,_cb9_)}, + _cb3_= + [0, + function(param) + {function _cb6_(param){return _cr_} + function _cb7_(param) + {switch(enfant[5][0]) + {case 0:var _cb8_=1;break; + case 1:var _cb8_=0;break; + case 2:var _cb8_=0;break; + case 3:var _cb8_=0;break; + default:var _cb8_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cs_,_cb8_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ct_,[0],_cb7_,_cb6_)}, + _cb2_, + _cb1_], + _cb4_=caml_call4(Runtime_ocaml_Runtime[63],_cu_,_cb3_,_cb0_,_cbZ_); + return _cb4_} + catch(_cb5_) + {_cb5_ = caml_wrap_exception(_cb5_); + if(_cb5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ce_]; + throw _cb5_}} + var + prise_en_compte= + caml_call3 + (Runtime_ocaml_Runtime[28],_cv_,Runtime_ocaml_Runtime[10],_bVU_); + function _bVV_(enfant) + {try + {var + _cbB_=function(param){throw Runtime_ocaml_Runtime[2]}, + _cbC_=function(param){return 0}, + _cbD_= + function(param) + {function _cbK_(param){return _cx_} + function _cbL_(param) + {switch(enfant[5][0]) + {case 0:var _cbY_=0;break; + case 1:var _cbY_=0;break; + case 2:var _cbY_=1;break; + case 3:var _cbY_=0;break; + default:var _cbY_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cy_,_cbY_)} + var + _cbM_= + [0, + function(param) + {function _cbN_(param){return _cz_} + function _cbO_(param) + {switch(enfant[5][0]) + {case 0:var _cbX_=0;break; + case 1:var _cbX_=1;break; + case 2:var _cbX_=0;break; + case 3:var _cbX_=0;break; + default:var _cbX_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cA_,_cbX_)} + var + _cbP_= + [0, + function(param) + {function _cbQ_(param){return _cB_} + function _cbR_(param) + {switch(enfant[5][0]) + {case 0:var _cbW_=1;break; + case 1:var _cbW_=0;break; + case 2:var _cbW_=0;break; + case 3:var _cbW_=0;break; + default:var _cbW_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cC_,_cbW_)} + var + _cbS_= + [0, + function(param) + {function _cbT_(param){return _cD_} + function _cbU_(param) + {switch(enfant[5][0]) + {case 0:var _cbV_=0;break; + case 1:var _cbV_=0;break; + case 2:var _cbV_=0;break; + case 3:var _cbV_=1;break; + default:var _cbV_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_cE_,_cbV_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_cF_,[0],_cbU_,_cbT_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cG_,_cbS_,_cbR_,_cbQ_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cH_,_cbP_,_cbO_,_cbN_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_cI_,_cbM_,_cbL_,_cbK_)}, + _cbE_= + [0, + function(param) + {function _cbH_(param){return _cJ_} + function _cbI_(param) + {switch(enfant[5][0]) + {case 0:var _cbJ_=0;break; + case 1:var _cbJ_=0;break; + case 2:var _cbJ_=0;break; + case 3:var _cbJ_=0;break; + default:var _cbJ_=1} + return caml_call2(Runtime_ocaml_Runtime[29],_cK_,_cbJ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_cL_,[0],_cbI_,_cbH_)}, + _cbD_], + _cbF_=caml_call4(Runtime_ocaml_Runtime[63],_cM_,_cbE_,_cbC_,_cbB_); + return _cbF_} + catch(_cbG_) + {_cbG_ = caml_wrap_exception(_cbG_); + if(_cbG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_cw_]; + throw _cbG_}} + caml_call3 + (Runtime_ocaml_Runtime[28],_cN_,Runtime_ocaml_Runtime[10],_bVV_); + try + {var + _bVW_= + function(param){return caml_call1(Runtime_ocaml_Runtime[46],cst_3)}, + _bVX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cP_,1)}, + _bVY_=caml_call4(Runtime_ocaml_Runtime[63],_cQ_,[0],_bVX_,_bVW_)} + catch(_cbA_) + {_cbA_ = caml_wrap_exception(_cbA_); + if(_cbA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_cO_]; + throw _cbA_} + caml_call3 + (Runtime_ocaml_Runtime[28],_cR_,Runtime_ocaml_Runtime[14],_bVY_); + try + {var + _bVZ_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[46],cst_3$0)}, + _bV0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cT_,1)}, + _bV1_=caml_call4(Runtime_ocaml_Runtime[63],_cU_,[0],_bV0_,_bVZ_)} + catch(_cbz_) + {_cbz_ = caml_wrap_exception(_cbz_); + if(_cbz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_cS_]; + throw _cbz_} + var + nombre_enfants_alinea_2_l521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_cV_,Runtime_ocaml_Runtime[14],_bV1_), + _bV2_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_cW_,allocation_familiales_avril200), + 0), + result=caml_call2(Runtime_ocaml_Runtime[27],_cX_,_bV2_), + version_avril_2008_dot_age_min=result[1]; + try + {var + _bV3_=function(param){return date_courante}, + _bV4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_cZ_,1)}, + _bV5_=caml_call4(Runtime_ocaml_Runtime[63],_c0_,[0],_bV4_,_bV3_), + bmaf_dot_date_courante= + caml_call3 + (Runtime_ocaml_Runtime[28],_c1_,Runtime_ocaml_Runtime[16],_bV5_)} + catch(_cby_) + {_cby_ = caml_wrap_exception(_cby_); + if(_cby_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_cY_]; + throw _cby_} + var + _bV6_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_c2_,base_mensuelle_allocations_fam), + [0,bmaf_dot_date_courante]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_c3_,_bV6_), + bmaf_dot_montant=result$0[1]; + try + {var + _bV7_=function(param){return date_courante}, + _bV8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_c5_,1)}, + _bV9_=caml_call4(Runtime_ocaml_Runtime[63],_c6_,[0],_bV8_,_bV7_), + prestations_familiales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_c7_,Runtime_ocaml_Runtime[16],_bV9_)} + catch(_cbx_) + {_cbx_ = caml_wrap_exception(_cbx_); + if(_cbx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_c4_]; + throw _cbx_} + try + {var + _bV__=function(param){return _c9_}, + _bV$_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_c__,1)}, + _bWa_=caml_call4(Runtime_ocaml_Runtime[63],_c$_,[0],_bV$_,_bV__), + prestations_familiales_dot_pre= + caml_call3 + (Runtime_ocaml_Runtime[28], + _da_, + embed_element_prestations_fami, + _bWa_)} + catch(_cbw_) + {_cbw_ = caml_wrap_exception(_cbw_); + if(_cbw_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_c8_]; + throw _cbw_} + try + {var + _bWb_=function(param){return residence}, + _bWc_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dc_,1)}, + _bWd_=caml_call4(Runtime_ocaml_Runtime[63],_dd_,[0],_bWc_,_bWb_), + prestations_familiales_dot_res= + caml_call3(Runtime_ocaml_Runtime[28],_de_,embed_collectivite,_bWd_)} + catch(_cbv_) + {_cbv_ = caml_wrap_exception(_cbv_); + if(_cbv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_db_]; + throw _cbv_} + var + _bWe_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_df_,prestations_familiales), + [0, + prestations_familiales_dot_dat, + prestations_familiales_dot_pre, + prestations_familiales_dot_res]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_dg_,_bWe_), + prestations_familiales_dot_dro=result$1[1], + prestations_familiales_dot_con=result$1[2], + prestations_familiales_dot_age=result$1[3], + prestations_familiales_dot_reg=result$1[4]; + try + {var + _bWf_=function(param){return enfants_a_charge}, + _bWg_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_di_,1)}, + _bWh_=caml_call4(Runtime_ocaml_Runtime[63],_dj_,[0],_bWg_,_bWf_), + _bWi_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), + enfant_le_plus_age_dot_enfants= + caml_call3(Runtime_ocaml_Runtime[28],_dk_,_bWi_,_bWh_)} + catch(_cbu_) + {_cbu_ = caml_wrap_exception(_cbu_); + if(_cbu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dh_]; + throw _cbu_} + var + _bWj_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_dl_,enfant_le_plus_age), + [0,enfant_le_plus_age_dot_enfants]), + result$2=caml_call2(Runtime_ocaml_Runtime[27],_dm_,_bWj_), + enfant_le_plus_age_dot_le_plus=result$2[1]; + function _bWk_(enfant) + {try + {var + _cbj_= + function(param) + {return caml_call3(Runtime_ocaml_Runtime[60],14,0,0)}, + _cbk_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_do_,1)}, + _cbl_= + [0, + function(param) + {function _cbo_(param){return version_avril_2008_dot_age_min} + function _cbp_(param) + {var + _cbq_=caml_call3(Runtime_ocaml_Runtime[57],2008,4,30), + _cbr_=caml_call3(Runtime_ocaml_Runtime[60],11,0,0), + _cbs_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_cbr_), + _cbt_=caml_call2(Runtime_ocaml_Runtime[120],_cbs_,_cbq_); + return caml_call2(Runtime_ocaml_Runtime[29],_dp_,_cbt_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dq_,[0],_cbp_,_cbo_)}], + _cbm_=caml_call4(Runtime_ocaml_Runtime[63],_dr_,_cbl_,_cbk_,_cbj_); + return _cbm_} + catch(_cbn_) + {_cbn_ = caml_wrap_exception(_cbn_); + if(_cbn_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dn_]; + throw _cbn_}} + var + age_minimum_alinea_1_l521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_ds_,Runtime_ocaml_Runtime[10],_bWk_); + try + {var + _bWl_= + function(param) + {function _cbf_(enfant) + {var + _cbg_= + caml_call3(Runtime_ocaml_Runtime[28],_du_,embed_enfant,enfant), + _cbh_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _dv_, + prestations_familiales_dot_dro), + _cbg_), + _cbi_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _dw_, + Runtime_ocaml_Runtime[12], + _cbh_); + return caml_call2(Runtime_ocaml_Runtime[27],_dx_,_cbi_)} + return caml_call2 + (Runtime_ocaml_Runtime[90],_cbf_,enfants_a_charge)}, + _bWm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dy_,1)}, + _bWn_=caml_call4(Runtime_ocaml_Runtime[63],_dz_,[0],_bWm_,_bWl_)} + catch(_cbe_) + {_cbe_ = caml_wrap_exception(_cbe_); + if(_cbe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dt_]; + throw _cbe_} + var + _bWo_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), + enfants_a_charge_droit_ouvert_= + caml_call3(Runtime_ocaml_Runtime[28],_dA_,_bWo_,_bWn_); + function _bWp_(enfant) + {try + {var + _cba_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[86], + enfant_le_plus_age_dot_le_plus, + enfant)}, + _cbb_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_dC_,1)}, + _cbc_=caml_call4(Runtime_ocaml_Runtime[63],_dD_,[0],_cbb_,_cba_); + return _cbc_} + catch(_cbd_) + {_cbd_ = caml_wrap_exception(_cbd_); + if(_cbd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dB_]; + throw _cbd_}} + var + est_enfant_le_plus_age= + caml_call3 + (Runtime_ocaml_Runtime[28],_dE_,Runtime_ocaml_Runtime[10],_bWp_); + try + {var + _bWq_= + function(param) + {var + _ca7_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _ca8_=caml_call1(Runtime_ocaml_Runtime[69],_ca7_), + _ca9_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500), + _ca__=caml_call2(Runtime_ocaml_Runtime[104],_ca9_,_ca8_), + _ca$_=caml_call1(Runtime_ocaml_Runtime[31],cst_7830000); + return caml_call2(Runtime_ocaml_Runtime[93],_ca$_,_ca__)}, + _bWr_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dG_,1)}, + _bWs_= + [0, + function(param) + {function _caf_(param){throw Runtime_ocaml_Runtime[2]} + function _cag_(param){return 0} + function _cah_(param) + {function _caV_(param) + {var + _ca2_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _ca3_=caml_call1(Runtime_ocaml_Runtime[69],_ca2_), + _ca4_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700), + _ca5_=caml_call2(Runtime_ocaml_Runtime[104],_ca4_,_ca3_), + _ca6_=caml_call1(Runtime_ocaml_Runtime[31],cst_8155800); + return caml_call2(Runtime_ocaml_Runtime[93],_ca6_,_ca5_)} + function _caW_(param) + {var + _caX_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _caY_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_caX_), + _caZ_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _ca0_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_caZ_), + _ca1_=caml_call2(Runtime_ocaml_Runtime[83],_ca0_,_caY_); + return caml_call2(Runtime_ocaml_Runtime[29],_dH_,_ca1_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dI_,[0],_caW_,_caV_)} + function _cai_(param) + {function _caJ_(param) + {var + _caQ_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _caR_=caml_call1(Runtime_ocaml_Runtime[69],_caQ_), + _caS_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500), + _caT_=caml_call2(Runtime_ocaml_Runtime[104],_caS_,_caR_), + _caU_=caml_call1(Runtime_ocaml_Runtime[31],cst_8083100); + return caml_call2(Runtime_ocaml_Runtime[93],_caU_,_caT_)} + function _caK_(param) + {var + _caL_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _caM_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_caL_), + _caN_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _caO_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_caN_), + _caP_=caml_call2(Runtime_ocaml_Runtime[83],_caO_,_caM_); + return caml_call2(Runtime_ocaml_Runtime[29],_dJ_,_caP_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dK_,[0],_caK_,_caJ_)} + function _caj_(param) + {function _cax_(param) + {var + _caE_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _caF_=caml_call1(Runtime_ocaml_Runtime[69],_caE_), + _caG_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400), + _caH_=caml_call2(Runtime_ocaml_Runtime[104],_caG_,_caF_), + _caI_=caml_call1(Runtime_ocaml_Runtime[31],cst_7955800); + return caml_call2(Runtime_ocaml_Runtime[93],_caI_,_caH_)} + function _cay_(param) + {var + _caz_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _caA_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_caz_), + _caB_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _caC_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_caB_), + _caD_=caml_call2(Runtime_ocaml_Runtime[83],_caC_,_caA_); + return caml_call2(Runtime_ocaml_Runtime[29],_dL_,_caD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dM_,[0],_cay_,_cax_)} + var + _cak_= + [0, + function(param) + {function _cal_(param) + {var + _cas_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _cat_=caml_call1(Runtime_ocaml_Runtime[69],_cas_), + _cau_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800), + _cav_=caml_call2(Runtime_ocaml_Runtime[104],_cau_,_cat_), + _caw_=caml_call1(Runtime_ocaml_Runtime[31],cst_7877000); + return caml_call2(Runtime_ocaml_Runtime[93],_caw_,_cav_)} + function _cam_(param) + {var + _can_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _cao_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_can_), + _cap_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _caq_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_cap_), + _car_=caml_call2(Runtime_ocaml_Runtime[83],_caq_,_cao_); + return caml_call2(Runtime_ocaml_Runtime[29],_dN_,_car_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dO_,[0],_cam_,_cal_)}, + _caj_, + _cai_, + _cah_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_dP_,_cak_,_cag_,_caf_)}], + _bWt_=caml_call4(Runtime_ocaml_Runtime[63],_dQ_,_bWs_,_bWr_,_bWq_)} + catch(_cae_) + {_cae_ = caml_wrap_exception(_cae_); + if(_cae_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dF_]; + throw _cae_} + var + plafond_i_i_d521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_dR_,Runtime_ocaml_Runtime[13],_bWt_); + try + {var + _bWu_= + function(param) + {var + _b$$_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _caa_=caml_call1(Runtime_ocaml_Runtime[69],_b$$_), + _cab_=caml_call1(Runtime_ocaml_Runtime[31],cst_559500$0), + _cac_=caml_call2(Runtime_ocaml_Runtime[104],_cab_,_caa_), + _cad_=caml_call1(Runtime_ocaml_Runtime[31],cst_5595000); + return caml_call2(Runtime_ocaml_Runtime[93],_cad_,_cac_)}, + _bWv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_dT_,1)}, + _bWw_= + [0, + function(param) + {function _b$j_(param){throw Runtime_ocaml_Runtime[2]} + function _b$k_(param){return 0} + function _b$l_(param) + {function _b$Z_(param) + {var + _b$6_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$7_=caml_call1(Runtime_ocaml_Runtime[69],_b$6_), + _b$8_=caml_call1(Runtime_ocaml_Runtime[31],cst_582700$0), + _b$9_=caml_call2(Runtime_ocaml_Runtime[104],_b$8_,_b$7_), + _b$__=caml_call1(Runtime_ocaml_Runtime[31],cst_5827900); + return caml_call2(Runtime_ocaml_Runtime[93],_b$__,_b$9_)} + function _b$0_(param) + {var + _b$1_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _b$2_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b$1_), + _b$3_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _b$4_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b$3_), + _b$5_=caml_call2(Runtime_ocaml_Runtime[83],_b$4_,_b$2_); + return caml_call2(Runtime_ocaml_Runtime[29],_dU_,_b$5_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dV_,[0],_b$0_,_b$Z_)} + function _b$m_(param) + {function _b$N_(param) + {var + _b$U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$V_=caml_call1(Runtime_ocaml_Runtime[69],_b$U_), + _b$W_=caml_call1(Runtime_ocaml_Runtime[31],cst_577500$0), + _b$X_=caml_call2(Runtime_ocaml_Runtime[104],_b$W_,_b$V_), + _b$Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_5775900); + return caml_call2(Runtime_ocaml_Runtime[93],_b$Y_,_b$X_)} + function _b$O_(param) + {var + _b$P_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _b$Q_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b$P_), + _b$R_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _b$S_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b$R_), + _b$T_=caml_call2(Runtime_ocaml_Runtime[83],_b$S_,_b$Q_); + return caml_call2(Runtime_ocaml_Runtime[29],_dW_,_b$T_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dX_,[0],_b$O_,_b$N_)} + function _b$n_(param) + {function _b$B_(param) + {var + _b$I_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$J_=caml_call1(Runtime_ocaml_Runtime[69],_b$I_), + _b$K_=caml_call1(Runtime_ocaml_Runtime[31],cst_568400$0), + _b$L_=caml_call2(Runtime_ocaml_Runtime[104],_b$K_,_b$J_), + _b$M_=caml_call1(Runtime_ocaml_Runtime[31],cst_5684900); + return caml_call2(Runtime_ocaml_Runtime[93],_b$M_,_b$L_)} + function _b$C_(param) + {var + _b$D_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _b$E_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b$D_), + _b$F_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _b$G_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b$F_), + _b$H_=caml_call2(Runtime_ocaml_Runtime[83],_b$G_,_b$E_); + return caml_call2(Runtime_ocaml_Runtime[29],_dY_,_b$H_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_dZ_,[0],_b$C_,_b$B_)} + var + _b$o_= + [0, + function(param) + {function _b$p_(param) + {var + _b$w_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$x_=caml_call1(Runtime_ocaml_Runtime[69],_b$w_), + _b$y_=caml_call1(Runtime_ocaml_Runtime[31],cst_562800$0), + _b$z_=caml_call2(Runtime_ocaml_Runtime[104],_b$y_,_b$x_), + _b$A_=caml_call1(Runtime_ocaml_Runtime[31],cst_5628600); + return caml_call2(Runtime_ocaml_Runtime[93],_b$A_,_b$z_)} + function _b$q_(param) + {var + _b$r_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _b$s_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b$r_), + _b$t_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _b$u_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b$t_), + _b$v_=caml_call2(Runtime_ocaml_Runtime[83],_b$u_,_b$s_); + return caml_call2(Runtime_ocaml_Runtime[29],_d0_,_b$v_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_d1_,[0],_b$q_,_b$p_)}, + _b$n_, + _b$m_, + _b$l_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_d2_,_b$o_,_b$k_,_b$j_)}], + _bWx_=caml_call4(Runtime_ocaml_Runtime[63],_d3_,_bWw_,_bWv_,_bWu_)} + catch(_b$i_) + {_b$i_ = caml_wrap_exception(_b$i_); + if(_b$i_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_dS_]; + throw _b$i_} + var + plafond_i_d521_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_d4_,Runtime_ocaml_Runtime[13],_bWx_); + try + {var + _bWy_=function(param){return 0}, + _bWz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_d6_,1)}, + _bWA_= + [0, + function(param) + {function _b_$_(param){return 1} + function _b$a_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_d7_,1)} + var + _b$b_= + [0, + function(param) + {function _b$c_(param){return 0} + function _b$d_(param) + {var + _b$e_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$0), + _b$f_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b$g_=caml_call2(Runtime_ocaml_Runtime[86],_b$f_,_b$e_), + _b$h_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _b$g_); + return caml_call2(Runtime_ocaml_Runtime[29],_d8_,_b$h_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_d9_,[0],_b$d_,_b$c_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_d__,_b$b_,_b$a_,_b_$_)}], + _bWB_=caml_call4(Runtime_ocaml_Runtime[63],_d$_,_bWA_,_bWz_,_bWy_)} + catch(_b___) + {_b___ = caml_wrap_exception(_b___); + if(_b___ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_d5_]; + throw _b___} + var + droit_ouvert_complement= + caml_call3 + (Runtime_ocaml_Runtime[28],_ea_,Runtime_ocaml_Runtime[12],_bWB_); + function _bWC_(enfant) + {try + {var + _b_J_=function(param){return 0}, + _b_K_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_ec_,1)}, + _b_L_= + [0, + function(param) + {function _b_O_(param){return 1} + function _b_P_(param) + {var + _b_X_= + caml_call3 + (Runtime_ocaml_Runtime[28],_ed_,embed_enfant,enfant), + _b_Y_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _ee_, + prestations_familiales_dot_con), + _b_X_), + _b_Z_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ef_, + Runtime_ocaml_Runtime[12], + _b_Y_), + _b_0_=caml_call2(Runtime_ocaml_Runtime[27],_eg_,_b_Z_), + _b_1_=caml_call2(Runtime_ocaml_Runtime[83],enfant[6],_b_0_), + _b_2_=caml_call3(Runtime_ocaml_Runtime[60],0,0,365), + _b_3_= + caml_call2 + (Runtime_ocaml_Runtime[94], + enfant[4], + prestations_familiales_dot_age), + _b_4_= + caml_call2(Runtime_ocaml_Runtime[99],_b_3_,date_courante), + _b_5_=caml_call2(Runtime_ocaml_Runtime[114],_b_4_,_b_2_), + _b_6_=caml_call2(Runtime_ocaml_Runtime[83],_b_5_,_b_1_), + _b_7_=caml_call1(Runtime_ocaml_Runtime[68],enfants_a_charge), + _b_8_= + caml_call2 + (Runtime_ocaml_Runtime[126], + _b_7_, + nombre_enfants_alinea_2_l521_3), + _b_9_=caml_call2(Runtime_ocaml_Runtime[83],_b_8_,_b_6_); + return caml_call2(Runtime_ocaml_Runtime[29],_eh_,_b_9_)} + var + _b_Q_= + [0, + function(param) + {function _b_R_(param){return 0} + function _b_S_(param) + {var + _b_T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$1), + _b_U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b_V_=caml_call2(Runtime_ocaml_Runtime[86],_b_U_,_b_T_), + _b_W_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _b_V_); + return caml_call2(Runtime_ocaml_Runtime[29],_ei_,_b_W_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ej_,[0],_b_S_,_b_R_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ek_,_b_Q_,_b_P_,_b_O_)}], + _b_M_=caml_call4(Runtime_ocaml_Runtime[63],_el_,_b_L_,_b_K_,_b_J_); + return _b_M_} + catch(_b_N_) + {_b_N_ = caml_wrap_exception(_b_N_); + if(_b_N_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_eb_]; + throw _b_N_}} + var + droit_ouvert_forfaitaire= + caml_call3 + (Runtime_ocaml_Runtime[28],_em_,Runtime_ocaml_Runtime[10],_bWC_); + try + {var + _bWD_= + function(param) + {var + _b_B_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$1), + _b_C_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b_C_,_b_B_)) + {var + _b_D_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$2), + _b_E_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b_F_=caml_call2(Runtime_ocaml_Runtime[96],_b_E_,_b_D_), + _b_G_=caml_call1(Runtime_ocaml_Runtime[69],_b_F_), + _b_H_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463), + _b_I_= + caml_call2(Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_H_); + return caml_call2(Runtime_ocaml_Runtime[104],_b_I_,_b_G_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$0)}, + _bWE_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_eo_,1)}, + _bWF_=caml_call4(Runtime_ocaml_Runtime[63],_ep_,[0],_bWE_,_bWD_)} + catch(_b_A_) + {_b_A_ = caml_wrap_exception(_b_A_); + if(_b_A_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_en_]; + throw _b_A_} + var + montant_initial_base_quatrieme= + caml_call3 + (Runtime_ocaml_Runtime[28],_eq_,Runtime_ocaml_Runtime[13],_bWF_); + try + {var + _bWG_= + function(param) + {var + _b_x_=caml_call1(Runtime_ocaml_Runtime[46],cst_2), + _b_y_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b_y_,_b_x_)) + {var _b_z_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_z_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$1)}, + _bWH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_es_,1)}, + _bWI_= + [0, + function(param) + {function _b8t_(param){throw Runtime_ocaml_Runtime[2]} + function _b8u_(param){return 0} + function _b8v_(param) + {function _b_l_(param) + {var + _b_u_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$0), + _b_v_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b_v_,_b_u_)) + {var _b_w_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_143); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_w_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$2)} + function _b_m_(param) + {var + _b_n_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _b_o_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b_n_), + _b_p_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _b_q_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b_p_), + _b_r_=caml_call2(Runtime_ocaml_Runtime[83],_b_q_,_b_o_), + _b_s_=caml_call2(Runtime_ocaml_Runtime[86],residence,_et_), + _b_t_=caml_call2(Runtime_ocaml_Runtime[83],_b_s_,_b_r_); + return caml_call2(Runtime_ocaml_Runtime[29],_eu_,_b_t_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ev_,[0],_b_m_,_b_l_)} + function _b8w_(param) + {function _b9$_(param) + {var + _b_i_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$1), + _b_j_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b_j_,_b_i_)) + {var _b_k_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1259); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b_k_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$3)} + function _b_a_(param) + {var + _b_b_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _b_c_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b_b_), + _b_d_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _b_e_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b_d_), + _b_f_=caml_call2(Runtime_ocaml_Runtime[83],_b_e_,_b_c_), + _b_g_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ew_), + _b_h_=caml_call2(Runtime_ocaml_Runtime[83],_b_g_,_b_f_); + return caml_call2(Runtime_ocaml_Runtime[29],_ex_,_b_h_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ey_,[0],_b_a_,_b9$_)} + function _b8x_(param) + {function _b9Z_(param) + {var + _b98_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$2), + _b99_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b99_,_b98_)) + {var _b9__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1089); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9__)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$4)} + function _b90_(param) + {var + _b91_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _b92_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b91_), + _b93_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _b94_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b93_), + _b95_=caml_call2(Runtime_ocaml_Runtime[83],_b94_,_b92_), + _b96_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ez_), + _b97_=caml_call2(Runtime_ocaml_Runtime[83],_b96_,_b95_); + return caml_call2(Runtime_ocaml_Runtime[29],_eA_,_b97_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eB_,[0],_b90_,_b9Z_)} + function _b8y_(param) + {function _b9N_(param) + {var + _b9W_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$3), + _b9X_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b9X_,_b9W_)) + {var _b9Y_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0918); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9Y_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$5)} + function _b9O_(param) + {var + _b9P_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _b9Q_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b9P_), + _b9R_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), + _b9S_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b9R_), + _b9T_=caml_call2(Runtime_ocaml_Runtime[83],_b9S_,_b9Q_), + _b9U_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eC_), + _b9V_=caml_call2(Runtime_ocaml_Runtime[83],_b9U_,_b9T_); + return caml_call2(Runtime_ocaml_Runtime[29],_eD_,_b9V_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eE_,[0],_b9O_,_b9N_)} + function _b8z_(param) + {function _b9B_(param) + {var + _b9K_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$4), + _b9L_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b9L_,_b9K_)) + {var _b9M_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0842); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9M_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$6)} + function _b9C_(param) + {var + _b9D_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), + _b9E_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b9D_), + _b9F_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), + _b9G_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b9F_), + _b9H_=caml_call2(Runtime_ocaml_Runtime[83],_b9G_,_b9E_), + _b9I_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eF_), + _b9J_=caml_call2(Runtime_ocaml_Runtime[83],_b9I_,_b9H_); + return caml_call2(Runtime_ocaml_Runtime[29],_eG_,_b9J_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eH_,[0],_b9C_,_b9B_)} + function _b8A_(param) + {function _b9p_(param) + {var + _b9y_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$5), + _b9z_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b9z_,_b9y_)) + {var _b9A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0766); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9A_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$7)} + function _b9q_(param) + {var + _b9r_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), + _b9s_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b9r_), + _b9t_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), + _b9u_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b9t_), + _b9v_=caml_call2(Runtime_ocaml_Runtime[83],_b9u_,_b9s_), + _b9w_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eI_), + _b9x_=caml_call2(Runtime_ocaml_Runtime[83],_b9w_,_b9v_); + return caml_call2(Runtime_ocaml_Runtime[29],_eJ_,_b9x_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eK_,[0],_b9q_,_b9p_)} + function _b8B_(param) + {function _b9d_(param) + {var + _b9m_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$6), + _b9n_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b9n_,_b9m_)) + {var _b9o_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_069); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9o_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$8)} + function _b9e_(param) + {var + _b9f_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), + _b9g_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b9f_), + _b9h_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), + _b9i_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b9h_), + _b9j_=caml_call2(Runtime_ocaml_Runtime[83],_b9i_,_b9g_), + _b9k_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eL_), + _b9l_=caml_call2(Runtime_ocaml_Runtime[83],_b9k_,_b9j_); + return caml_call2(Runtime_ocaml_Runtime[29],_eM_,_b9l_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eN_,[0],_b9e_,_b9d_)} + function _b8C_(param) + {function _b83_(param) + {var + _b9a_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$7), + _b9b_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b9b_,_b9a_)) + {var _b9c_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0615); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b9c_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$9)} + function _b84_(param) + {var + _b85_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), + _b86_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b85_), + _b87_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _b88_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b87_), + _b89_=caml_call2(Runtime_ocaml_Runtime[83],_b88_,_b86_), + _b8__=caml_call2(Runtime_ocaml_Runtime[86],residence,_eO_), + _b8$_=caml_call2(Runtime_ocaml_Runtime[83],_b8__,_b89_); + return caml_call2(Runtime_ocaml_Runtime[29],_eP_,_b8$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eQ_,[0],_b84_,_b83_)} + function _b8D_(param) + {function _b8R_(param) + {var + _b80_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$8), + _b81_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b81_,_b80_)) + {var _b82_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0539); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b82_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$10)} + function _b8S_(param) + {var + _b8T_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _b8U_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b8T_), + _b8V_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _b8W_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b8V_), + _b8X_=caml_call2(Runtime_ocaml_Runtime[83],_b8W_,_b8U_), + _b8Y_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eR_), + _b8Z_=caml_call2(Runtime_ocaml_Runtime[83],_b8Y_,_b8X_); + return caml_call2(Runtime_ocaml_Runtime[29],_eS_,_b8Z_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eT_,[0],_b8S_,_b8R_)} + var + _b8E_= + [0, + function(param) + {function _b8F_(param) + {var + _b8O_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$9), + _b8P_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b8P_,_b8O_)) + {var + _b8Q_= + caml_call1(Runtime_ocaml_Runtime[39],cst_0_0463$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8Q_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$11)} + function _b8G_(param) + {var + _b8H_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _b8I_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b8H_), + _b8J_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _b8K_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b8J_), + _b8L_=caml_call2(Runtime_ocaml_Runtime[83],_b8K_,_b8I_), + _b8M_=caml_call2(Runtime_ocaml_Runtime[86],residence,_eU_), + _b8N_=caml_call2(Runtime_ocaml_Runtime[83],_b8M_,_b8L_); + return caml_call2(Runtime_ocaml_Runtime[29],_eV_,_b8N_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_eW_,[0],_b8G_,_b8F_)}, + _b8D_, + _b8C_, + _b8B_, + _b8A_, + _b8z_, + _b8y_, + _b8x_, + _b8w_, + _b8v_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_eX_,_b8E_,_b8u_,_b8t_)}], + _bWJ_=caml_call4(Runtime_ocaml_Runtime[63],_eY_,_bWI_,_bWH_,_bWG_)} + catch(_b8s_) + {_b8s_ = caml_wrap_exception(_b8s_); + if(_b8s_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_er_]; + throw _b8s_} + var + montant_initial_base_troisieme= + caml_call3 + (Runtime_ocaml_Runtime[28],_eZ_,Runtime_ocaml_Runtime[13],_bWJ_); + try + {var + _bWK_= + function(param) + {var + _b8r_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + return caml_call1(Runtime_ocaml_Runtime[69],_b8r_)}, + _bWL_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_e1_,1)}, + _bWM_=caml_call4(Runtime_ocaml_Runtime[63],_e2_,[0],_bWL_,_bWK_)} + catch(_b8q_) + {_b8q_ = caml_wrap_exception(_b8q_); + if(_b8q_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_e0_]; + throw _b8q_} + var + nombre_total_enfants= + caml_call3 + (Runtime_ocaml_Runtime[28],_e3_,Runtime_ocaml_Runtime[15],_bWM_); + try + {var + _bWN_= + function(param) + {function _b8j_(enfant) + {var + _b8n_= + caml_call3(Runtime_ocaml_Runtime[28],_e5_,embed_enfant,enfant), + _b8o_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_e6_,prise_en_compte), + _b8n_), + _b8p_= + caml_call3 + (Runtime_ocaml_Runtime[28],_e7_,embed_prise_en_compte,_b8o_), + match=caml_call2(Runtime_ocaml_Runtime[27],_e8_,_b8p_); + switch(match[0]) + {case 0:return caml_call1(Runtime_ocaml_Runtime[39],cst_1$2); + case 1:return caml_call1(Runtime_ocaml_Runtime[39],cst_0_5); + default:return caml_call1(Runtime_ocaml_Runtime[39],cst_0$12)}} + var + _b8k_= + caml_call2 + (Runtime_ocaml_Runtime[87], + _b8j_, + enfants_a_charge_droit_ouvert_), + _b8l_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$13); + function _b8m_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} + return caml_call3(Runtime_ocaml_Runtime[88],_b8m_,_b8l_,_b8k_)}, + _bWO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_e9_,1)}, + _bWP_=caml_call4(Runtime_ocaml_Runtime[63],_e__,[0],_bWO_,_bWN_)} + catch(_b8i_) + {_b8i_ = caml_wrap_exception(_b8i_); + if(_b8i_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_e4_]; + throw _b8i_} + var + nombre_moyen_enfants= + caml_call3 + (Runtime_ocaml_Runtime[28],_e$_,Runtime_ocaml_Runtime[15],_bWP_); + try + {var + _bWQ_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$14)}, + _bWR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_fb_,1)}, + _bWS_= + function(param) + {function _b8b_(param) + {var _b8h_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8h_)} + function _b8c_(param) + {var + _b8d_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$3), + _b8e_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b8f_=caml_call2(Runtime_ocaml_Runtime[86],_b8e_,_b8d_), + _b8g_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _b8f_); + return caml_call2(Runtime_ocaml_Runtime[29],_fc_,_b8g_)} + return caml_call4(Runtime_ocaml_Runtime[63],_fd_,[0],_b8c_,_b8b_)}, + _bWT_= + [0, + function(param) + {function _b5B_(param) + {var + _b7__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$15), + _b7$_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b7$_,_b7__)) + {var _b8a_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0588$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b8a_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$16)} + function _b5C_(param) + {var _b79_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fe_); + return caml_call2(Runtime_ocaml_Runtime[29],_ff_,_b79_)} + var + _b5D_= + [0, + function(param) + {function _b5E_(param){throw Runtime_ocaml_Runtime[2]} + function _b5F_(param){return 0} + function _b5G_(param) + {function _b73_(param) + {var + _b77_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$17), + _b78_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + return caml_call2(Runtime_ocaml_Runtime[121],_b78_,_b77_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_5728) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$18)} + function _b74_(param) + {var + _b75_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fg_), + _b76_= + caml_call2 + (Runtime_ocaml_Runtime[83], + _b75_, + avait_enfant_a_charge_avant_1e); + return caml_call2(Runtime_ocaml_Runtime[29],_fh_,_b76_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fi_,[0],_b74_,_b73_)} + function _b5H_(param) + {function _b7P_(param) + {var + _b70_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$19), + _b71_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b71_,_b70_)) + {var _b72_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0717); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b72_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$20)} + function _b7Q_(param) + {var + _b7R_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b7S_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _b7T_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b7S_), + _b7U_=caml_call2(Runtime_ocaml_Runtime[83],_b7T_,_b7R_), + _b7V_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _b7W_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b7V_), + _b7X_=caml_call2(Runtime_ocaml_Runtime[83],_b7W_,_b7U_), + _b7Y_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fj_), + _b7Z_=caml_call2(Runtime_ocaml_Runtime[83],_b7Y_,_b7X_); + return caml_call2(Runtime_ocaml_Runtime[29],_fk_,_b7Z_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fl_,[0],_b7Q_,_b7P_)} + function _b5I_(param) + {function _b7B_(param) + {var + _b7M_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$21), + _b7N_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b7N_,_b7M_)) + {var _b7O_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0847); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7O_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$22)} + function _b7C_(param) + {var + _b7D_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b7E_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _b7F_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b7E_), + _b7G_=caml_call2(Runtime_ocaml_Runtime[83],_b7F_,_b7D_), + _b7H_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _b7I_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b7H_), + _b7J_=caml_call2(Runtime_ocaml_Runtime[83],_b7I_,_b7G_), + _b7K_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fm_), + _b7L_=caml_call2(Runtime_ocaml_Runtime[83],_b7K_,_b7J_); + return caml_call2(Runtime_ocaml_Runtime[29],_fn_,_b7L_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fo_,[0],_b7C_,_b7B_)} + function _b5J_(param) + {function _b7n_(param) + {var + _b7y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$23), + _b7z_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b7z_,_b7y_)) + {var _b7A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0976); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7A_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$24)} + function _b7o_(param) + {var + _b7p_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b7q_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _b7r_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b7q_), + _b7s_=caml_call2(Runtime_ocaml_Runtime[83],_b7r_,_b7p_), + _b7t_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _b7u_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b7t_), + _b7v_=caml_call2(Runtime_ocaml_Runtime[83],_b7u_,_b7s_), + _b7w_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fp_), + _b7x_=caml_call2(Runtime_ocaml_Runtime[83],_b7w_,_b7v_); + return caml_call2(Runtime_ocaml_Runtime[29],_fq_,_b7x_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fr_,[0],_b7o_,_b7n_)} + function _b5K_(param) + {function _b6$_(param) + {var + _b7k_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$25), + _b7l_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b7l_,_b7k_)) + {var _b7m_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1105); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b7m_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$26)} + function _b7a_(param) + {var + _b7b_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b7c_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _b7d_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b7c_), + _b7e_=caml_call2(Runtime_ocaml_Runtime[83],_b7d_,_b7b_), + _b7f_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), + _b7g_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b7f_), + _b7h_=caml_call2(Runtime_ocaml_Runtime[83],_b7g_,_b7e_), + _b7i_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fs_), + _b7j_=caml_call2(Runtime_ocaml_Runtime[83],_b7i_,_b7h_); + return caml_call2(Runtime_ocaml_Runtime[29],_ft_,_b7j_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fu_,[0],_b7a_,_b6$_)} + function _b5L_(param) + {function _b6X_(param) + {var + _b68_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$27), + _b69_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b69_,_b68_)) + {var _b6__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1163); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6__)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$28)} + function _b6Y_(param) + {var + _b6Z_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b60_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), + _b61_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b60_), + _b62_=caml_call2(Runtime_ocaml_Runtime[83],_b61_,_b6Z_), + _b63_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), + _b64_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b63_), + _b65_=caml_call2(Runtime_ocaml_Runtime[83],_b64_,_b62_), + _b66_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fv_), + _b67_=caml_call2(Runtime_ocaml_Runtime[83],_b66_,_b65_); + return caml_call2(Runtime_ocaml_Runtime[29],_fw_,_b67_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fx_,[0],_b6Y_,_b6X_)} + function _b5M_(param) + {function _b6J_(param) + {var + _b6U_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$29), + _b6V_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b6V_,_b6U_)) + {var _b6W_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_122); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6W_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$30)} + function _b6K_(param) + {var + _b6L_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b6M_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), + _b6N_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b6M_), + _b6O_=caml_call2(Runtime_ocaml_Runtime[83],_b6N_,_b6L_), + _b6P_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), + _b6Q_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b6P_), + _b6R_=caml_call2(Runtime_ocaml_Runtime[83],_b6Q_,_b6O_), + _b6S_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fy_), + _b6T_=caml_call2(Runtime_ocaml_Runtime[83],_b6S_,_b6R_); + return caml_call2(Runtime_ocaml_Runtime[29],_fz_,_b6T_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fA_,[0],_b6K_,_b6J_)} + function _b5N_(param) + {function _b6v_(param) + {var + _b6G_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$31), + _b6H_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b6H_,_b6G_)) + {var _b6I_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1278); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6I_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$32)} + function _b6w_(param) + {var + _b6x_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b6y_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), + _b6z_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b6y_), + _b6A_=caml_call2(Runtime_ocaml_Runtime[83],_b6z_,_b6x_), + _b6B_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), + _b6C_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b6B_), + _b6D_=caml_call2(Runtime_ocaml_Runtime[83],_b6C_,_b6A_), + _b6E_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fB_), + _b6F_=caml_call2(Runtime_ocaml_Runtime[83],_b6E_,_b6D_); + return caml_call2(Runtime_ocaml_Runtime[29],_fC_,_b6F_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fD_,[0],_b6w_,_b6v_)} + function _b5O_(param) + {function _b6h_(param) + {var + _b6s_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$33), + _b6t_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b6t_,_b6s_)) + {var _b6u_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1335); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6u_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$34)} + function _b6i_(param) + {var + _b6j_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b6k_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), + _b6l_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b6k_), + _b6m_=caml_call2(Runtime_ocaml_Runtime[83],_b6l_,_b6j_), + _b6n_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _b6o_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b6n_), + _b6p_=caml_call2(Runtime_ocaml_Runtime[83],_b6o_,_b6m_), + _b6q_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fE_), + _b6r_=caml_call2(Runtime_ocaml_Runtime[83],_b6q_,_b6p_); + return caml_call2(Runtime_ocaml_Runtime[29],_fF_,_b6r_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fG_,[0],_b6i_,_b6h_)} + function _b5P_(param) + {function _b55_(param) + {var + _b6e_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$35), + _b6f_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b6f_,_b6e_)) + {var _b6g_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1393); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b6g_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$36)} + function _b56_(param) + {var + _b57_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b58_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _b59_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b58_), + _b5__=caml_call2(Runtime_ocaml_Runtime[83],_b59_,_b57_), + _b5$_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _b6a_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b5$_), + _b6b_=caml_call2(Runtime_ocaml_Runtime[83],_b6a_,_b5__), + _b6c_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fH_), + _b6d_=caml_call2(Runtime_ocaml_Runtime[83],_b6c_,_b6b_); + return caml_call2(Runtime_ocaml_Runtime[29],_fI_,_b6d_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fJ_,[0],_b56_,_b55_)} + var + _b5Q_= + [0, + function(param) + {function _b5R_(param) + {var + _b52_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$37), + _b53_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b53_,_b52_)) + {var _b54_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_145); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b54_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$38)} + function _b5S_(param) + {var + _b5T_= + caml_call1 + (Runtime_ocaml_Runtime[67],avait_enfant_a_charge_avant_1e), + _b5U_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _b5V_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b5U_), + _b5W_=caml_call2(Runtime_ocaml_Runtime[83],_b5V_,_b5T_), + _b5X_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _b5Y_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b5X_), + _b5Z_=caml_call2(Runtime_ocaml_Runtime[83],_b5Y_,_b5W_), + _b50_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fK_), + _b51_=caml_call2(Runtime_ocaml_Runtime[83],_b50_,_b5Z_); + return caml_call2(Runtime_ocaml_Runtime[29],_fL_,_b51_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fM_,[0],_b5S_,_b5R_)}, + _b5P_, + _b5O_, + _b5N_, + _b5M_, + _b5L_, + _b5K_, + _b5J_, + _b5I_, + _b5H_, + _b5G_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_fN_,_b5Q_,_b5F_,_b5E_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_fO_,_b5D_,_b5C_,_b5B_)}, + _bWS_], + _bWU_=caml_call4(Runtime_ocaml_Runtime[63],_fP_,_bWT_,_bWR_,_bWQ_)} + catch(_b5A_) + {_b5A_ = caml_wrap_exception(_b5A_); + if(_b5A_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_fa_]; + throw _b5A_} + var + montant_initial_base_premier_e= + caml_call3 + (Runtime_ocaml_Runtime[28],_fQ_,Runtime_ocaml_Runtime[13],_bWU_); + try + {var + _bWV_=function(param){return 0}, + _bWW_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_fS_,1)}, + _bWX_= + [0, + function(param) + {function _b5d_(param){return 1} + function _b5e_(param) + {var + _b5x_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$10), + _b5y_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b5z_=caml_call2(Runtime_ocaml_Runtime[126],_b5y_,_b5x_); + return caml_call2(Runtime_ocaml_Runtime[29],_fT_,_b5z_)} + var + _b5f_= + [0, + function(param) + {function _b5g_(param){throw Runtime_ocaml_Runtime[2]} + function _b5h_(param){return 0} + var + _b5i_= + [0, + function(param) + {function _b5j_(param){return 1} + function _b5k_(param) + {var + _b5t_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$4), + _b5u_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b5v_=caml_call2(Runtime_ocaml_Runtime[126],_b5u_,_b5t_), + _b5w_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _b5v_); + return caml_call2(Runtime_ocaml_Runtime[29],_fU_,_b5w_)} + var + _b5l_= + [0, + function(param) + {function _b5m_(param){return 1} + function _b5n_(param) + {var + _b5o_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$5), + _b5p_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b5q_=caml_call2(Runtime_ocaml_Runtime[126],_b5p_,_b5o_), + _b5r_=caml_call2(Runtime_ocaml_Runtime[86],residence,_fV_), + _b5s_=caml_call2(Runtime_ocaml_Runtime[83],_b5r_,_b5q_); + return caml_call2(Runtime_ocaml_Runtime[29],_fW_,_b5s_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_fX_,[0],_b5n_,_b5m_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_fY_,_b5l_,_b5k_,_b5j_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_fZ_,_b5i_,_b5h_,_b5g_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_f0_,_b5f_,_b5e_,_b5d_)}], + _bWY_=caml_call4(Runtime_ocaml_Runtime[63],_f1_,_bWX_,_bWW_,_bWV_)} + catch(_b5c_) + {_b5c_ = caml_wrap_exception(_b5c_); + if(_b5c_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_fR_]; + throw _b5c_} + var + droit_ouvert_base= + caml_call3 + (Runtime_ocaml_Runtime[28],_f2_,Runtime_ocaml_Runtime[12],_bWY_); + function _bWZ_(enfant) + {try + {var + _b4J_=function(param){return 0}, + _b4K_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_f4_,1)}, + _b4L_= + [0, + function(param) + {function _b4O_(param){return 1} + function _b4P_(param) + {var + _b42_= + caml_call3 + (Runtime_ocaml_Runtime[28],_f5_,embed_enfant,enfant), + _b43_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_f6_,age_minimum_alinea_1_l521_3), + _b42_), + _b44_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _f7_, + Runtime_ocaml_Runtime[17], + _b43_), + _b45_=caml_call2(Runtime_ocaml_Runtime[27],_f8_,_b44_), + _b46_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_b45_), + _b47_= + caml_call2(Runtime_ocaml_Runtime[120],_b46_,date_courante), + _b48_= + caml_call3 + (Runtime_ocaml_Runtime[28],_f9_,embed_enfant,enfant), + _b49_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_f__,est_enfant_le_plus_age), + _b48_), + _b4__= + caml_call3 + (Runtime_ocaml_Runtime[28], + _f$_, + Runtime_ocaml_Runtime[12], + _b49_), + _b4$_=caml_call2(Runtime_ocaml_Runtime[27],_ga_,_b4__), + _b5a_=caml_call1(Runtime_ocaml_Runtime[67],_b4$_), + _b5b_=caml_call2(Runtime_ocaml_Runtime[83],_b5a_,_b47_); + return caml_call2(Runtime_ocaml_Runtime[29],_gb_,_b5b_)} + var + _b4Q_= + [0, + function(param) + {function _b4R_(param){return 1} + function _b4S_(param) + {var + _b4T_= + caml_call3 + (Runtime_ocaml_Runtime[28],_gc_,embed_enfant,enfant), + _b4U_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_gd_,age_minimum_alinea_1_l521_3), + _b4T_), + _b4V_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ge_, + Runtime_ocaml_Runtime[17], + _b4U_), + _b4W_=caml_call2(Runtime_ocaml_Runtime[27],_gf_,_b4V_), + _b4X_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_b4W_), + _b4Y_= + caml_call2(Runtime_ocaml_Runtime[120],_b4X_,date_courante), + _b4Z_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b40_= + caml_call2 + (Runtime_ocaml_Runtime[126], + _b4Z_, + nombre_enfants_alinea_2_l521_3), + _b41_=caml_call2(Runtime_ocaml_Runtime[83],_b40_,_b4Y_); + return caml_call2(Runtime_ocaml_Runtime[29],_gg_,_b41_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gh_,[0],_b4S_,_b4R_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_gi_,_b4Q_,_b4P_,_b4O_)}], + _b4M_=caml_call4(Runtime_ocaml_Runtime[63],_gj_,_b4L_,_b4K_,_b4J_); + return _b4M_} + catch(_b4N_) + {_b4N_ = caml_wrap_exception(_b4N_); + if(_b4N_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_f3_]; + throw _b4N_}} + var + droit_ouvert_majoration= + caml_call3 + (Runtime_ocaml_Runtime[28],_gk_,Runtime_ocaml_Runtime[10],_bWZ_); + function _bW0_(allocation) + {try + {var + _b38_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$39)}, + _b39_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_gm_,1)}, + _b3__= + [0, + function(param) + {function _b4b_(param){throw Runtime_ocaml_Runtime[2]} + function _b4c_(param){return 0} + function _b4d_(param) + {function _b4u_(param) + {var + _b4C_=caml_call1(Runtime_ocaml_Runtime[39],cst_12), + _b4D_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$6), + _b4E_=caml_call2(Runtime_ocaml_Runtime[107],_b4D_,_b4C_), + _b4F_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$0), + _b4G_= + caml_call2(Runtime_ocaml_Runtime[104],allocation,_b4F_), + _b4H_= + caml_call2 + (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_b4G_), + _b4I_= + caml_call2 + (Runtime_ocaml_Runtime[98],_b4H_,ressources_menage); + return caml_call2(Runtime_ocaml_Runtime[104],_b4I_,_b4E_)} + function _b4v_(param) + {var + _b4w_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$1), + _b4x_= + caml_call2(Runtime_ocaml_Runtime[104],allocation,_b4w_), + _b4y_= + caml_call2 + (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_b4x_), + _b4z_= + caml_call2 + (Runtime_ocaml_Runtime[118],ressources_menage,_b4y_), + _b4A_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_i_d521_3), + _b4B_=caml_call2(Runtime_ocaml_Runtime[83],_b4A_,_b4z_); + return caml_call2(Runtime_ocaml_Runtime[29],_gn_,_b4B_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_go_,[0],_b4v_,_b4u_)} + var + _b4e_= + [0, + function(param) + {function _b4f_(param) + {var + _b4n_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$2), + _b4o_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$7), + _b4p_=caml_call2(Runtime_ocaml_Runtime[107],_b4o_,_b4n_), + _b4q_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$3), + _b4r_= + caml_call2(Runtime_ocaml_Runtime[104],allocation,_b4q_), + _b4s_= + caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_b4r_), + _b4t_= + caml_call2 + (Runtime_ocaml_Runtime[98],_b4s_,ressources_menage); + return caml_call2(Runtime_ocaml_Runtime[104],_b4t_,_b4p_)} + function _b4g_(param) + {var + _b4h_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$4), + _b4i_= + caml_call2(Runtime_ocaml_Runtime[104],allocation,_b4h_), + _b4j_= + caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_b4i_), + _b4k_= + caml_call2 + (Runtime_ocaml_Runtime[118],ressources_menage,_b4j_), + _b4l_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_d521_3), + _b4m_=caml_call2(Runtime_ocaml_Runtime[83],_b4l_,_b4k_); + return caml_call2(Runtime_ocaml_Runtime[29],_gp_,_b4m_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gq_,[0],_b4g_,_b4f_)}, + _b4d_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_gr_,_b4e_,_b4c_,_b4b_)}], + _b3$_=caml_call4(Runtime_ocaml_Runtime[63],_gs_,_b3__,_b39_,_b38_); + return _b3$_} + catch(_b4a_) + {_b4a_ = caml_wrap_exception(_b4a_); + if(_b4a_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_gl_]; + throw _b4a_}} + var + complement_degressif= + caml_call3 + (Runtime_ocaml_Runtime[28],_gt_,Runtime_ocaml_Runtime[10],_bW0_); + try + {var + _bW1_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bW2_=function(param){return 0}, + _bW3_= + function(param) + {function _b34_(param) + {var _b37_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_05059); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b37_)} + function _b35_(param) + {var + _b36_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gv_,_b36_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gw_,[0],_b35_,_b34_)}, + _bW4_= + function(param) + {function _b3Y_(param) + {var _b33_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_10117); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b33_)} + function _b3Z_(param) + {var + _b30_= + caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage, + plafond_i_i_d521_3), + _b31_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_d521_3), + _b32_=caml_call2(Runtime_ocaml_Runtime[83],_b31_,_b30_); + return caml_call2(Runtime_ocaml_Runtime[29],_gx_,_b32_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gy_,[0],_b3Z_,_b3Y_)}, + _bW5_= + [0, + function(param) + {function _b3U_(param) + {var _b3X_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_20234); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3X_)} + function _b3V_(param) + {var + _b3W_= + caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage, + plafond_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gz_,_b3W_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gA_,[0],_b3V_,_b3U_)}, + _bW4_, + _bW3_], + _bW6_=caml_call4(Runtime_ocaml_Runtime[63],_gB_,_bW5_,_bW2_,_bW1_)} + catch(_b3T_) + {_b3T_ = caml_wrap_exception(_b3T_); + if(_b3T_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_gu_]; + throw _b3T_} + var + montant_verse_forfaitaire_par_= + caml_call3 + (Runtime_ocaml_Runtime[28],_gC_,Runtime_ocaml_Runtime[13],_bW6_); + try + {var + _bW7_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bW8_=function(param){return 0}, + _bW9_= + function(param) + {function _b3I_(param) + {var + _b3L_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$11), + _b3M_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b3M_,_b3L_)) + {var + _b3N_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$12), + _b3O_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b3P_=caml_call2(Runtime_ocaml_Runtime[96],_b3O_,_b3N_), + _b3Q_=caml_call1(Runtime_ocaml_Runtime[69],_b3P_), + _b3R_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_1025), + _b3S_= + caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3R_); + return caml_call2(Runtime_ocaml_Runtime[104],_b3S_,_b3Q_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$40)} + function _b3J_(param) + {var + _b3K_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gE_,_b3K_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gF_,[0],_b3J_,_b3I_)}, + _bW__= + function(param) + {function _b3v_(param) + {var + _b3A_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$13), + _b3B_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b3B_,_b3A_)) + {var + _b3C_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$14), + _b3D_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b3E_=caml_call2(Runtime_ocaml_Runtime[96],_b3D_,_b3C_), + _b3F_=caml_call1(Runtime_ocaml_Runtime[69],_b3E_), + _b3G_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_205), + _b3H_= + caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3G_); + return caml_call2(Runtime_ocaml_Runtime[104],_b3H_,_b3F_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$41)} + function _b3w_(param) + {var + _b3x_= + caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage, + plafond_i_i_d521_3), + _b3y_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_d521_3), + _b3z_=caml_call2(Runtime_ocaml_Runtime[83],_b3y_,_b3x_); + return caml_call2(Runtime_ocaml_Runtime[29],_gG_,_b3z_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gH_,[0],_b3w_,_b3v_)}, + _bW$_= + [0, + function(param) + {function _b3k_(param) + {var + _b3n_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$15), + _b3o_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b3o_,_b3n_)) + {var + _b3p_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$16), + _b3q_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _b3r_=caml_call2(Runtime_ocaml_Runtime[96],_b3q_,_b3p_), + _b3s_=caml_call1(Runtime_ocaml_Runtime[69],_b3r_), + _b3t_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_41), + _b3u_= + caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3t_); + return caml_call2(Runtime_ocaml_Runtime[104],_b3u_,_b3s_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$42)} + function _b3l_(param) + {var + _b3m_= + caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage, + plafond_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gI_,_b3m_)} + return caml_call4(Runtime_ocaml_Runtime[63],_gJ_,[0],_b3l_,_b3k_)}, + _bW__, + _bW9_], + _bXa_=caml_call4(Runtime_ocaml_Runtime[63],_gK_,_bW$_,_bW8_,_bW7_)} + catch(_b3j_) + {_b3j_ = caml_wrap_exception(_b3j_); + if(_b3j_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_gD_]; + throw _b3j_} + var + montant_initial_base_troisieme$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_gL_,Runtime_ocaml_Runtime[13],_bXa_); + try + {var + _bXb_= + function(param) + {function _b2W_(param){throw Runtime_ocaml_Runtime[2]} + function _b2X_(param){return 0} + function _b2Y_(param) + {function _b3d_(param) + {var + _b3g_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$8), + _b3h_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b3h_,_b3g_)) + {var _b3i_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3i_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$43)} + function _b3e_(param) + {var + _b3f_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gN_,_b3f_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gO_,[0],_b3e_,_b3d_)} + function _b2Z_(param) + {function _b27_(param) + {var + _b3a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$9), + _b3b_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b3b_,_b3a_)) + {var _b3c_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b3c_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$44)} + function _b28_(param) + {var + _b29_= + caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage, + plafond_i_i_d521_3), + _b2__= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_d521_3), + _b2$_=caml_call2(Runtime_ocaml_Runtime[83],_b2__,_b29_); + return caml_call2(Runtime_ocaml_Runtime[29],_gP_,_b2$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gQ_,[0],_b28_,_b27_)} + var + _b20_= + [0, + function(param) + {function _b21_(param) + {var + _b24_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$10), + _b25_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b25_,_b24_)) + {var _b26_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b26_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$45)} + function _b22_(param) + {var + _b23_= + caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage, + plafond_i_d521_3); + return caml_call2(Runtime_ocaml_Runtime[29],_gR_,_b23_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gS_,[0],_b22_,_b21_)}, + _b2Z_, + _b2Y_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_gT_,_b20_,_b2X_,_b2W_)}, + _bXc_=function(param){return 1}, + _bXd_= + [0, + function(param) + {function _b0L_(param) + {var + _b2T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$11), + _b2U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b2U_,_b2T_)) + {var _b2V_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2V_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$46)} + function _b0M_(param) + {var _b2S_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gU_); + return caml_call2(Runtime_ocaml_Runtime[29],_gV_,_b2S_)} + var + _b0N_= + [0, + function(param) + {function _b0O_(param){throw Runtime_ocaml_Runtime[2]} + function _b0P_(param){return 0} + function _b0Q_(param) + {function _b2G_(param) + {var + _b2P_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$12), + _b2Q_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b2Q_,_b2P_)) + {var _b2R_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3068); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2R_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$47)} + function _b2H_(param) + {var + _b2I_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _b2J_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b2I_), + _b2K_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _b2L_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b2K_), + _b2M_=caml_call2(Runtime_ocaml_Runtime[83],_b2L_,_b2J_), + _b2N_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gW_), + _b2O_=caml_call2(Runtime_ocaml_Runtime[83],_b2N_,_b2M_); + return caml_call2(Runtime_ocaml_Runtime[29],_gX_,_b2O_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_gY_,[0],_b2H_,_b2G_)} + function _b0R_(param) + {function _b2u_(param) + {var + _b2D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$13), + _b2E_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b2E_,_b2D_)) + {var _b2F_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2936); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2F_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$48)} + function _b2v_(param) + {var + _b2w_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _b2x_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b2w_), + _b2y_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _b2z_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b2y_), + _b2A_=caml_call2(Runtime_ocaml_Runtime[83],_b2z_,_b2x_), + _b2B_=caml_call2(Runtime_ocaml_Runtime[86],residence,_gZ_), + _b2C_=caml_call2(Runtime_ocaml_Runtime[83],_b2B_,_b2A_); + return caml_call2(Runtime_ocaml_Runtime[29],_g0_,_b2C_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_g1_,[0],_b2v_,_b2u_)} + function _b0S_(param) + {function _b2i_(param) + {var + _b2r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$14), + _b2s_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b2s_,_b2r_)) + {var _b2t_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2804); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2t_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$49)} + function _b2j_(param) + {var + _b2k_=caml_call3(Runtime_ocaml_Runtime[57],2018,12,31), + _b2l_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b2k_), + _b2m_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _b2n_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b2m_), + _b2o_=caml_call2(Runtime_ocaml_Runtime[83],_b2n_,_b2l_), + _b2p_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g2_), + _b2q_=caml_call2(Runtime_ocaml_Runtime[83],_b2p_,_b2o_); + return caml_call2(Runtime_ocaml_Runtime[29],_g3_,_b2q_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_g4_,[0],_b2j_,_b2i_)} + function _b0T_(param) + {function _b18_(param) + {var + _b2f_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$15), + _b2g_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b2g_,_b2f_)) + {var _b2h_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2672); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b2h_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$50)} + function _b19_(param) + {var + _b1__=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _b1$_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b1__), + _b2a_=caml_call3(Runtime_ocaml_Runtime[57],2017,1,1), + _b2b_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b2a_), + _b2c_=caml_call2(Runtime_ocaml_Runtime[83],_b2b_,_b1$_), + _b2d_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g5_), + _b2e_=caml_call2(Runtime_ocaml_Runtime[83],_b2d_,_b2c_); + return caml_call2(Runtime_ocaml_Runtime[29],_g6_,_b2e_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_g7_,[0],_b19_,_b18_)} + function _b0U_(param) + {function _b1W_(param) + {var + _b15_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$16), + _b16_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b16_,_b15_)) + {var _b17_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2613); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b17_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$51)} + function _b1X_(param) + {var + _b1Y_=caml_call3(Runtime_ocaml_Runtime[57],2016,12,31), + _b1Z_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b1Y_), + _b10_=caml_call3(Runtime_ocaml_Runtime[57],2016,1,1), + _b11_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b10_), + _b12_=caml_call2(Runtime_ocaml_Runtime[83],_b11_,_b1Z_), + _b13_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g8_), + _b14_=caml_call2(Runtime_ocaml_Runtime[83],_b13_,_b12_); + return caml_call2(Runtime_ocaml_Runtime[29],_g9_,_b14_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_g__,[0],_b1X_,_b1W_)} + function _b0V_(param) + {function _b1K_(param) + {var + _b1T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$17), + _b1U_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b1U_,_b1T_)) + {var _b1V_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2555); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1V_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$52)} + function _b1L_(param) + {var + _b1M_=caml_call3(Runtime_ocaml_Runtime[57],2015,12,31), + _b1N_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b1M_), + _b1O_=caml_call3(Runtime_ocaml_Runtime[57],2015,1,1), + _b1P_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b1O_), + _b1Q_=caml_call2(Runtime_ocaml_Runtime[83],_b1P_,_b1N_), + _b1R_=caml_call2(Runtime_ocaml_Runtime[86],residence,_g$_), + _b1S_=caml_call2(Runtime_ocaml_Runtime[83],_b1R_,_b1Q_); + return caml_call2(Runtime_ocaml_Runtime[29],_ha_,_b1S_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hb_,[0],_b1L_,_b1K_)} + function _b0W_(param) + {function _b1y_(param) + {var + _b1H_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$18), + _b1I_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b1I_,_b1H_)) + {var _b1J_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2496); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1J_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$53)} + function _b1z_(param) + {var + _b1A_=caml_call3(Runtime_ocaml_Runtime[57],2014,12,31), + _b1B_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b1A_), + _b1C_=caml_call3(Runtime_ocaml_Runtime[57],2014,1,1), + _b1D_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b1C_), + _b1E_=caml_call2(Runtime_ocaml_Runtime[83],_b1D_,_b1B_), + _b1F_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hc_), + _b1G_=caml_call2(Runtime_ocaml_Runtime[83],_b1F_,_b1E_); + return caml_call2(Runtime_ocaml_Runtime[29],_hd_,_b1G_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_he_,[0],_b1z_,_b1y_)} + function _b0X_(param) + {function _b1m_(param) + {var + _b1v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$19), + _b1w_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b1w_,_b1v_)) + {var _b1x_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2437); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1x_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$54)} + function _b1n_(param) + {var + _b1o_=caml_call3(Runtime_ocaml_Runtime[57],2013,12,31), + _b1p_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b1o_), + _b1q_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _b1r_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b1q_), + _b1s_=caml_call2(Runtime_ocaml_Runtime[83],_b1r_,_b1p_), + _b1t_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hf_), + _b1u_=caml_call2(Runtime_ocaml_Runtime[83],_b1t_,_b1s_); + return caml_call2(Runtime_ocaml_Runtime[29],_hg_,_b1u_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hh_,[0],_b1n_,_b1m_)} + function _b0Y_(param) + {function _b1a_(param) + {var + _b1j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$20), + _b1k_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b1k_,_b1j_)) + {var _b1l_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2379); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b1l_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$55)} + function _b1b_(param) + {var + _b1c_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _b1d_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b1c_), + _b1e_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _b1f_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b1e_), + _b1g_=caml_call2(Runtime_ocaml_Runtime[83],_b1f_,_b1d_), + _b1h_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hi_), + _b1i_=caml_call2(Runtime_ocaml_Runtime[83],_b1h_,_b1g_); + return caml_call2(Runtime_ocaml_Runtime[29],_hj_,_b1i_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hk_,[0],_b1b_,_b1a_)} + var + _b0Z_= + [0, + function(param) + {function _b00_(param) + {var + _b09_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$21), + _b0__= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_); + if(caml_call2(Runtime_ocaml_Runtime[121],_b0__,_b09_)) + {var _b0$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0$_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$56)} + function _b01_(param) + {var + _b02_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _b03_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_b02_), + _b04_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _b05_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_b04_), + _b06_=caml_call2(Runtime_ocaml_Runtime[83],_b05_,_b03_), + _b07_=caml_call2(Runtime_ocaml_Runtime[86],residence,_hl_), + _b08_=caml_call2(Runtime_ocaml_Runtime[83],_b07_,_b06_); + return caml_call2(Runtime_ocaml_Runtime[29],_hm_,_b08_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hn_,[0],_b01_,_b00_)}, + _b0Y_, + _b0X_, + _b0W_, + _b0V_, + _b0U_, + _b0T_, + _b0S_, + _b0R_, + _b0Q_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ho_,_b0Z_,_b0P_,_b0O_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_hp_,_b0N_,_b0M_,_b0L_)}], + _bXe_=caml_call4(Runtime_ocaml_Runtime[63],_hq_,_bXd_,_bXc_,_bXb_)} + catch(_b0K_) + {_b0K_ = caml_wrap_exception(_b0K_); + if(_b0K_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_gM_]; + throw _b0K_} + var + montant_initial_base_deuxieme_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hr_,Runtime_ocaml_Runtime[13],_bXe_); + try + {var + _bXf_= + function(param) + {var _b0J_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$57); + return caml_call2 + (Runtime_ocaml_Runtime[86],nombre_total_enfants,_b0J_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0$58) + :caml_call2 + (Runtime_ocaml_Runtime[107], + nombre_moyen_enfants, + nombre_total_enfants)}, + _bXg_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ht_,1)}, + _bXh_=caml_call4(Runtime_ocaml_Runtime[63],_hu_,[0],_bXg_,_bXf_)} + catch(_b0I_) + {_b0I_ = caml_wrap_exception(_b0I_); + if(_b0I_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_hs_]; + throw _b0I_} + var + rapport_enfants_total_moyen= + caml_call3 + (Runtime_ocaml_Runtime[28],_hv_,Runtime_ocaml_Runtime[15],_bXh_); + function _bXi_(enfant) + {try + {var + _bZ2_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bZ3_=function(param){return 0}, + _bZ4_= + function(param) + {function _b0B_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$59)} + function _b0C_(param) + {var + _b0D_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hx_,embed_enfant,enfant), + _b0E_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hy_,droit_ouvert_majoration), + _b0D_), + _b0F_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _hz_, + Runtime_ocaml_Runtime[12], + _b0E_), + _b0G_=caml_call2(Runtime_ocaml_Runtime[27],_hA_,_b0F_), + _b0H_=caml_call1(Runtime_ocaml_Runtime[67],_b0G_); + return caml_call2(Runtime_ocaml_Runtime[29],_hB_,_b0H_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hC_,[0],_b0C_,_b0B_)}, + _bZ5_= + function(param) + {function _b0s_(param) + {var _b0A_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0A_)} + function _b0t_(param) + {var + _b0u_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hD_,embed_enfant,enfant), + _b0v_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hE_,droit_ouvert_majoration), + _b0u_), + _b0w_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _hF_, + Runtime_ocaml_Runtime[12], + _b0v_), + _b0x_=caml_call2(Runtime_ocaml_Runtime[27],_hG_,_b0w_), + _b0y_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_i_d521_3), + _b0z_=caml_call2(Runtime_ocaml_Runtime[83],_b0y_,_b0x_); + return caml_call2(Runtime_ocaml_Runtime[29],_hH_,_b0z_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hI_,[0],_b0t_,_b0s_)}, + _bZ6_= + function(param) + {function _b0h_(param) + {var _b0r_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_08$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0r_)} + function _b0i_(param) + {var + _b0j_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hJ_,embed_enfant,enfant), + _b0k_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hK_,droit_ouvert_majoration), + _b0j_), + _b0l_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _hL_, + Runtime_ocaml_Runtime[12], + _b0k_), + _b0m_=caml_call2(Runtime_ocaml_Runtime[27],_hM_,_b0l_), + _b0n_= + caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage, + plafond_i_i_d521_3), + _b0o_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_d521_3), + _b0p_=caml_call2(Runtime_ocaml_Runtime[83],_b0o_,_b0n_), + _b0q_=caml_call2(Runtime_ocaml_Runtime[83],_b0p_,_b0m_); + return caml_call2(Runtime_ocaml_Runtime[29],_hN_,_b0q_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hO_,[0],_b0i_,_b0h_)}, + _bZ7_= + [0, + function(param) + {function _bZ__(param) + {var _b0g_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_16$1); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_b0g_)} + function _bZ$_(param) + {var + _b0a_= + caml_call3 + (Runtime_ocaml_Runtime[28],_hP_,embed_enfant,enfant), + _b0b_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hQ_,droit_ouvert_majoration), + _b0a_), + _b0c_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _hR_, + Runtime_ocaml_Runtime[12], + _b0b_), + _b0d_=caml_call2(Runtime_ocaml_Runtime[27],_hS_,_b0c_), + _b0e_= + caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage, + plafond_i_d521_3), + _b0f_=caml_call2(Runtime_ocaml_Runtime[83],_b0e_,_b0d_); + return caml_call2(Runtime_ocaml_Runtime[29],_hT_,_b0f_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_hU_,[0],_bZ$_,_bZ__)}, + _bZ6_, + _bZ5_, + _bZ4_], + _bZ8_=caml_call4(Runtime_ocaml_Runtime[63],_hV_,_bZ7_,_bZ3_,_bZ2_); + return _bZ8_} + catch(_bZ9_) + {_bZ9_ = caml_wrap_exception(_bZ9_); + if(_bZ9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_hw_]; + throw _bZ9_}} + var + montant_initial_metropole_majo= + caml_call3 + (Runtime_ocaml_Runtime[28],_hW_,Runtime_ocaml_Runtime[10],_bXi_); + try + {var + _bXj_= + function(param) + {function _bZV_(enfant) + {var + _bZZ_= + caml_call3(Runtime_ocaml_Runtime[28],_hY_,embed_enfant,enfant), + _bZ0_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_hZ_,droit_ouvert_forfaitaire), + _bZZ_), + _bZ1_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _h0_, + Runtime_ocaml_Runtime[12], + _bZ0_); + return caml_call2(Runtime_ocaml_Runtime[27],_h1_,_bZ1_)} + var + _bZW_= + caml_call2(Runtime_ocaml_Runtime[90],_bZV_,enfants_a_charge), + _bZX_=caml_call1(Runtime_ocaml_Runtime[68],_bZW_), + _bZY_=caml_call1(Runtime_ocaml_Runtime[69],_bZX_); + return caml_call2 + (Runtime_ocaml_Runtime[104], + montant_verse_forfaitaire_par_, + _bZY_)}, + _bXk_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_h2_,1)}, + _bXl_=caml_call4(Runtime_ocaml_Runtime[63],_h3_,[0],_bXk_,_bXj_)} + catch(_bZU_) + {_bZU_ = caml_wrap_exception(_bZU_); + if(_bZU_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_hX_]; + throw _bZU_} + var + montant_verse_forfaitaire= + caml_call3 + (Runtime_ocaml_Runtime[28],_h4_,Runtime_ocaml_Runtime[13],_bXl_); + try + {var + _bXm_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[93], + montant_initial_base_deuxieme_, + montant_initial_base_troisieme$0)}, + _bXn_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_h6_,1)}, + _bXo_= + [0, + function(param) + {function _bZF_(param){throw Runtime_ocaml_Runtime[2]} + function _bZG_(param){return 0} + function _bZH_(param) + {function _bZP_(param) + {var + _bZS_= + caml_call2 + (Runtime_ocaml_Runtime[93], + montant_initial_base_premier_e, + montant_initial_base_deuxieme_), + _bZT_= + caml_call2 + (Runtime_ocaml_Runtime[93], + _bZS_, + montant_initial_base_troisieme); + return caml_call2 + (Runtime_ocaml_Runtime[93], + _bZT_, + montant_initial_base_quatrieme)} + function _bZQ_(param) + {var + _bZR_= + caml_call2(Runtime_ocaml_Runtime[86],residence,_h7_); + return caml_call2(Runtime_ocaml_Runtime[29],_h8_,_bZR_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_h9_,[0],_bZQ_,_bZP_)} + var + _bZI_= + [0, + function(param) + {function _bZJ_(param){return montant_initial_base_premier_e} + function _bZK_(param) + {var + _bZL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$22), + _bZM_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _bZN_=caml_call2(Runtime_ocaml_Runtime[86],_bZM_,_bZL_), + _bZO_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _bZN_); + return caml_call2(Runtime_ocaml_Runtime[29],_h__,_bZO_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_h$_,[0],_bZK_,_bZJ_)}, + _bZH_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ia_,_bZI_,_bZG_,_bZF_)}], + _bXp_=caml_call4(Runtime_ocaml_Runtime[63],_ib_,_bXo_,_bXn_,_bXm_)} + catch(_bZE_) + {_bZE_ = caml_wrap_exception(_bZE_); + if(_bZE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_h5_]; + throw _bZE_} + var + montant_initial_base= + caml_call3 + (Runtime_ocaml_Runtime[28],_ic_,Runtime_ocaml_Runtime[13],_bXp_); + function _bXq_(enfant) + {try + {var + _bYU_= + function(param) + {var + _bZB_= + caml_call3(Runtime_ocaml_Runtime[28],_ie_,embed_enfant,enfant), + _bZC_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _if_, + montant_initial_metropole_majo), + _bZB_), + _bZD_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ig_, + Runtime_ocaml_Runtime[13], + _bZC_); + return caml_call2(Runtime_ocaml_Runtime[27],_ih_,_bZD_)}, + _bYV_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_ii_,1)}, + _bYW_= + [0, + function(param) + {function _bYZ_(param){throw Runtime_ocaml_Runtime[2]} + function _bY0_(param){return 0} + function _bY1_(param) + {function _bZl_(param) + {var _bZA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0567); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_bZA_)} + function _bZm_(param) + {var + _bZn_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), + _bZo_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_bZn_), + _bZp_= + caml_call2(Runtime_ocaml_Runtime[120],_bZo_,date_courante), + _bZq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$23), + _bZr_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _bZs_=caml_call2(Runtime_ocaml_Runtime[86],_bZr_,_bZq_), + _bZt_=caml_call2(Runtime_ocaml_Runtime[83],_bZs_,_bZp_), + _bZu_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _bZt_), + _bZv_= + caml_call3 + (Runtime_ocaml_Runtime[28],_ij_,embed_enfant,enfant), + _bZw_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_ik_,droit_ouvert_majoration), + _bZv_), + _bZx_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _il_, + Runtime_ocaml_Runtime[12], + _bZw_), + _bZy_=caml_call2(Runtime_ocaml_Runtime[27],_im_,_bZx_), + _bZz_=caml_call2(Runtime_ocaml_Runtime[83],_bZy_,_bZu_); + return caml_call2(Runtime_ocaml_Runtime[29],_in_,_bZz_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_io_,[0],_bZm_,_bZl_)} + var + _bY2_= + [0, + function(param) + {function _bY3_(param) + {var _bZk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0369); + return caml_call2 + (Runtime_ocaml_Runtime[104],bmaf_dot_montant,_bZk_)} + function _bY4_(param) + {var + _bY5_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), + _bY6_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_bY5_), + _bY7_= + caml_call2(Runtime_ocaml_Runtime[125],_bY6_,date_courante), + _bY8_=caml_call3(Runtime_ocaml_Runtime[60],11,0,0), + _bY9_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_bY8_), + _bY__= + caml_call2(Runtime_ocaml_Runtime[120],_bY9_,date_courante), + _bY$_=caml_call2(Runtime_ocaml_Runtime[83],_bY__,_bY7_), + _bZa_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$24), + _bZb_= + caml_call1 + (Runtime_ocaml_Runtime[68],enfants_a_charge_droit_ouvert_), + _bZc_=caml_call2(Runtime_ocaml_Runtime[86],_bZb_,_bZa_), + _bZd_=caml_call2(Runtime_ocaml_Runtime[83],_bZc_,_bY$_), + _bZe_= + caml_call2 + (Runtime_ocaml_Runtime[83], + prestations_familiales_dot_reg, + _bZd_), + _bZf_= + caml_call3 + (Runtime_ocaml_Runtime[28],_ip_,embed_enfant,enfant), + _bZg_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_iq_,droit_ouvert_majoration), + _bZf_), + _bZh_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _ir_, + Runtime_ocaml_Runtime[12], + _bZg_), + _bZi_=caml_call2(Runtime_ocaml_Runtime[27],_is_,_bZh_), + _bZj_=caml_call2(Runtime_ocaml_Runtime[83],_bZi_,_bZe_); + return caml_call2(Runtime_ocaml_Runtime[29],_it_,_bZj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_iu_,[0],_bY4_,_bY3_)}, + _bY1_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_iv_,_bY2_,_bY0_,_bYZ_)}], + _bYX_=caml_call4(Runtime_ocaml_Runtime[63],_iw_,_bYW_,_bYV_,_bYU_); + return _bYX_} + catch(_bYY_) + {_bYY_ = caml_wrap_exception(_bYY_); + if(_bYY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_id_]; + throw _bYY_}} + var + montant_initial_majoration= + caml_call3 + (Runtime_ocaml_Runtime[28],_ix_,Runtime_ocaml_Runtime[10],_bXq_); + try + {var + _bXr_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$60)}, + _bXs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iz_,1)}, + _bXt_= + [0, + function(param) + {function _bYm_(param){throw Runtime_ocaml_Runtime[2]} + function _bYn_(param){return 0} + function _bYo_(param) + {function _bYF_(param) + {var + _bYN_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$5), + _bYO_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$25), + _bYP_=caml_call2(Runtime_ocaml_Runtime[107],_bYO_,_bYN_), + _bYQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$6), + _bYR_= + caml_call2 + (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYQ_), + _bYS_= + caml_call2 + (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_bYR_), + _bYT_= + caml_call2 + (Runtime_ocaml_Runtime[98],_bYS_,ressources_menage); + return caml_call2(Runtime_ocaml_Runtime[104],_bYT_,_bYP_)} + function _bYG_(param) + {var + _bYH_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$7), + _bYI_= + caml_call2 + (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYH_), + _bYJ_= + caml_call2 + (Runtime_ocaml_Runtime[93],plafond_i_i_d521_3,_bYI_), + _bYK_= + caml_call2 + (Runtime_ocaml_Runtime[118],ressources_menage,_bYJ_), + _bYL_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_i_d521_3), + _bYM_=caml_call2(Runtime_ocaml_Runtime[83],_bYL_,_bYK_); + return caml_call2(Runtime_ocaml_Runtime[29],_iA_,_bYM_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_iB_,[0],_bYG_,_bYF_)} + var + _bYp_= + [0, + function(param) + {function _bYq_(param) + {var + _bYy_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$8), + _bYz_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$26), + _bYA_=caml_call2(Runtime_ocaml_Runtime[107],_bYz_,_bYy_), + _bYB_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$9), + _bYC_= + caml_call2 + (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYB_), + _bYD_= + caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_bYC_), + _bYE_= + caml_call2 + (Runtime_ocaml_Runtime[98],_bYD_,ressources_menage); + return caml_call2(Runtime_ocaml_Runtime[104],_bYE_,_bYA_)} + function _bYr_(param) + {var + _bYs_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$10), + _bYt_= + caml_call2 + (Runtime_ocaml_Runtime[104],montant_verse_forfaitaire,_bYs_), + _bYu_= + caml_call2(Runtime_ocaml_Runtime[93],plafond_i_d521_3,_bYt_), + _bYv_= + caml_call2 + (Runtime_ocaml_Runtime[118],ressources_menage,_bYu_), + _bYw_= + caml_call2 + (Runtime_ocaml_Runtime[123], + ressources_menage, + plafond_i_d521_3), + _bYx_=caml_call2(Runtime_ocaml_Runtime[83],_bYw_,_bYv_); + return caml_call2(Runtime_ocaml_Runtime[29],_iC_,_bYx_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_iD_,[0],_bYr_,_bYq_)}, + _bYo_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_iE_,_bYp_,_bYn_,_bYm_)}], + _bXu_=caml_call4(Runtime_ocaml_Runtime[63],_iF_,_bXt_,_bXs_,_bXr_)} + catch(_bYl_) + {_bYl_ = caml_wrap_exception(_bYl_); + if(_bYl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_iy_]; + throw _bYl_} + var + montant_verse_complement_pour_= + caml_call3 + (Runtime_ocaml_Runtime[28],_iG_,Runtime_ocaml_Runtime[13],_bXu_); + try + {var + _bXv_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[104], + montant_initial_base, + rapport_enfants_total_moyen)}, + _bXw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iI_,1)}, + _bXx_=caml_call4(Runtime_ocaml_Runtime[63],_iJ_,[0],_bXw_,_bXv_)} + catch(_bYk_) + {_bYk_ = caml_wrap_exception(_bYk_); + if(_bYk_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_iH_]; + throw _bYk_} + var + montant_avec_garde_alternee_ba= + caml_call3 + (Runtime_ocaml_Runtime[28],_iK_,Runtime_ocaml_Runtime[13],_bXx_); + function _bXy_(enfant) + {try + {var + _bX__= + function(param) + {var + _bYc_= + caml_call3(Runtime_ocaml_Runtime[28],_iM_,embed_enfant,enfant), + _bYd_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_iN_,prise_en_compte), + _bYc_), + _bYe_= + caml_call3 + (Runtime_ocaml_Runtime[28],_iO_,embed_prise_en_compte,_bYd_), + match=caml_call2(Runtime_ocaml_Runtime[27],_iP_,_bYe_); + switch(match[0]) + {case 0: + var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$27); + break; + case 1: + var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$0); + break; + default: + var _bYf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$61)} + var + _bYg_= + caml_call3(Runtime_ocaml_Runtime[28],_iQ_,embed_enfant,enfant), + _bYh_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_iR_,montant_initial_majoration), + _bYg_), + _bYi_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _iS_, + Runtime_ocaml_Runtime[13], + _bYh_), + _bYj_=caml_call2(Runtime_ocaml_Runtime[27],_iT_,_bYi_); + return caml_call2(Runtime_ocaml_Runtime[104],_bYj_,_bYf_)}, + _bX$_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_iU_,1)}, + _bYa_=caml_call4(Runtime_ocaml_Runtime[63],_iV_,[0],_bX$_,_bX__); + return _bYa_} + catch(_bYb_) + {_bYb_ = caml_wrap_exception(_bYb_); + if(_bYb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_iL_]; + throw _bYb_}} + var + montant_avec_garde_alternee_ma= + caml_call3 + (Runtime_ocaml_Runtime[28],_iW_,Runtime_ocaml_Runtime[10],_bXy_); + try + {var + _bXz_= + function(param) + {return droit_ouvert_base + ?montant_avec_garde_alternee_ba + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$62)}, + _bXA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_iY_,1)}, + _bXB_=caml_call4(Runtime_ocaml_Runtime[63],_iZ_,[0],_bXA_,_bXz_)} + catch(_bX9_) + {_bX9_ = caml_wrap_exception(_bX9_); + if(_bX9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_iX_]; + throw _bX9_} + var + montant_verse_base= + caml_call3 + (Runtime_ocaml_Runtime[28],_i0_,Runtime_ocaml_Runtime[13],_bXB_); + try + {var + _bXC_= + function(param) + {if(droit_ouvert_base) + {var + _bX2_= + function(enfant) + {var + _bX6_= + caml_call3 + (Runtime_ocaml_Runtime[28],_i2_,embed_enfant,enfant), + _bX7_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _i3_, + montant_avec_garde_alternee_ma), + _bX6_), + _bX8_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _i4_, + Runtime_ocaml_Runtime[13], + _bX7_); + return caml_call2(Runtime_ocaml_Runtime[27],_i5_,_bX8_)}, + _bX3_= + caml_call2(Runtime_ocaml_Runtime[87],_bX2_,enfants_a_charge), + _bX4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$63), + _bX5_= + function(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[93],sum1,sum2)}; + return caml_call3(Runtime_ocaml_Runtime[88],_bX5_,_bX4_,_bX3_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$64)}, + _bXD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i6_,1)}, + _bXE_=caml_call4(Runtime_ocaml_Runtime[63],_i7_,[0],_bXD_,_bXC_)} + catch(_bX1_) + {_bX1_ = caml_wrap_exception(_bX1_); + if(_bX1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_i1_]; + throw _bX1_} + var + montant_verse_majoration= + caml_call3 + (Runtime_ocaml_Runtime[28],_i8_,Runtime_ocaml_Runtime[13],_bXE_); + try + {var + _bXF_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[93], + montant_verse_base, + montant_verse_majoration)}, + _bXG_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_i__,1)}, + _bXH_=caml_call4(Runtime_ocaml_Runtime[63],_i$_,[0],_bXG_,_bXF_)} + catch(_bX0_) + {_bX0_ = caml_wrap_exception(_bX0_); + if(_bX0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_i9_]; + throw _bX0_} + var + montant_base_complement_pour_b= + caml_call3 + (Runtime_ocaml_Runtime[28],_ja_,Runtime_ocaml_Runtime[13],_bXH_); + try + {var + _bXI_= + function(param) + {if(droit_ouvert_complement) + {var + _bXX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _jc_, + Runtime_ocaml_Runtime[13], + montant_base_complement_pour_b), + _bXY_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_jd_,complement_degressif), + _bXX_), + _bXZ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _je_, + Runtime_ocaml_Runtime[13], + _bXY_); + return caml_call2(Runtime_ocaml_Runtime[27],_jf_,_bXZ_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$65)}, + _bXJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jg_,1)}, + _bXK_=caml_call4(Runtime_ocaml_Runtime[63],_jh_,[0],_bXJ_,_bXI_)} + catch(_bXW_) + {_bXW_ = caml_wrap_exception(_bXW_); + if(_bXW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jb_]; + throw _bXW_} + var + montant_verse_complement_pour_$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_ji_,Runtime_ocaml_Runtime[13],_bXK_); + try + {var + _bXL_= + function(param) + {if(droit_ouvert_base) + {var + _bXT_= + caml_call2 + (Runtime_ocaml_Runtime[93], + montant_verse_base, + montant_verse_majoration), + _bXU_= + caml_call2 + (Runtime_ocaml_Runtime[93],_bXT_,montant_verse_forfaitaire), + _bXV_= + caml_call2 + (Runtime_ocaml_Runtime[93], + _bXU_, + montant_verse_complement_pour_$0); + return caml_call2 + (Runtime_ocaml_Runtime[93], + _bXV_, + montant_verse_complement_pour_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$66)}, + _bXM_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jk_,1)}, + _bXN_=caml_call4(Runtime_ocaml_Runtime[63],_jl_,[0],_bXM_,_bXL_)} + catch(_bXS_) + {_bXS_ = caml_wrap_exception(_bXS_); + if(_bXS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jj_]; + throw _bXS_} + var + montant_verse= + caml_call3 + (Runtime_ocaml_Runtime[28],_jm_,Runtime_ocaml_Runtime[13],_bXN_); + try + {var + _bXO_= + caml_call1(Runtime_ocaml_Runtime[67],personne_charge_effective_perm), + _bXP_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bXO_,personne_charge_effective_perm$0), + _bXQ_= + caml_call2 + (Runtime_ocaml_Runtime[84],personne_charge_effective_perm,_bXP_)} + catch(_bXR_) + {_bXR_ = caml_wrap_exception(_bXR_); + if(_bXR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jn_]; + throw _bXR_} + if(_bXQ_)return [0,montant_verse]; + throw [0,Runtime_ocaml_Runtime[3],_jo_]} + function interface_allocations_familial(interface_allocations_familial) + {var + i_date_courante=interface_allocations_familial[1], + i_enfants=interface_allocations_familial[2], + i_ressources_menage=interface_allocations_familial[3], + i_residence=interface_allocations_familial[4], + i_personne_charge_effective_pe=interface_allocations_familial[5], + i_personne_charge_effective_pe$0=interface_allocations_familial[6], + i_avait_enfant_a_charge_avant_=interface_allocations_familial[7]; + try + {var + _bUZ_= + function(param) + {function _bVJ_(enfant) + {var + _bVK_=enfant[6], + _bVL_=enfant[5], + _bVM_=enfant[4], + _bVN_=enfant[3], + _bVO_=enfant[2], + _bVP_=caml_call3(Runtime_ocaml_Runtime[60],3,0,0), + _bVQ_=caml_call2(Runtime_ocaml_Runtime[94],enfant[3],_bVP_); + if(caml_call2(Runtime_ocaml_Runtime[130],_bVQ_,i_date_courante)) + var _bVR_=_jq_; + else + var + _bVS_=caml_call3(Runtime_ocaml_Runtime[60],16,0,0), + _bVT_=caml_call2(Runtime_ocaml_Runtime[94],enfant[3],_bVS_), + _bVR_= + caml_call2(Runtime_ocaml_Runtime[130],_bVT_,i_date_courante) + ?_jr_ + :_js_; + return [0,enfant[1],_bVR_,_bVO_,_bVN_,_bVM_,_bVL_,_bVK_]} + return caml_call2(Runtime_ocaml_Runtime[87],_bVJ_,i_enfants)}, + _bU0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jt_,1)}, + _bU1_=caml_call4(Runtime_ocaml_Runtime[63],_ju_,[0],_bU0_,_bUZ_)} + catch(_bVI_) + {_bVI_ = caml_wrap_exception(_bVI_); + if(_bVI_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jp_]; + throw _bVI_} + var + _bU2_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), + enfants_a_charge=caml_call3(Runtime_ocaml_Runtime[28],_jv_,_bU2_,_bU1_); + try + {var + _bU3_=function(param){return 0}, + _bU4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jx_,1)}, + _bU5_= + [0, + function(param) + {function _bVG_(param){return 1} + function _bVH_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _jy_, + i_personne_charge_effective_pe)} + return caml_call4(Runtime_ocaml_Runtime[63],_jz_,[0],_bVH_,_bVG_)}], + _bU6_=caml_call4(Runtime_ocaml_Runtime[63],_jA_,_bU5_,_bU4_,_bU3_), + allocations_familiales_dot_per= + caml_call3 + (Runtime_ocaml_Runtime[28],_jB_,Runtime_ocaml_Runtime[12],_bU6_)} + catch(_bVF_) + {_bVF_ = caml_wrap_exception(_bVF_); + if(_bVF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jw_]; + throw _bVF_} + try + {var + _bU7_=function(param){return 0}, + _bU8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jD_,1)}, + _bU9_= + [0, + function(param) + {function _bVD_(param){return 1} + function _bVE_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _jE_, + i_personne_charge_effective_pe$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_jF_,[0],_bVE_,_bVD_)}], + _bU__=caml_call4(Runtime_ocaml_Runtime[63],_jG_,_bU9_,_bU8_,_bU7_), + allocations_familiales_dot_per$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_jH_,Runtime_ocaml_Runtime[12],_bU__)} + catch(_bVC_) + {_bVC_ = caml_wrap_exception(_bVC_); + if(_bVC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jC_]; + throw _bVC_} + try + {var + _bU$_=function(param){return i_ressources_menage}, + _bVa_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jJ_,1)}, + _bVb_=caml_call4(Runtime_ocaml_Runtime[63],_jK_,[0],_bVa_,_bU$_), + allocations_familiales_dot_res= + caml_call3 + (Runtime_ocaml_Runtime[28],_jL_,Runtime_ocaml_Runtime[13],_bVb_)} + catch(_bVB_) + {_bVB_ = caml_wrap_exception(_bVB_); + if(_bVB_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jI_]; + throw _bVB_} + try + {var + _bVc_=function(param){return i_residence}, + _bVd_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jN_,1)}, + _bVe_=caml_call4(Runtime_ocaml_Runtime[63],_jO_,[0],_bVd_,_bVc_), + allocations_familiales_dot_res$0= + caml_call3(Runtime_ocaml_Runtime[28],_jP_,embed_collectivite,_bVe_)} + catch(_bVA_) + {_bVA_ = caml_wrap_exception(_bVA_); + if(_bVA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jM_]; + throw _bVA_} + try + {var + _bVf_=function(param){return i_date_courante}, + _bVg_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jR_,1)}, + _bVh_=caml_call4(Runtime_ocaml_Runtime[63],_jS_,[0],_bVg_,_bVf_), + allocations_familiales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_jT_,Runtime_ocaml_Runtime[16],_bVh_)} + catch(_bVz_) + {_bVz_ = caml_wrap_exception(_bVz_); + if(_bVz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jQ_]; + throw _bVz_} + try + {var + _bVi_=function(param){return enfants_a_charge}, + _bVj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jV_,1)}, + _bVk_=caml_call4(Runtime_ocaml_Runtime[63],_jW_,[0],_bVj_,_bVi_), + _bVl_=caml_call1(Runtime_ocaml_Runtime[18],embed_enfant), + allocations_familiales_dot_enf= + caml_call3(Runtime_ocaml_Runtime[28],_jX_,_bVl_,_bVk_)} + catch(_bVy_) + {_bVy_ = caml_wrap_exception(_bVy_); + if(_bVy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jU_]; + throw _bVy_} + try + {var + _bVm_=function(param){return 0}, + _bVn_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_jZ_,1)}, + _bVo_= + [0, + function(param) + {function _bVw_(param){return 1} + function _bVx_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _j0_, + i_avait_enfant_a_charge_avant_)} + return caml_call4(Runtime_ocaml_Runtime[63],_j1_,[0],_bVx_,_bVw_)}], + _bVp_=caml_call4(Runtime_ocaml_Runtime[63],_j2_,_bVo_,_bVn_,_bVm_), + allocations_familiales_dot_ava= + caml_call3 + (Runtime_ocaml_Runtime[28],_j3_,Runtime_ocaml_Runtime[12],_bVp_)} + catch(_bVv_) + {_bVv_ = caml_wrap_exception(_bVv_); + if(_bVv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_jY_]; + throw _bVv_} + var + _bVq_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_j4_,allocations_familiales), + [0, + allocations_familiales_dot_per, + allocations_familiales_dot_per$0, + allocations_familiales_dot_res, + allocations_familiales_dot_res$0, + allocations_familiales_dot_dat, + allocations_familiales_dot_enf, + allocations_familiales_dot_ava]), + result=caml_call2(Runtime_ocaml_Runtime[27],_j5_,_bVq_), + allocations_familiales_dot_mon=result[1]; + try + {var + _bVr_=function(param){return allocations_familiales_dot_mon}, + _bVs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_j7_,1)}, + _bVt_=caml_call4(Runtime_ocaml_Runtime[63],_j8_,[0],_bVs_,_bVr_)} + catch(_bVu_) + {_bVu_ = caml_wrap_exception(_bVu_); + if(_bVu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_j6_]; + throw _bVu_} + var + i_montant_verse= + caml_call3 + (Runtime_ocaml_Runtime[28],_j9_,Runtime_ocaml_Runtime[13],_bVt_); + return [0,i_montant_verse]} + var + Law_source_Allocations_familia= + [0, + PriseEnCharge, + embed_prise_en_charge, + SituationObligationScolaire, + embed_situation_obligation_sco, + PriseEnCompte, + embed_prise_en_compte, + VersementAllocations, + embed_versement_allocations, + ElementPrestationsFamiliales, + embed_element_prestations_fami, + Collectivite, + embed_collectivite, + AllocationFamilialesAvril2008, + embed_allocation_familiales_av, + AllocationsFamiliales, + embed_allocations_familiales, + Smic, + embed_smic, + BaseMensuelleAllocationsFamili, + embed_base_mensuelle_allocatio, + InterfaceAllocationsFamiliales, + embed_interface_allocations_fa, + EnfantEntree, + embed_enfant_entree, + Enfant, + embed_enfant, + EnfantLePlusAge, + embed_enfant_le_plus_age, + PrestationsFamiliales, + embed_prestations_familiales, + PrestationsFamilialesIn, + embed_prestations_familiales_i, + AllocationFamilialesAvril2008I, + embed_allocation_familiales_av$0, + EnfantLePlusAgeIn, + embed_enfant_le_plus_age_in, + AllocationsFamilialesIn, + embed_allocations_familiales_i, + SmicIn, + embed_smic_in, + BaseMensuelleAllocationsFamili$0, + embed_base_mensuelle_allocatio$0, + InterfaceAllocationsFamiliales$0, + embed_interface_allocations_fa$0, + allocation_familiales_avril200, + enfant_le_plus_age, + smic, + base_mensuelle_allocations_fam, + prestations_familiales, + allocations_familiales, + interface_allocations_familial]; + caml_register_global + (8568, + Law_source_Allocations_familia, + "Law_source__Allocations_familiales"); + function prise_en_charge_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"GardeAlterneePartageAllocations","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"EffectiveEtPermanente","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"ServicesSociauxAllocationVerseeALaFamille", + "payload":arg$2}; + default: + var arg$3=param[1]; + return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux", + "payload":arg$3}}} + function prise_en_charge_of_jsoo(prise_en_charge) + {var cons=caml_string_of_jsstring(prise_en_charge.kind); + if(caml_string_notequal(cons,cst_EffectiveEtPermanente$0)) + {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn)) + {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca)) + {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$1)) + {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$2)) + {var _bUY_=caml_call2(Stdlib_Printf[4],_j__,cons); + return caml_call1(Stdlib[2],_bUY_)} + return _j$_} + return _ka_} + return _kb_} + return _kc_} + return _kd_} + function situation_obligation_scolaire_(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0}; + default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}} + function situation_obligation_scolaire_$0(situation_obligation_scolaire) + {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind); + if(caml_string_notequal(cons,cst_Apres)) + {if(caml_string_notequal(cons,cst_Avant$0)) + {if(caml_string_notequal(cons,cst_Pendant$0)) + {var _bUX_=caml_call2(Stdlib_Printf[4],_ke_,cons); + return caml_call1(Stdlib[2],_bUX_)} + return _kf_} + return _kg_} + return _kh_} + function prise_en_compte_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Complete","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Partagee","payload":arg$0}; + default:var arg$1=param[1];return {"kind":"Zero","payload":arg$1}}} + function prise_en_compte_of_jsoo(prise_en_compte) + {var cons=caml_string_of_jsstring(prise_en_compte.kind); + if(caml_string_notequal(cons,cst_Complete)) + {if(caml_string_notequal(cons,cst_Partagee)) + {if(caml_string_notequal(cons,cst_Zero)) + {var _bUW_=caml_call2(Stdlib_Printf[4],_ki_,cons); + return caml_call1(Stdlib[2],_bUW_)} + return _kj_} + return _kk_} + return _kl_} + function versement_allocations_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"Normal","payload":arg}} + var arg$0=param[1]; + return {"kind":"AllocationVerseeAuxServicesSociaux","payload":arg$0}} + function versement_allocations_of_jsoo(versement_allocations) + {var cons=caml_string_of_jsstring(versement_allocations.kind); + if(caml_string_notequal(cons,cst_AllocationVerseeAuxService)) + {if(caml_string_notequal(cons,cst_Normal$0)) + {var _bUV_=caml_call2(Stdlib_Printf[4],_km_,cons); + return caml_call1(Stdlib[2],_bUV_)} + return _kn_} + return _ko_} + function element_prestations_familiales(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"PrestationAccueilJeuneEnfant","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"AllocationsFamiliales","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"ComplementFamilial","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"AllocationLogement","payload":arg$2}; + case 4: + var arg$3=param[1]; + return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3}; + case 5: + var arg$4=param[1]; + return {"kind":"AllocationSoutienFamilial","payload":arg$4}; + case 6: + var arg$5=param[1]; + return {"kind":"AllocationRentreeScolaire","payload":arg$5}; + default: + var arg$6=param[1]; + return {"kind":"AllocationJournalierePresenceParentale", + "payload":arg$6}}} + function element_prestations_familiales$0(element_prestations_familiales) + {var cons=caml_string_of_jsstring(element_prestations_familiales.kind); + if(caml_string_notequal(cons,cst_AllocationEducationEnfantH)) + {if(caml_string_notequal(cons,cst_AllocationJournalierePrese)) + {if(caml_string_notequal(cons,cst_AllocationLogement$0)) + {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire)) + {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$0)) + {if(caml_string_notequal(cons,cst_AllocationsFamiliales$0)) + {if(caml_string_notequal(cons,cst_ComplementFamilial)) + {if + (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$0)) + {var _bUU_=caml_call2(Stdlib_Printf[4],_kp_,cons); + return caml_call1(Stdlib[2],_bUU_)} + return _kq_} + return _kr_} + return _ks_} + return _kt_} + return _ku_} + return _kv_} + return _kw_} + return _kx_} + function collectivite_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0}; + case 2: + var arg$1=param[1];return {"kind":"Martinique","payload":arg$1}; + case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2}; + case 4: + var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3}; + case 5: + var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4}; + case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5}; + case 7: + var arg$6=param[1]; + return {"kind":"SaintPierreEtMiquelon","payload":arg$6}; + default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}} + function collectivite_of_jsoo(collectivite) + {var cons=caml_string_of_jsstring(collectivite.kind); + if(caml_string_notequal(cons,cst_Guadeloupe$0)) + {if(caml_string_notequal(cons,cst_Guyane$0)) + {if(caml_string_notequal(cons,cst_LaReunion)) + {if(caml_string_notequal(cons,cst_Martinique$0)) + {if(caml_string_notequal(cons,cst_Mayotte$0)) + {if(caml_string_notequal(cons,cst_Metropole)) + {if(caml_string_notequal(cons,cst_SaintBarthelemy)) + {if(caml_string_notequal(cons,cst_SaintMartin$0)) + {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$0)) + {var _bUT_=caml_call2(Stdlib_Printf[4],_ky_,cons); + return caml_call1(Stdlib[2],_bUT_)} + return _kz_} + return _kA_} + return _kB_} + return _kC_} + return _kD_} + return _kE_} + return _kF_} + return _kG_} + return _kH_} + function allocation_familiales_avril200$0(allocation_familiales_avril200) + {var + t66= + caml_call1(Runtime_jsoo_Runtime[3],allocation_familiales_avril200[1]); + return {"ageMinimumAlinea1L5213":t66}} + function allocation_familiales_avril200$1(allocation_familiales_avril200) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[2], + allocation_familiales_avril200.ageMinimumAlinea1L5213)]} + function allocations_familiales_to_jsoo(allocations_familiales) + {var t68=caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales[1]); + return {"montantVerse":t68}} + function allocations_familiales_of_jsoo(allocations_familiales) + {var + _bUS_= + caml_call1 + (Runtime_ocaml_Runtime[42],allocations_familiales.montantVerse); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUS_)]} + function smic_to_jsoo(smic) + {var t70=caml_call1(Runtime_ocaml_Runtime[35],smic[1]); + return {"brutHoraire":t70}} + function smic_of_jsoo(smic) + {var _bUR_=caml_call1(Runtime_ocaml_Runtime[42],smic.brutHoraire); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUR_)]} + function base_mensuelle_allocations_fam$0(base_mensuelle_allocations_fam) + {var + t72= + caml_call1 + (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]); + return {"montant":t72}} + function base_mensuelle_allocations_fam$1(base_mensuelle_allocations_fam) + {var + _bUQ_= + caml_call1 + (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montant); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUQ_)]} + function interface_allocations_familial$0(interface_allocations_familial) + {var + t74= + caml_call1 + (Runtime_ocaml_Runtime[35],interface_allocations_familial[1]); + return {"iMontantVerse":t74}} + function interface_allocations_familial$1(interface_allocations_familial) + {var + _bUP_= + caml_call1 + (Runtime_ocaml_Runtime[42], + interface_allocations_familial.iMontantVerse); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_bUP_)]} + function enfant_entree_to_jsoo(enfant_entree) + {var + t81=! ! enfant_entree[6], + t80=! ! enfant_entree[5], + t79=prise_en_charge_to_jsoo(enfant_entree[4]), + t78=caml_call1(Runtime_jsoo_Runtime[5],enfant_entree[3]), + t77=caml_call1(Runtime_ocaml_Runtime[35],enfant_entree[2]), + t76=caml_call1(Runtime_ocaml_Runtime[48],enfant_entree[1]); + return {"dIdentifiant":t76, + "dRemunerationMensuelle":t77, + "dDateDeNaissance":t78, + "dPriseEnCharge":t79, + "dADejaOuvertDroitAuxAllocationsFamiliales":t80, + "dBeneficieTitrePersonnelAidePersonnelleLogement":t81}} + function enfant_entree_of_jsoo(enfant_entree) + {var + _bUJ_=enfant_entree.dBeneficieTitrePersonnelAidePersonnelleLogement | 0, + _bUK_=enfant_entree.dADejaOuvertDroitAuxAllocationsFamiliales | 0, + _bUL_=prise_en_charge_of_jsoo(enfant_entree.dPriseEnCharge), + _bUM_= + caml_call1(Runtime_jsoo_Runtime[4],enfant_entree.dDateDeNaissance), + _bUN_= + caml_call1 + (Runtime_ocaml_Runtime[42],enfant_entree.dRemunerationMensuelle), + _bUO_=caml_call1(Runtime_ocaml_Runtime[33],_bUN_); + return [0, + caml_call1(Runtime_ocaml_Runtime[49],enfant_entree.dIdentifiant), + _bUO_, + _bUM_, + _bUL_, + _bUK_, + _bUJ_]} + function enfant_to_jsoo(enfant) + {var + t94=! ! enfant[7], + t93=! ! enfant[6], + t92=prise_en_charge_to_jsoo(enfant[5]), + t91=caml_call1(Runtime_jsoo_Runtime[5],enfant[4]), + t90=caml_call1(Runtime_ocaml_Runtime[35],enfant[3]), + t89=situation_obligation_scolaire_(enfant[2]), + t88=caml_call1(Runtime_ocaml_Runtime[48],enfant[1]); + return {"identifiant":t88, + "obligationScolaire":t89, + "remunerationMensuelle":t90, + "dateDeNaissance":t91, + "priseEnCharge":t92, + "aDejaOuvertDroitAuxAllocationsFamiliales":t93, + "beneficieTitrePersonnelAidePersonnelleLogement":t94}} + function enfant_of_jsoo(enfant) + {var + _bUC_=enfant.beneficieTitrePersonnelAidePersonnelleLogement | 0, + _bUD_=enfant.aDejaOuvertDroitAuxAllocationsFamiliales | 0, + _bUE_=prise_en_charge_of_jsoo(enfant.priseEnCharge), + _bUF_=caml_call1(Runtime_jsoo_Runtime[4],enfant.dateDeNaissance), + _bUG_= + caml_call1(Runtime_ocaml_Runtime[42],enfant.remunerationMensuelle), + _bUH_=caml_call1(Runtime_ocaml_Runtime[33],_bUG_), + _bUI_=situation_obligation_scolaire_$0(enfant.obligationScolaire); + return [0, + caml_call1(Runtime_ocaml_Runtime[49],enfant.identifiant), + _bUI_, + _bUH_, + _bUF_, + _bUE_, + _bUD_, + _bUC_]} + function enfant_le_plus_age_to_jsoo(enfant_le_plus_age) + {var t102=enfant_to_jsoo(enfant_le_plus_age[1]); + return {"lePlusAge":t102}} + function enfant_le_plus_age_of_jsoo(enfant_le_plus_age) + {return [0,enfant_of_jsoo(enfant_le_plus_age.lePlusAge)]} + function prestations_familiales_to_jsoo(prestations_familiales) + {var + t107=! ! prestations_familiales[4], + t106=caml_call1(Runtime_jsoo_Runtime[3],prestations_familiales[3]); + function t105(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var _bUB_=enfant_of_jsoo(function_input0); + return ! ! caml_call1(prestations_familiales[2],_bUB_)})} + function t104(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var _bUA_=enfant_of_jsoo(function_input0); + return ! ! caml_call1(prestations_familiales[1],_bUA_)})} + return {"droitOuvert":caml_js_wrap_meth_callback(t104), + "conditionsHorsAge":caml_js_wrap_meth_callback(t105), + "ageL51232":t106, + "regimeOutreMerL7511":t107}} + function prestations_familiales_of_jsoo(prestations_familiales) + {var + _bUx_=prestations_familiales.regimeOutreMerL7511 | 0, + _bUy_= + caml_call1(Runtime_jsoo_Runtime[2],prestations_familiales.ageL51232), + _bUz_=caml_call1(Stdlib[2],cst_The_function_conditions_ho); + return [0, + caml_call1(Stdlib[2],cst_The_function_droit_ouvert_), + _bUz_, + _bUy_, + _bUx_]} + function prestations_familiales_in_to_j(prestations_familiales_in) + {var + t112=collectivite_to_jsoo(prestations_familiales_in[3]), + t111=element_prestations_familiales(prestations_familiales_in[2]), + t110=caml_call1(Runtime_jsoo_Runtime[5],prestations_familiales_in[1]); + return {"dateCouranteIn":t110, + "prestationCouranteIn":t111, + "residenceIn":t112}} + function prestations_familiales_in_of_j(prestations_familiales_in) + {var + _bUv_=collectivite_of_jsoo(prestations_familiales_in.residenceIn), + _bUw_= + element_prestations_familiales$0 + (prestations_familiales_in.prestationCouranteIn); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + prestations_familiales_in.dateCouranteIn), + _bUw_, + _bUv_]} + function allocation_familiales_avril200$2(param){return {}} + function allocation_familiales_avril200$3(param){return 0} + function enfant_le_plus_age_in_to_jsoo(enfant_le_plus_age_in) + {var _bUt_=enfant_le_plus_age_in[1]; + function _bUu_(x){return enfant_to_jsoo(x)} + var t116=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUu_,_bUt_)); + return {"enfantsIn":t116}} + function enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in) + {var _bUr_=caml_js_to_array(enfant_le_plus_age_in.enfantsIn); + function _bUs_(x){return enfant_of_jsoo(x)} + return [0,caml_call1(caml_call1(Stdlib_Array[15],_bUs_),_bUr_)]} + function allocations_familiales_in_to_j(allocations_familiales_in) + {var + t124=! ! allocations_familiales_in[7], + _bUp_=allocations_familiales_in[6]; + function _bUq_(x){return enfant_to_jsoo(x)} + var + t123=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUq_,_bUp_)), + t122=caml_call1(Runtime_jsoo_Runtime[5],allocations_familiales_in[5]), + t121=collectivite_to_jsoo(allocations_familiales_in[4]), + t120=caml_call1(Runtime_ocaml_Runtime[35],allocations_familiales_in[3]), + t119=! ! allocations_familiales_in[2], + t118=! ! allocations_familiales_in[1]; + return {"personneChargeEffectivePermanenteEstParentIn":t118, + "personneChargeEffectivePermanenteRemplitTitreIIn":t119, + "ressourcesMenageIn":t120, + "residenceIn":t121, + "dateCouranteIn":t122, + "enfantsAChargeIn":t123, + "avaitEnfantAChargeAvant1erJanvier2012In":t124}} + function allocations_familiales_in_of_j(allocations_familiales_in) + {var + _bUh_= + allocations_familiales_in.avaitEnfantAChargeAvant1erJanvier2012In + | + 0, + _bUi_=caml_js_to_array(allocations_familiales_in.enfantsAChargeIn); + function _bUj_(x){return enfant_of_jsoo(x)} + var + _bUk_=caml_call1(caml_call1(Stdlib_Array[15],_bUj_),_bUi_), + _bUl_= + caml_call1 + (Runtime_jsoo_Runtime[4],allocations_familiales_in.dateCouranteIn), + _bUm_=collectivite_of_jsoo(allocations_familiales_in.residenceIn), + _bUn_= + caml_call1 + (Runtime_ocaml_Runtime[42], + allocations_familiales_in.ressourcesMenageIn), + _bUo_=caml_call1(Runtime_ocaml_Runtime[33],_bUn_); + return [0, + allocations_familiales_in.personneChargeEffectivePermanenteEstParentIn + | + 0, + allocations_familiales_in.personneChargeEffectivePermanenteRemplitTitreIIn + | + 0, + _bUo_, + _bUm_, + _bUl_, + _bUk_, + _bUh_]} + function smic_in_to_jsoo(smic_in) + {var + t133=collectivite_to_jsoo(smic_in[2]), + t132=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]); + return {"dateCouranteIn":t132,"residenceIn":t133}} + function smic_in_of_jsoo(smic_in) + {var _bUg_=collectivite_of_jsoo(smic_in.residenceIn); + return [0, + caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn), + _bUg_]} + function base_mensuelle_allocations_fam$2(base_mensuelle_allocations_fam) + {var + t136= + caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]); + return {"dateCouranteIn":t136}} + function base_mensuelle_allocations_fam$3(base_mensuelle_allocations_fam) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + base_mensuelle_allocations_fam.dateCouranteIn)]} + function interface_allocations_familial$2(interface_allocations_familial) + {var + t144=! ! interface_allocations_familial[7], + t143=! ! interface_allocations_familial[6], + t142=! ! interface_allocations_familial[5], + t141=collectivite_to_jsoo(interface_allocations_familial[4]), + t140= + caml_call1 + (Runtime_ocaml_Runtime[35],interface_allocations_familial[3]), + _bUe_=interface_allocations_familial[2]; + function _bUf_(x){return enfant_entree_to_jsoo(x)} + var + t139=caml_js_from_array(caml_call2(Stdlib_Array[15],_bUf_,_bUe_)), + t138= + caml_call1(Runtime_jsoo_Runtime[5],interface_allocations_familial[1]); + return {"iDateCouranteIn":t138, + "iEnfantsIn":t139, + "iRessourcesMenageIn":t140, + "iResidenceIn":t141, + "iPersonneChargeEffectivePermanenteEstParentIn":t142, + "iPersonneChargeEffectivePermanenteRemplitTitreIIn":t143, + "iAvaitEnfantAChargeAvant1erJanvier2012In":t144}} + function interface_allocations_familial$3(interface_allocations_familial) + {var + _bT7_= + interface_allocations_familial.iAvaitEnfantAChargeAvant1erJanvier2012In + | + 0, + _bT8_= + interface_allocations_familial.iPersonneChargeEffectivePermanenteRemplitTitreIIn + | + 0, + _bT9_= + interface_allocations_familial.iPersonneChargeEffectivePermanenteEstParentIn + | + 0, + _bT__=collectivite_of_jsoo(interface_allocations_familial.iResidenceIn), + _bT$_= + caml_call1 + (Runtime_ocaml_Runtime[42], + interface_allocations_familial.iRessourcesMenageIn), + _bUa_=caml_call1(Runtime_ocaml_Runtime[33],_bT$_), + _bUb_=caml_js_to_array(interface_allocations_familial.iEnfantsIn); + function _bUc_(x){return enfant_entree_of_jsoo(x)} + var _bUd_=caml_call1(caml_call1(Stdlib_Array[15],_bUc_),_bUb_); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + interface_allocations_familial.iDateCouranteIn), + _bUd_, + _bUa_, + _bT__, + _bT9_, + _bT8_, + _bT7_]} + function allocation_familiales_avril200$4 + (allocation_familiales_avril200$1) + {return allocation_familiales_avril200$0 + (allocation_familiales_avril200(0))} + function enfant_le_plus_age$0(enfant_le_plus_age_in) + {return enfant_le_plus_age_to_jsoo + (enfant_le_plus_age + (enfant_le_plus_age_in_of_jsoo(enfant_le_plus_age_in)))} + function smic$0(smic_in) + {return smic_to_jsoo(smic(smic_in_of_jsoo(smic_in)))} + function base_mensuelle_allocations_fam$4 + (base_mensuelle_allocations_fam$1) + {return base_mensuelle_allocations_fam$0 + (base_mensuelle_allocations_fam + (base_mensuelle_allocations_fam$3 + (base_mensuelle_allocations_fam$1)))} + function prestations_familiales$0(prestations_familiales_in) + {return prestations_familiales_to_jsoo + (prestations_familiales + (prestations_familiales_in_of_j(prestations_familiales_in)))} + function allocations_familiales$0(allocations_familiales_in) + {return allocations_familiales_to_jsoo + (allocations_familiales + (allocations_familiales_in_of_j(allocations_familiales_in)))} + function interface_allocations_familial$4 + (interface_allocations_familial$1) + {return interface_allocations_familial$0 + (interface_allocations_familial + (interface_allocations_familial$3 + (interface_allocations_familial$1)))} + function t158(param) + {return caml_js_wrap_callback(interface_allocations_familial$4)} + function t157(param) + {return caml_js_wrap_callback(allocations_familiales$0)} + function t156(param) + {return caml_js_wrap_callback(prestations_familiales$0)} + function t155(param) + {return caml_js_wrap_callback(base_mensuelle_allocations_fam$4)} + function t154(param){return caml_js_wrap_callback(smic$0)} + function t153(param){return caml_js_wrap_callback(enfant_le_plus_age$0)} + function t152(param) + {return caml_js_wrap_callback(allocation_familiales_avril200$4)} + caml_call2 + (Js_of_ocaml_Js[46], + cst_AllocationsFamilialesLib, + {"allocationFamilialesAvril2008":caml_js_wrap_meth_callback(t152), + "enfantLePlusAge":caml_js_wrap_meth_callback(t153), + "smic":caml_js_wrap_meth_callback(t154), + "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t155), + "prestationsFamiliales":caml_js_wrap_meth_callback(t156), + "allocationsFamiliales":caml_js_wrap_meth_callback(t157), + "interfaceAllocationsFamiliales":caml_js_wrap_meth_callback(t158)}); + var + Law_source_Allocations_familia$0= + [0, + prise_en_charge_to_jsoo, + prise_en_charge_of_jsoo, + situation_obligation_scolaire_, + situation_obligation_scolaire_$0, + prise_en_compte_to_jsoo, + prise_en_compte_of_jsoo, + versement_allocations_to_jsoo, + versement_allocations_of_jsoo, + element_prestations_familiales, + element_prestations_familiales$0, + collectivite_to_jsoo, + collectivite_of_jsoo, + allocation_familiales_avril200$0, + allocation_familiales_avril200$1, + allocations_familiales_to_jsoo, + allocations_familiales_of_jsoo, + smic_to_jsoo, + smic_of_jsoo, + base_mensuelle_allocations_fam$0, + base_mensuelle_allocations_fam$1, + interface_allocations_familial$0, + interface_allocations_familial$1, + enfant_entree_to_jsoo, + enfant_entree_of_jsoo, + enfant_to_jsoo, + enfant_of_jsoo, + enfant_le_plus_age_to_jsoo, + enfant_le_plus_age_of_jsoo, + prestations_familiales_to_jsoo, + prestations_familiales_of_jsoo, + prestations_familiales_in_to_j, + prestations_familiales_in_of_j, + allocation_familiales_avril200$2, + allocation_familiales_avril200$3, + enfant_le_plus_age_in_to_jsoo, + enfant_le_plus_age_in_of_jsoo, + allocations_familiales_in_to_j, + allocations_familiales_in_of_j, + smic_in_to_jsoo, + smic_in_of_jsoo, + base_mensuelle_allocations_fam$2, + base_mensuelle_allocations_fam$3, + interface_allocations_familial$2, + interface_allocations_familial$3, + allocation_familiales_avril200$4, + enfant_le_plus_age$0, + smic$0, + base_mensuelle_allocations_fam$4, + prestations_familiales$0, + allocations_familiales$0, + interface_allocations_familial$4]; + caml_register_global + (8575, + Law_source_Allocations_familia$0, + "Law_source__Allocations_familiales_api_web"); + var TypePret=[0]; + function embed_type_pret(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bT6_=[0,cst_D331_32,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bT6_=[0,cst_D331_63_64,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bT6_=[0,cst_D331_59_8,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bT6_=[0,cst_D331_76_1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + default: + var + x$4=x[1], + _bT6_=[0,cst_Autre,caml_call1(Runtime_ocaml_Runtime[11],x$4)]} + return [6,_kI_,_bT6_]} + var TitulairePret=[0]; + function embed_titulaire_pret(x) + {if(0 === x[0]) + var + x$0=x[1], + _bT5_=[0,cst_Demandeur,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bT5_= + [0, + cst_VendeurQuandDemandeurACont, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kJ_,_bT5_]} + var TypeTravauxLogementD83215=[0]; + function embed_type_travaux_logement_d8(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bT4_= + [0, + cst_TravauxPourAcquisitionD832, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bT4_= + [0, + cst_TravauxSurLogementD_j_Acqu, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bT4_=[0,cst_PasDeTravaux,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kK_,_bT4_]} + var TypeTravauxLogementR8425=[0]; + function embed_type_travaux_logement_r8(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bT3_= + [0, + cst_ObjectifD_cenceLogement, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bT3_= + [0, + cst_Pr_vuDansListeR321_15, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bT3_= + [0, + cst_AgrandirOuRendreHabitableD, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + default: + var + x$3=x[1], + _bT3_= + [0,cst_PasDeTravaux$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} + return [6,_kL_,_bT3_]} + var AmelioreParOccupant=[0]; + function embed_ameliore_par_occupant(x) + {if(0 === x[0]) + var + x$0=x[1], + _bT2_=[0,cst_Oui,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bT2_=[0,cst_Non,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kM_,_bT2_]} + var LimiteTranche=[0]; + function embed_limite_tranche(x) + {if(0 === x[0]) + var + x$0=x[1], + _bT1_=[0,cst_Revenu,caml_call1(Runtime_ocaml_Runtime[13],x$0)]; + else + var + x$1=x[1], + _bT1_=[0,cst_Infini,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kN_,_bT1_]} + var LimiteTrancheDecimal=[0]; + function embed_limite_tranche_decimal(x) + {if(0 === x[0]) + var + x$0=x[1], + _bT0_=[0,cst_Revenu$0,caml_call1(Runtime_ocaml_Runtime[15],x$0)]; + else + var + x$1=x[1], + _bT0_=[0,cst_Infini$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kO_,_bT0_]} + var PrestationRecue=[0]; + function embed_prestation_recue(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTZ_= + [0, + cst_AllocationsFamiliales$1, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTZ_= + [0, + cst_Compl_mentFamilial$0, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTZ_= + [0, + cst_AllocationJeuneEnfant, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTZ_= + [0, + cst_AllocationSoutienFamilial$1, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _bTZ_= + [0, + cst_AllocationSoutienEnfantHan, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + default: + var + x$5=x[1], + _bTZ_= + [0, + cst_AllocationAdulteHandicap, + caml_call1(Runtime_ocaml_Runtime[11],x$5)]} + return [6,_kP_,_bTZ_]} + var ParentOuAutre=[0]; + function embed_parent_ou_autre(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTY_= + [0, + cst_DemandeurOuConjointOuParen, + caml_call1(Runtime_ocaml_Runtime[15],x$0)]; + else + var + x$1=x[1], + _bTY_=[0,cst_Autre$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kQ_,_bTY_]} + var SituationGardeAlternee=[0]; + function embed_situation_garde_alternee(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTX_= + [0,cst_PasDeGardeAltern_e,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bTX_= + [0, + cst_GardeAltern_eCoefficientPr, + caml_call1(Runtime_ocaml_Runtime[15],x$1)]; + return [6,_kR_,_bTX_]} + var Parente=[0]; + function embed_parente(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTW_=[0,cst_Ascendant,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTW_=[0,cst_Descendant,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTW_= + [0, + cst_Collat_ralDeuxi_meTroisi_m, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kS_,_bTW_]} + var DateDeNaissanceOuMoisDeGrosses=[0]; + function embed_date_de_naissance_ou_moi(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTV_= + [0,cst_DateDeNaissance,caml_call1(Runtime_ocaml_Runtime[16],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTV_= + [0, + cst_AvantPremierJourMoisCivilT, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTV_= + [0, + cst_Apr_sPremierJourMoisCivilT, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kT_,_bTV_]} + var ZoneDHabitation=[0]; + function embed_zone_d_habitation(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTU_=[0,cst_Zone1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTU_=[0,cst_Zone2,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTU_=[0,cst_Zone3,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kU_,_bTU_]} + var PaiementLogementDistinctProfes=[0]; + function embed_paiement_logement_distin(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTT_= + [0, + cst_OuiAvecLoyerOuCharges, + caml_call1(Runtime_ocaml_Runtime[13],x$0)]; + else + var + x$1=x[1], + _bTT_=[0,cst_Non$0,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kV_,_bTT_]} + var VersementA=[0]; + function embed_versement_a(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTS_=[0,cst_Bailleur,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTS_=[0,cst_B_n_ficiaire,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTS_= + [0, + cst_tablissementHabilit, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kW_,_bTS_]} + var DepenseLogement=[0]; + function embed_depense_logement(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTR_= + [0, + cst_TotalAnnuel_ch_ances, + caml_call1(Runtime_ocaml_Runtime[13],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTR_=[0,cst_Mensualit,caml_call1(Runtime_ocaml_Runtime[13],x$1)]; + break; + default: + var + x$2=x[1], + _bTR_=[0,cst_Loyer,caml_call1(Runtime_ocaml_Runtime[13],x$2)]} + return [6,_kX_,_bTR_]} + var ModeOccupationImpaye=[0]; + function embed_mode_occupation_impaye(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTQ_=[0,cst_Impay_Loyer,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bTQ_=[0,cst_Impay_Pr_t,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_kY_,_bTQ_]} + var TypeEligibiliteAllocationLogem=[0]; + function embed_type_eligibilite_allocat(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTP_=[0,cst_Pas_ligible,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTP_= + [0, + cst_AllocationLogementFamilial, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTP_= + [0, + cst_AllocationLogementSociale, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_kZ_,_bTP_]} + var TypeAidesPersonnelleLogement=[0]; + function embed_type_aides_personnelle_l(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTO_= + [0, + cst_AidePersonnalis_eLogement, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTO_= + [0, + cst_AllocationLogementFamilial$0, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTO_= + [0, + cst_AllocationLogementSociale$0, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_k0_,_bTO_]} + var SituationFamiliale=[0]; + function embed_situation_familiale(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTN_=[0,cst_C_libataire,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTN_=[0,cst_Mari_s,caml_call1(Runtime_ocaml_Runtime[16],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTN_=[0,cst_Pacs_s,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTN_=[0,cst_Concubins,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _bTN_= + [0, + cst_C_libataireS_par_DeFait, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + default: + var + x$5=x[1], + _bTN_= + [0, + cst_ConcubinageDontS_par_DeFai, + caml_call1(Runtime_ocaml_Runtime[11],x$5)]} + return [6,_k1_,_bTN_]} + var PriseEnCharge$0=[0]; + function embed_prise_en_charge$0(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTM_= + [0, + cst_EffectiveEtPermanente$1, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTM_= + [0, + cst_R_sidenceAltern_eAllocatai, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTM_= + [0, + cst_R_sidenceAltern_eAllocatio, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_k2_,_bTM_]} + var TypeLogementFoyer=[0]; + function embed_type_logement_foyer(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTL_= + [0, + cst_LogementPersonnes_g_esOuHa, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTL_= + [0,cst_R_sidenceSociale,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTL_= + [0, + cst_FoyerJeunesTrvailleursOuMi, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + default: + var + x$3=x[1], + _bTL_=[0,cst_Autre$1,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} + return [6,_k3_,_bTL_]} + var CategorieEquivalenceLoyerAlloc=[0]; + function embed_categorie_equivalence_lo(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTK_= + [0, + cst_tudiantLog_EnChambreCROUS, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTK_= + [0, + cst_tudiantLog_EnChambreCROUSR, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTK_= + [0, + cst_Personnes_g_esSelon3DeD842, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + default: + var + x$3=x[1], + _bTK_= + [0,cst_AutresPersonnes,caml_call1(Runtime_ocaml_Runtime[11],x$3)]} + return [6,_k4_,_bTK_]} + var SituationFamilialeCalculAPL=[0]; + function embed_situation_familiale_calc(x) + {if(0 === x[0]) + var + x$0=x[1], + _bTJ_=[0,cst_PersonneSeule,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bTJ_=[0,cst_Couple,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_k5_,_bTJ_]} + var Collectivite$0=[0]; + function embed_collectivite$0(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTI_=[0,cst_Guadeloupe$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTI_=[0,cst_Guyane$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTI_=[0,cst_Martinique$1,caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTI_=[0,cst_LaR_union$0,caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _bTI_= + [0,cst_SaintBarth_lemy$0,caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + case 5: + var + x$5=x[1], + _bTI_= + [0,cst_SaintMartin$1,caml_call1(Runtime_ocaml_Runtime[11],x$5)]; + break; + case 6: + var + x$6=x[1], + _bTI_=[0,cst_M_tropole$0,caml_call1(Runtime_ocaml_Runtime[11],x$6)]; + break; + case 7: + var + x$7=x[1], + _bTI_= + [0, + cst_SaintPierreEtMiquelon$1, + caml_call1(Runtime_ocaml_Runtime[11],x$7)]; + break; + default: + var + x$8=x[1], + _bTI_=[0,cst_Mayotte$1,caml_call1(Runtime_ocaml_Runtime[11],x$8)]} + return [6,_k6_,_bTI_]} + var PriseEnChargeEnfant=[0]; + function embed_prise_en_charge_enfant(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTH_= + [0, + cst_GardeAltern_ePartageAlloca$0, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTH_= + [0, + cst_GardeAltern_eAllocataireUn$0, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTH_= + [0, + cst_EffectiveEtPermanente$2, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTH_= + [0, + cst_ServicesSociauxAllocationV$3, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + default: + var + x$4=x[1], + _bTH_= + [0, + cst_ServicesSociauxAllocationV$4, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]} + return [6,_k7_,_bTH_]} + var SituationObligationScolaire$0=[0]; + function embed_situation_obligation_sco$0(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTG_=[0,cst_Avant$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTG_=[0,cst_Pendant$1,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + default: + var + x$2=x[1], + _bTG_=[0,cst_Apr_s$0,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_k8_,_bTG_]} + var ElementPrestationsFamiliales$0=[0]; + function embed_element_prestations_fami$0(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bTF_= + [0, + cst_PrestationAccueilJeuneEnfa$1, + caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + break; + case 1: + var + x$1=x[1], + _bTF_= + [0, + cst_AllocationsFamiliales$2, + caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + break; + case 2: + var + x$2=x[1], + _bTF_= + [0, + cst_Compl_mentFamilial$1, + caml_call1(Runtime_ocaml_Runtime[11],x$2)]; + break; + case 3: + var + x$3=x[1], + _bTF_= + [0, + cst_AllocationLogement$1, + caml_call1(Runtime_ocaml_Runtime[11],x$3)]; + break; + case 4: + var + x$4=x[1], + _bTF_= + [0, + cst_Allocation_ducationEnfantH$0, + caml_call1(Runtime_ocaml_Runtime[11],x$4)]; + break; + case 5: + var + x$5=x[1], + _bTF_= + [0, + cst_AllocationSoutienFamilial$2, + caml_call1(Runtime_ocaml_Runtime[11],x$5)]; + break; + case 6: + var + x$6=x[1], + _bTF_= + [0, + cst_AllocationRentr_eScolaire$0, + caml_call1(Runtime_ocaml_Runtime[11],x$6)]; + break; + default: + var + x$7=x[1], + _bTF_= + [0, + cst_AllocationJournali_rePrese$0, + caml_call1(Runtime_ocaml_Runtime[11],x$7)]} + return [6,_k9_,_bTF_]} + var ConventionBailleurSocial=[0]; + function embed_convention_bailleur_soci(x) + {var + _bTE_= + [0, + [0, + cst_r_duction_loyer_solidarit_, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + 0]; + return [7, + _k__, + [0, + [0, + cst_conventionn_livre_III_titr, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bTE_]]} + var ConventionANHA=[0]; + function embed_convention_a_n_h_a(x) + {return [7, + _k$_, + [0, + [0, + cst_conventionn_livre_III_titr$0, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + 0]]} + var PersonneSousLocation=[0]; + function embed_personne_sous_location(x) + {var + _bTD_= + [0, + [0, + cst_conforme_article_l442_1, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + 0]; + return [7, + _la_, + [0, + [0, + cst_date_naissance_personne_so, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bTD_]]} + var Patrimoine=[0]; + function embed_patrimoine(x) + {var + _bTC_= + [0, + [0, + cst_ne_produisant_pas_revenu_p, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + 0]; + return [7, + _lb_, + [0, + [0, + cst_produisant_revenu_p_riode_, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTC_]]} + var ConditionsEtrangers=[0]; + function embed_conditions_etrangers(x) + {return [7, + _lc_, + [0, + [0, + cst_satisfait_conditions_l512_, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + 0]]} + var PersonneVivantHabituellementAu=[0]; + function embed_personne_vivant_habituel(x) + {var + _bTB_= + [0,[0,cst_ressources,caml_call1(Runtime_ocaml_Runtime[13],x[2])],0]; + return [7, + _ld_, + [0, + [0, + cst_dur_e_r_sidence_durant_p_r, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bTB_]]} + var EligibiliteAidePersonnaliseeLo=[0]; + function embed_eligibilite_aide_personn(x) + {var + _bTy_= + [0, + [0, + cst_coefficents_enfants_garde_, + caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], + 0], + _bTz_= + [0, + [0, + cst_nombre_personnes_charge_pr, + caml_call1(Runtime_ocaml_Runtime[14],x[3])], + _bTy_], + _bTA_= + [0,[0,cst_ligibilit,caml_call1(Runtime_ocaml_Runtime[12],x[2])],_bTz_]; + return [7, + _le_, + [0, + [0, + cst_date_courante, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bTA_]]} + var EligibilitePrimeDeDemenagement=[0]; + function embed_eligibilite_prime_de_dem(x) + {return [7, + _lf_, + [0, + [0, + cst_montant_prime_d_m_nagement, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var RessourcesAidesPersonnelleLoge=[0]; + function embed_ressources_aides_personn(x) + {return [7, + _lg_, + [0, + [0, + cst_ressources_prises_en_compt, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var ContributionsSocialesAidesPers=[0]; + function embed_contributions_sociales_a(x) + {return [7, + _lh_, + [0, + [0,cst_montant$0,caml_call1(Runtime_ocaml_Runtime[10],x[1])], + 0]]} + var CalculAidePersonnaliseeLogemen=[0]; + function embed_calcul_aide_personnalise(x) + {var + _bTs_= + [0, + [0, + cst_traitement_aide_finale, + caml_call1(Runtime_ocaml_Runtime[10],x[7])], + 0], + _bTt_= + [0, + [0, + cst_aide_finale_formule, + caml_call1(Runtime_ocaml_Runtime[13],x[6])], + _bTs_], + _bTu_= + [0, + [0, + cst_participation_personnelle, + caml_call1(Runtime_ocaml_Runtime[13],x[5])], + _bTt_], + _bTv_= + [0, + [0, + cst_taux_composition_familiale, + caml_call1(Runtime_ocaml_Runtime[15],x[4])], + _bTu_], + _bTw_= + [0, + [0, + cst_participation_minimale, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bTv_], + _bTx_= + [0, + [0, + cst_plafond_loyer_d823_16_2, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bTw_]; + return [7, + _li_, + [0, + [0, + cst_montant_forfaitaire_charge, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTx_]]} + var CalculEquivalenceLoyerMinimale=[0]; + function embed_calcul_equivalence_loyer(x) + {return [7, + _lj_, + [0, + [0,cst_montant$1,caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var CalculNombrePartLogementFoyer=[0]; + function embed_calcul_nombre_part_logem(x) + {return [7, + _lk_, + [0, + [0, + cst_n_nombre_parts_d832_25, + caml_call1(Runtime_ocaml_Runtime[15],x[1])], + 0]]} + var CalculAidePersonnaliseeLogemen$0=[0]; + function embed_calcul_aide_personnalise$0(x) + {var + _bTk_= + [0, + [0, + cst_traitement_aide_finale$0, + caml_call1(Runtime_ocaml_Runtime[10],x[9])], + 0], + _bTl_= + [0, + [0, + cst_aide_finale_formule$0, + caml_call1(Runtime_ocaml_Runtime[13],x[8])], + _bTk_], + _bTm_= + [0, + [0, + cst_coefficient_prise_en_charg, + caml_call1(Runtime_ocaml_Runtime[15],x[7])], + _bTl_], + _bTn_= + [0, + [0, + cst_quivalence_loyer_minimale, + caml_call1(Runtime_ocaml_Runtime[13],x[6])], + _bTm_], + _bTo_= + [0, + [0, + cst_plafond_quivalence_loyer_l, + caml_call1(Runtime_ocaml_Runtime[13],x[5])], + _bTn_], + _bTp_= + [0, + [0, + cst_quivalence_loyer_ligible, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bTo_], + _bTq_= + [0, + [0, + cst_n_nombre_parts_d832_25$0, + caml_call1(Runtime_ocaml_Runtime[15],x[3])], + _bTp_], + _bTr_= + [0, + [0, + cst_coefficient_r_d832_25, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bTq_]; + return [7, + _ll_, + [0, + [0, + cst_coefficient_multiplicateur, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTr_]]} + var CalculNombrePartsAccessionProp=[0]; + function embed_calcul_nombre_parts_acce(x) + {return [7, + _lm_, + [0, + [0, + cst_n_nombre_parts_d832_11, + caml_call1(Runtime_ocaml_Runtime[15],x[1])], + 0]]} + var CalculAidePersonnaliseeLogemen$1=[0]; + function embed_calcul_aide_personnalise$1(x) + {var + _bTg_= + [0, + [0, + cst_traitement_aide_finale$1, + caml_call1(Runtime_ocaml_Runtime[10],x[5])], + 0], + _bTh_= + [0, + [0, + cst_aide_finale_formule$1, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bTg_], + _bTi_= + [0, + [0, + cst_coefficient_prise_en_charg$0, + caml_call1(Runtime_ocaml_Runtime[15],x[3])], + _bTh_], + _bTj_= + [0, + [0,cst_mensualit_minimale,caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bTi_]; + return [7, + _ln_, + [0, + [0, + cst_mensualit_ligible, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTj_]]} + var TraitementFormuleAideFinale=[0]; + function embed_traitement_formule_aide_(x) + {var + _bTf_= + [0, + [0, + cst_traitement_aide_finale$2, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _lo_, + [0, + [0, + cst_aide_finale_formule$2, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTf_]]} + var CalculAidePersonnaliseeLogemen$2=[0]; + function embed_calcul_aide_personnalise$2(x) + {var + _bTe_= + [0, + [0, + cst_traitement_aide_finale$3, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _lp_, + [0, + [0, + cst_aide_finale_formule$3, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTe_]]} + var InfosChangementLogementD8424=[0]; + function embed_infos_changement_logemen(x) + {var + _bTd_= + [0, + [0, + cst_ancienne_allocation_logeme, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + 0]; + return [7, + _lq_, + [0, + [0, + cst_ancien_loyer_principal, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTd_]]} + var CalculAllocationLogementLocati=[0]; + function embed_calcul_allocation_logeme(x) + {var + _bTc_= + [0, + [0, + cst_traitement_aide_finale$4, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _lr_, + [0, + [0, + cst_aide_finale_formule$4, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTc_]]} + var CalculAllocationLogementAccess=[0]; + function embed_calcul_allocation_logeme$0(x) + {var + _bTb_= + [0, + [0, + cst_traitement_aide_finale$5, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _ls_, + [0, + [0, + cst_aide_finale_formule$5, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bTb_]]} + var CalculAllocationLogementFoyer=[0]; + function embed_calcul_allocation_logeme$1(x) + {var + _bS8_= + [0, + [0, + cst_traitement_aide_finale$6, + caml_call1(Runtime_ocaml_Runtime[10],x[6])], + 0], + _bS9_= + [0, + [0, + cst_aide_finale_formule$6, + caml_call1(Runtime_ocaml_Runtime[13],x[5])], + _bS8_], + _bS__= + [0, + [0,cst_loyer_minimal,caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bS9_], + _bS$_= + [0, + [0, + cst_montant_forfaitaire_charge$0, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bS__], + _bTa_= + [0, + [0,cst_quivalence_loyer,caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bS$_]; + return [7, + _lt_, + [0, + [0, + cst_coefficient_prise_en_charg$1, + caml_call1(Runtime_ocaml_Runtime[15],x[1])], + _bTa_]]} + var CalculAllocationLogement=[0]; + function embed_calcul_allocation_logeme$2(x) + {var + _bS7_= + [0, + [0, + cst_traitement_aide_finale$7, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + 0]; + return [7, + _lu_, + [0, + [0, + cst_aide_finale_formule$7, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bS7_]]} + var OuvertureDroitsRetraite=[0]; + function embed_ouverture_droits_retrait(x) + {return [7, + _lv_, + [0, + [0, + cst_ge_ouverture_droit, + caml_call1(Runtime_ocaml_Runtime[17],x[1])], + 0]]} + var ImpayeDepenseLogement=[0]; + function embed_impaye_depense_logement(x) + {return [7, + _lw_, + [0, + [0, + cst_montant_impay, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var CalculetteAidesAuLogement=[0]; + function embed_calculette_aides_au_loge(x) + {var + _bS4_= + [0, + [0, + cst_coefficents_enfants_garde_$0, + caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], + 0], + _bS5_= + [0, + [0, + cst_traitement_aide_finale$8, + caml_call1(Runtime_ocaml_Runtime[10],x[3])], + _bS4_], + _bS6_= + [0, + [0, + cst_aide_finale_formule$8, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bS5_]; + return [7, + _lx_, + [0, + [0,cst_ligibilit$0,caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bS6_]]} + var CalculetteAidesAuLogementGarde=[0]; + function embed_calculette_aides_au_loge$0(x) + {var + _bS3_= + [0,[0,cst_aide_finale,caml_call1(Runtime_ocaml_Runtime[13],x[2])],0]; + return [7, + _ly_, + [0, + [0,cst_ligibilit$1,caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bS3_]]} + var BaseMensuelleAllocationsFamili$1=[0]; + function embed_base_mensuelle_allocatio$1(x) + {return [7, + _lz_, + [0, + [0,cst_montant$2,caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var Smic$0=[0]; + function embed_smic$0(x) + {return [7, + _lA_, + [0, + [0, + cst_brut_horaire$0, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + 0]]} + var Pret=[0]; + function embed_pret(x) + {var + _bS1_=[0,[0,cst_titulaire_pr_t,embed_titulaire_pret(x[3])],0], + _bS2_= + [0, + [0,cst_date_signature,caml_call1(Runtime_ocaml_Runtime[16],x[2])], + _bS1_]; + return [7,_lB_,[0,[0,cst_type_pr_t,embed_type_pret(x[1])],_bS2_]]} + var NeufOuAncien=[0]; + function embed_neuf_ou_ancien(x) + {if(0 === x[0]) + var + x$0=x[1], + _bS0_=[0,cst_Neuf,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var x$1=x[1],_bS0_=[0,cst_Ancien,embed_ameliore_par_occupant(x$1)]; + return [6,_lC_,_bS0_]} + var TrancheRevenu=[0]; + function embed_tranche_revenu(x) + {var + _bSY_=[0,[0,cst_taux,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0], + _bSZ_=[0,[0,cst_bas,caml_call1(Runtime_ocaml_Runtime[13],x[2])],_bSY_]; + return [7,_lD_,[0,[0,cst_haut,embed_limite_tranche(x[1])],_bSZ_]]} + var TrancheRevenuDecimal=[0]; + function embed_tranche_revenu_decimal(x) + {var + _bSW_=[0,[0,cst_taux$0,caml_call1(Runtime_ocaml_Runtime[15],x[3])],0], + _bSX_= + [0,[0,cst_bas$0,caml_call1(Runtime_ocaml_Runtime[15],x[2])],_bSW_]; + return [7, + _lE_, + [0,[0,cst_haut$0,embed_limite_tranche_decimal(x[1])],_bSX_]]} + var AutrePersonneACharge=[0]; + function embed_autre_personne_a_charge(x) + {var + _bSQ_= + [0, + [0, + cst_titulaire_allocation_perso, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _bSR_= + [0, + [0, + cst_b_n_ficiaire_l161_19_l351_, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _bSQ_], + _bSS_= + [0, + [0, + cst_incapacit_80_pourcent_ou_r, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _bSR_], + _bST_=[0,[0,cst_parent,embed_parente(x[4])],_bSS_], + _bSU_= + [0, + [0, + cst_ascendant_descendant_colla, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bST_], + _bSV_= + [0, + [0,cst_ressources$0,caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bSU_]; + return [7, + _lF_, + [0, + [0, + cst_date_naissance, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bSV_]]} + var DateNaissanceTroisiemeOuDernie=[0]; + function embed_date_naissance_troisieme(x) + {if(0 === x[0]) + var + x$0=x[1], + _bSP_= + [0,cst_MoinsDeTroisEnfants,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var + x$1=x[1], + _bSP_=[0,cst_PlusDeTroisEnfants,embed_date_de_naissance_ou_moi(x$1)]; + return [6,_lG_,_bSP_]} + var EligibiliteAllocationLogement=[0]; + function embed_eligibilite_allocation_l(x) + {var + _bSN_= + [0, + [0, + cst_coefficents_enfants_garde_$1, + caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[3])], + 0], + _bSO_= + [0, + [0, + cst_nombre_personnes_charge_pr$0, + caml_call1(Runtime_ocaml_Runtime[14],x[2])], + _bSN_]; + return [7, + _lH_, + [0, + [0,cst_ligibilit$2,embed_type_eligibilite_allocat(x[1])], + _bSO_]]} + var LogementFoyer=[0]; + function embed_logement_foyer(x) + {var + _bSH_= + [0, + [0, + cst_cat_gorie_quivalence_loyer, + embed_categorie_equivalence_lo(x[7])], + 0], + _bSI_= + [0,[0,cst_redevance,caml_call1(Runtime_ocaml_Runtime[13],x[6])],_bSH_], + _bSJ_= + [0, + [0, + cst_construit_application_loi_, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _bSI_], + _bSK_= + [0, + [0, + cst_date_conventionnement, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bSJ_], + _bSL_= + [0, + [0, + cst_conventionn_livre_III_titr$1, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bSK_], + _bSM_= + [0, + [0, + cst_remplit_conditions_r832_21, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bSL_]; + return [7,_lI_,[0,[0,cst_type,embed_type_logement_foyer(x[1])],_bSM_]]} + var EnfantPrestationsFamiliales=[0]; + function embed_enfant_prestations_famil(x) + {var + _bSB_= + [0, + [0, + cst_b_n_ficie_titre_personnel_$0, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _bSC_= + [0, + [0, + cst_a_d_j_ouvert_droit_aux_all$0, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _bSB_], + _bSD_= + [0,[0,cst_prise_en_charge$0,embed_prise_en_charge_enfant(x[5])],_bSC_], + _bSE_= + [0, + [0, + cst_date_de_naissance$0, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bSD_], + _bSF_= + [0, + [0, + cst_r_muneration_mensuelle$0, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bSE_], + _bSG_= + [0, + [0,cst_obligation_scolaire$0,embed_situation_obligation_sco$0(x[2])], + _bSF_]; + return [7, + _lJ_, + [0, + [0, + cst_identifiant$0, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _bSG_]]} + var EnfantACharge=[0]; + function embed_enfant_a_charge(x) + {var + _bSv_= + [0, + [0,cst_situation_garde_altern_e,embed_situation_garde_alternee(x[7])], + 0], + _bSw_= + [0, + [0,cst_obligation_scolaire$1,embed_situation_obligation_sco$0(x[6])], + _bSv_], + _bSx_= + [0, + [0, + cst_r_muneration_mensuelle$1, + caml_call1(Runtime_ocaml_Runtime[13],x[5])], + _bSw_], + _bSy_= + [0, + [0, + cst_date_de_naissance$1, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bSx_], + _bSz_= + [0, + [0, + cst_a_d_j_ouvert_droit_aux_all$1, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bSy_], + _bSA_= + [0, + [0, + cst_b_n_ficie_titre_personnel_$1, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bSz_]; + return [7, + _lK_, + [0, + [0, + cst_identifiant$1, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _bSA_]]} + var TypeBailleur=[0]; + function embed_type_bailleur(x) + {switch(x[0]) + {case 0: + var + x$0=x[1], + _bSu_=[0,cst_BailleurSocial,embed_convention_bailleur_soci(x$0)]; + break; + case 1: + var + x$1=x[1], + _bSu_= + [0,cst_BailleurPriv_AvecConventio,embed_convention_a_n_h_a(x$1)]; + break; + default: + var + x$2=x[1], + _bSu_=[0,cst_BailleurPriv,caml_call1(Runtime_ocaml_Runtime[11],x$2)]} + return [6,_lL_,_bSu_]} + var LoueOuSousLoueADesTiers=[0]; + function embed_loue_ou_sous_loue_a_des_(x) + {if(0 === x[0]) + var + x$0=x[1], + _bSt_=[0,cst_Non$1,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var x$1=x[1],_bSt_=[0,cst_Oui$0,embed_personne_sous_location(x$1)]; + return [6,_lM_,_bSt_]} + var Nationalite=[0]; + function embed_nationalite(x) + {if(0 === x[0]) + var + x$0=x[1], + _bSs_=[0,cst_Fran_aise,caml_call1(Runtime_ocaml_Runtime[11],x$0)]; + else + var x$1=x[1],_bSs_=[0,cst_trang_re,embed_conditions_etrangers(x$1)]; + return [6,_lN_,_bSs_]} + var ChangementLogementD8424=[0]; + function embed_changement_logement_d842(x) + {if(0 === x[0]) + var + x$0=x[1], + _bSr_=[0,cst_Changement,embed_infos_changement_logemen(x$0)]; + else + var + x$1=x[1], + _bSr_= + [0,cst_PasDeChangement,caml_call1(Runtime_ocaml_Runtime[11],x$1)]; + return [6,_lO_,_bSr_]} + var Proprietaire=[0]; + function embed_proprietaire(x) + {var + _bSh_=[0,[0,cst_pr_t,embed_pret(x[11])],0], + _bSi_=[0,[0,cst_anciennet_logement,embed_neuf_ou_ancien(x[10])],_bSh_], + _bSj_= + [0, + [0, + cst_situation_r822_11_13_17, + caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bSi_], + _bSk_= + [0, + [0,cst_copropri_t,caml_call1(Runtime_ocaml_Runtime[12],x[8])], + _bSj_], + _bSl_= + [0, + [0, + cst_local_habit_premi_re_fois_, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bSk_], + _bSm_= + [0, + [0, + cst_type_travaux_logement_r842, + embed_type_travaux_logement_r8(x[6])], + _bSl_], + _bSn_= + [0, + [0, + cst_type_travaux_logement_d832, + embed_type_travaux_logement_d8(x[5])], + _bSm_], + _bSo_= + [0, + [0, + cst_date_entr_e_logement, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bSn_], + _bSp_= + [0, + [0, + cst_charges_mensuelles_pr_t, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bSo_], + _bSq_= + [0, + [0, + cst_mensualit_principale, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bSp_]; + return [7, + _lP_, + [0, + [0, + cst_logement_situ_commune_d_s_, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bSq_]]} + var InformationsPrimeDeDemenagemen=[0]; + function embed_informations_prime_de_de(x) + {var + _bSg_= + [0, + [0, + cst_date_naissance_troisi_me_e, + embed_date_naissance_troisieme(x[2])], + 0]; + return [7, + _lQ_, + [0, + [0, + cst_nombre_enfants_na_tre_apr_, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _bSg_]]} + var EligibilitePrestationsFamilial=[0]; + function embed_eligibilite_prestations_(x) + {var + _bSd_= + [0, + [0, + cst_r_gime_outre_mer_l751_1$0, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + 0], + _bSe_= + [0, + [0,cst_ge_l512_3_2$0,caml_call1(Runtime_ocaml_Runtime[17],x[3])], + _bSd_], + _bSf_= + [0, + [0, + cst_conditions_hors_ge$0, + caml_call1(Runtime_ocaml_Runtime[10],x[2])], + _bSe_]; + return [7, + _lR_, + [0, + [0, + cst_droit_ouvert$0, + caml_call1(Runtime_ocaml_Runtime[10],x[1])], + _bSf_]]} + var PersonneACharge=[0]; + function embed_personne_a_charge(x) + {if(0 === x[0]) + var x$0=x[1],_bSc_=[0,cst_Enfant_Charge,embed_enfant_a_charge(x$0)]; + else + var + x$1=x[1], + _bSc_=[0,cst_AutrePersonne_Charge,embed_autre_personne_a_charge(x$1)]; + return [6,_lS_,_bSc_]} + var Demandeur=[0]; + function embed_demandeur(x) + {var + _bR$_= + [0, + [0, + cst_personne_h_berg_e_centre_s, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + 0], + _bSa_=[0,[0,cst_patrimoine,embed_patrimoine(x[3])],_bR$_], + _bSb_=[0,[0,cst_nationalit,embed_nationalite(x[2])],_bSa_]; + return [7, + _lT_, + [0, + [0, + cst_date_naissance$0, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bSb_]]} + var Location=[0]; + function embed_location(x) + {var + _bR4_= + [0, + [0, + cst_changement_logement_d842_4, + embed_changement_logement_d842(x[8])], + 0], + _bR5_= + [0, + [0, + cst_logement_meubl_d842_2, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bR4_], + _bR6_= + [0, + [0, + cst_g_es_ou_handicap_adultes_h, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _bR5_], + _bR7_= + [0, + [0,cst_colocation,caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _bR6_], + _bR8_= + [0, + [0, + cst_logement_est_chambre, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + _bR7_], + _bR9_= + [0, + [0, + cst_b_n_ficiaire_aide_adulte_o, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bR8_], + _bR__= + [0, + [0,cst_loyer_principal,caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bR9_]; + return [7,_lU_,[0,[0,cst_bailleur,embed_type_bailleur(x[1])],_bR__]]} + var EligibiliteAidesPersonnelleLog=[0]; + function embed_eligibilite_aides_person(x) + {var + _bR0_= + [0, + [0,cst_condition_2_r823_4,caml_call1(Runtime_ocaml_Runtime[10],x[5])], + 0], + _bR1_= + [0, + [0, + cst_coefficents_enfants_garde_$2, + caml_call2(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15],x[4])], + _bR0_], + _bR2_= + [0, + [0, + cst_nombre_personnes_charge_pr$1, + caml_call1(Runtime_ocaml_Runtime[14],x[3])], + _bR1_], + _bR3_= + [0, + [0,cst_ligibilit$3,caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bR2_]; + return [7, + _lV_, + [0, + [0, + cst_date_courante$0, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bR3_]]} + var CategorieCalculAPL=[0]; + function embed_categorie_calcul_a_p_l(x) + {switch(x[0]) + {case 0:var x$0=x[1],_bRZ_=[0,cst_Location,embed_location(x$0)];break; + case 1: + var x$1=x[1],_bRZ_=[0,cst_AccessionPropri_t,embed_proprietaire(x$1)]; + break; + default: + var x$2=x[1],_bRZ_=[0,cst_LogementFoyer,embed_logement_foyer(x$2)]} + return [6,_lW_,_bRZ_]} + var ModeOccupation=[0]; + function embed_mode_occupation(x) + {switch(x[0]) + {case 0:var x$0=x[1],_bRY_=[0,cst_Locataire,embed_location(x$0)];break; + case 1: + var + x$1=x[1], + _bRY_=[0,cst_R_sidentLogementFoyer,embed_logement_foyer(x$1)]; + break; + case 2: + var + x$2=x[1], + _bRY_=[0,cst_AccessionPropri_t_LocalUsa,embed_proprietaire(x$2)]; + break; + case 3: + var x$3=x[1],_bRY_=[0,cst_SousLocataire,embed_location(x$3)];break; + default: + var x$4=x[1],_bRY_=[0,cst_LocationAccession,embed_proprietaire(x$4)]} + return [6,_lX_,_bRY_]} + var Logement=[0]; + function embed_logement(x) + {var + _bRQ_=[0,[0,cst_zone,embed_zone_d_habitation(x[9])],0], + _bRR_= + [0, + [0,cst_surface_m_carr_s,caml_call1(Runtime_ocaml_Runtime[14],x[8])], + _bRQ_], + _bRS_= + [0, + [0, + cst_logement_decent_l89_462, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bRR_], + _bRT_=[0,[0,cst_usufruit,embed_parent_ou_autre(x[6])],_bRS_], + _bRU_= + [0, + [0, + cst_lou_ou_sous_lou_des_tiers, + embed_loue_ou_sous_loue_a_des_(x[5])], + _bRT_], + _bRV_=[0,[0,cst_propri_taire,embed_parent_ou_autre(x[4])],_bRU_], + _bRW_=[0,[0,cst_mode_occupation,embed_mode_occupation(x[3])],_bRV_], + _bRX_= + [0, + [0, + cst_est_ehpad_ou_maison_autono, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bRW_]; + return [7, + _lY_, + [0, + [0, + cst_r_sidence_principale, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bRX_]]} + var Menage=[0]; + function embed_menage(x) + {var + _bRK_= + [0, + [0, + cst_enfant_na_tre_apr_s_quatri, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + 0], + _bRL_= + [0, + [0, + cst_condition_rattach_foyer_fi, + caml_call1(Runtime_ocaml_Runtime[12],x[6])], + _bRK_], + _bRM_= + [0,[0,cst_situation_familiale,embed_situation_familiale(x[5])],_bRL_], + _bRN_= + [0, + [0, + cst_nombre_autres_occupants_lo, + caml_call1(Runtime_ocaml_Runtime[14],x[4])], + _bRM_], + _bRO_= + [0, + [0, + cst_personnes_charge, + caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[3])], + _bRN_], + _bRP_=[0,[0,cst_logement,embed_logement(x[2])],_bRO_]; + return [7, + _lZ_, + [0, + [0, + cst_prestations_re_ues, + caml_call2 + (Runtime_ocaml_Runtime[18],embed_prestation_recue,x[1])], + _bRP_]]} + var EligibiliteAidesPersonnelleLog$0=[0]; + function embed_eligibilite_aides_person$0(x) + {var + _bRG_= + [0, + [0, + cst_condition_logement_surface, + caml_call1(Runtime_ocaml_Runtime[10],x[5])], + 0], + _bRH_= + [0, + [0, + cst_condition_logement_r_siden, + caml_call1(Runtime_ocaml_Runtime[10],x[4])], + _bRG_], + _bRI_= + [0, + [0,cst_date_courante_in$3,caml_call1(Runtime_ocaml_Runtime[16],x[3])], + _bRH_], + _bRJ_=[0,[0,cst_demandeur_in,embed_demandeur(x[2])],_bRI_]; + return [7,_l0_,[0,[0,cst_m_nage_in,embed_menage(x[1])],_bRJ_]]} + var EligibiliteAidePersonnaliseeLo$0=[0]; + function embed_eligibilite_aide_personn$0(x) + {var + _bRE_= + [0, + [0,cst_date_courante_in$4,caml_call1(Runtime_ocaml_Runtime[16],x[3])], + 0], + _bRF_=[0,[0,cst_demandeur_in$0,embed_demandeur(x[2])],_bRE_]; + return [7,_l1_,[0,[0,cst_m_nage_in$0,embed_menage(x[1])],_bRF_]]} + var EligibiliteAllocationLogementI=[0]; + function embed_eligibilite_allocation_l$0(x) + {var + _bRB_= + [0, + [0, + cst_b_n_ficie_aide_personnalis, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + 0], + _bRC_=[0,[0,cst_demandeur_in$1,embed_demandeur(x[3])],_bRB_], + _bRD_=[0,[0,cst_m_nage_in$1,embed_menage(x[2])],_bRC_]; + return [7, + _l2_, + [0, + [0, + cst_date_courante_in$5, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bRD_]]} + var EligibilitePrimeDeDemenagement$0=[0]; + function embed_eligibilite_prime_de_dem$0(x) + {var + _bRw_= + [0, + [0, + cst_d_penses_justifi_es_r_elle, + caml_call1(Runtime_ocaml_Runtime[13],x[6])], + 0], + _bRx_= + [0, + [0,cst_date_courante_in$6,caml_call1(Runtime_ocaml_Runtime[16],x[5])], + _bRw_], + _bRy_=[0,[0,cst_demandeur_in$2,embed_demandeur(x[4])],_bRx_], + _bRz_=[0,[0,cst_m_nage_in$2,embed_menage(x[3])],_bRy_], + _bRA_= + [0, + [0, + cst_date_emm_nagement_in, + caml_call1(Runtime_ocaml_Runtime[16],x[2])], + _bRz_]; + return [7, + _l3_, + [0, + [0,cst_informations_in,embed_informations_prime_de_de(x[1])], + _bRA_]]} + var RessourcesAidesPersonnelleLoge$0=[0]; + function embed_ressources_aides_personn$0(x) + {var + _bRk_= + [0, + [0, + cst_ressources_m_nage_arrondie, + caml_call1(Runtime_ocaml_Runtime[13],x[13])], + 0], + _bRl_= + [0, + [0, + cst_paiement_logement_distinct, + embed_paiement_logement_distin(x[12])], + _bRk_], + _bRm_= + [0, + [0, + cst_date_demande_ou_reexamen_d, + caml_call1(Runtime_ocaml_Runtime[16],x[11])], + _bRl_], + _bRn_= + [0, + [0, + cst_demandeur_poursuit_des_tud, + caml_call1(Runtime_ocaml_Runtime[12],x[10])], + _bRm_], + _bRo_= + [0, + [0, + cst_condition_ge_bourse_enseig, + caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bRn_], + _bRp_=[0,[0,cst_mode_occupation_in,embed_mode_occupation(x[8])],_bRo_], + _bRq_= + [0, + [0,cst_situation_familiale_in,embed_situation_familiale(x[7])], + _bRp_], + _bRr_= + [0, + [0, + cst_personnes_charge_in, + caml_call2(Runtime_ocaml_Runtime[18],embed_personne_a_charge,x[6])], + _bRq_], + _bRs_= + [0, + [0, + cst_conjoint_exerce_activit_r_, + caml_call1(Runtime_ocaml_Runtime[12],x[5])], + _bRr_], + _bRt_= + [0, + [0, + cst_demandeur_exerce_activit_r, + caml_call1(Runtime_ocaml_Runtime[12],x[4])], + _bRs_], + _bRu_= + [0, + [0, + cst_personnes_vivant_habituell, + caml_call2 + (Runtime_ocaml_Runtime[18],embed_personne_vivant_habituel,x[3])], + _bRt_], + _bRv_= + [0, + [0, + cst_ressources_conjoint_in, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bRu_]; + return [7, + _l4_, + [0, + [0, + cst_ressources_demandeur_in, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bRv_]]} + var ContributionsSocialesAidesPers$0=[0]; + function embed_contributions_sociales_a$0(x) + {return [7, + _l5_, + [0, + [0, + cst_date_courante_in$7, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + 0]]} + var CalculAidePersonnaliseeLogemen$3=[0]; + function embed_calcul_aide_personnalise$3(x) + {var + _bQ__= + [0, + [0, + cst_logement_meubl_d842_2_in, + caml_call1(Runtime_ocaml_Runtime[12],x[13])], + 0], + _bQ$_= + [0, + [0, + cst_r_duction_loyer_solidarit_$0, + caml_call1(Runtime_ocaml_Runtime[13],x[12])], + _bQ__], + _bRa_= + [0, + [0,cst_colocation_in,caml_call1(Runtime_ocaml_Runtime[12],x[11])], + _bQ$_], + _bRb_= + [0,[0,cst_type_aide_in,embed_type_aides_personnelle_l(x[10])],_bRa_], + _bRc_= + [0, + [0, + cst_g_es_ou_handicap_adultes_h$0, + caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bRb_], + _bRd_= + [0, + [0, + cst_logement_est_chambre_in, + caml_call1(Runtime_ocaml_Runtime[12],x[8])], + _bRc_], + _bRe_=[0,[0,cst_zone_in,embed_zone_d_habitation(x[7])],_bRd_], + _bRf_= + [0, + [0, + cst_situation_familiale_calcul, + embed_situation_familiale_calc(x[6])], + _bRe_], + _bRg_= + [0, + [0, + cst_nombre_personnes_charge_in, + caml_call1(Runtime_ocaml_Runtime[14],x[5])], + _bRf_], + _bRh_= + [0, + [0,cst_date_courante_in$8,caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bRg_], + _bRi_= + [0, + [0, + cst_b_n_ficiaire_aide_adulte_o$0, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bRh_], + _bRj_= + [0, + [0, + cst_ressources_m_nage_arrondie$0, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bRi_]; + return [7, + _l6_, + [0, + [0, + cst_loyer_principal_base_in, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bRj_]]} + var CalculEquivalenceLoyerMinimale$0=[0]; + function embed_calcul_equivalence_loyer$0(x) + {var + _bQ8_= + [0, + [0, + cst_n_nombre_parts_d832_25_in, + caml_call1(Runtime_ocaml_Runtime[15],x[3])], + 0], + _bQ9_= + [0, + [0, + cst_condition_2_du_832_25_in, + caml_call1(Runtime_ocaml_Runtime[12],x[2])], + _bQ8_]; + return [7, + _l7_, + [0, + [0, + cst_ressources_m_nage_arrondie$1, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bQ9_]]} + var CalculNombrePartLogementFoyerI=[0]; + function embed_calcul_nombre_part_logem$0(x) + {var + _bQ6_= + [0, + [0, + cst_situation_familiale_calcul$0, + embed_situation_familiale_calc(x[3])], + 0], + _bQ7_= + [0, + [0, + cst_nombre_personnes_charge_in$0, + caml_call1(Runtime_ocaml_Runtime[14],x[2])], + _bQ6_]; + return [7, + _l8_, + [0, + [0, + cst_condition_2_du_832_25_in$0, + caml_call1(Runtime_ocaml_Runtime[12],x[1])], + _bQ7_]]} + var CalculAidePersonnaliseeLogemen$4=[0]; + function embed_calcul_aide_personnalise$4(x) + {var + _bQX_= + [0, + [0, + cst_n_nombre_parts_d832_25_in$0, + caml_call1(Runtime_ocaml_Runtime[10],x[10])], + 0], + _bQY_= + [0, + [0, + cst_condition_2_du_832_25_in$1, + caml_call1(Runtime_ocaml_Runtime[10],x[9])], + _bQX_], + _bQZ_= + [0, + [0,cst_redevance_in,caml_call1(Runtime_ocaml_Runtime[13],x[8])], + _bQY_], + _bQ0_= + [0, + [0,cst_date_courante_in$9,caml_call1(Runtime_ocaml_Runtime[16],x[7])], + _bQZ_], + _bQ1_=[0,[0,cst_zone_in$0,embed_zone_d_habitation(x[6])],_bQ0_], + _bQ2_= + [0, + [0, + cst_situation_familiale_calcul$1, + embed_situation_familiale_calc(x[5])], + _bQ1_], + _bQ3_= + [0, + [0, + cst_nombre_personnes_charge_in$1, + caml_call1(Runtime_ocaml_Runtime[14],x[4])], + _bQ2_], + _bQ4_= + [0, + [0, + cst_ressources_m_nage_arrondie$2, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bQ3_], + _bQ5_= + [0, + [0, + cst_date_conventionnement_in, + caml_call1(Runtime_ocaml_Runtime[16],x[2])], + _bQ4_]; + return [7, + _l9_, + [0, + [0,cst_type_logement_foyer_in,embed_type_logement_foyer(x[1])], + _bQ5_]]} + var CalculNombrePartsAccessionProp$0=[0]; + function embed_calcul_nombre_parts_acce$0(x) + {var + _bQW_= + [0, + [0, + cst_situation_familiale_calcul$2, + embed_situation_familiale_calc(x[2])], + 0]; + return [7, + _l__, + [0, + [0, + cst_nombre_personnes_charge_in$2, + caml_call1(Runtime_ocaml_Runtime[14],x[1])], + _bQW_]]} + var CalculAidePersonnaliseeLogemen$5=[0]; + function embed_calcul_aide_personnalise$5(x) + {var + _bQJ_= + [0, + [0, + cst_date_courante_in$10, + caml_call1(Runtime_ocaml_Runtime[16],x[14])], + 0], + _bQK_= + [0,[0,cst_anciennet_logement_in,embed_neuf_ou_ancien(x[13])],_bQJ_], + _bQL_=[0,[0,cst_type_pr_t_in,embed_type_pret(x[12])],_bQK_], + _bQM_=[0,[0,cst_zone_in$1,embed_zone_d_habitation(x[11])],_bQL_], + _bQN_= + [0, + [0, + cst_situation_r822_11_13_17_in, + caml_call1(Runtime_ocaml_Runtime[12],x[10])], + _bQM_], + _bQO_= + [0, + [0,cst_copropri_t_in,caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bQN_], + _bQP_= + [0, + [0, + cst_date_entr_e_logement_in, + caml_call1(Runtime_ocaml_Runtime[16],x[8])], + _bQO_], + _bQQ_= + [0, + [0, + cst_local_habit_premi_re_fois_$0, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bQP_], + _bQR_= + [0, + [0, + cst_date_signature_pr_t_in, + caml_call1(Runtime_ocaml_Runtime[16],x[6])], + _bQQ_], + _bQS_= + [0, + [0,cst_type_travaux_logement_in,embed_type_travaux_logement_d8(x[5])], + _bQR_], + _bQT_= + [0, + [0, + cst_situation_familiale_calcul$3, + embed_situation_familiale_calc(x[4])], + _bQS_], + _bQU_= + [0, + [0, + cst_nombre_personnes_charge_in$3, + caml_call1(Runtime_ocaml_Runtime[14],x[3])], + _bQT_], + _bQV_= + [0, + [0, + cst_ressources_m_nage_arrondie$3, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bQU_]; + return [7, + _l$_, + [0, + [0, + cst_mensualit_principale_in, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bQV_]]} + var CalculAidePersonnaliseeLogemen$6=[0]; + function embed_calcul_aide_personnalise$6(x) + {var + _bQD_= + [0, + [0, + cst_date_courante_in$11, + caml_call1(Runtime_ocaml_Runtime[16],x[7])], + 0], + _bQE_=[0,[0,cst_zone_in$2,embed_zone_d_habitation(x[6])],_bQD_], + _bQF_= + [0, + [0, + cst_nombre_personnes_charge_in$4, + caml_call1(Runtime_ocaml_Runtime[14],x[5])], + _bQE_], + _bQG_= + [0, + [0,cst_situation_familiale_in$0,embed_situation_familiale(x[4])], + _bQF_], + _bQH_= + [0, + [0, + cst_ressources_m_nage_sans_arr, + caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bQG_], + _bQI_= + [0,[0,cst_type_aide_in$0,embed_type_aides_personnelle_l(x[2])],_bQH_]; + return [7, + _ma_, + [0, + [0,cst_mode_occupation_in$0,embed_mode_occupation(x[1])], + _bQI_]]} + var CalculAllocationLogementLocati$0=[0]; + function embed_calcul_allocation_logeme$3(x) + {var + _bQq_= + [0, + [0, + cst_changement_logement_d842_4$0, + embed_changement_logement_d842(x[14])], + 0], + _bQr_= + [0, + [0, + cst_logement_meubl_d842_2_in$0, + caml_call1(Runtime_ocaml_Runtime[12],x[13])], + _bQq_], + _bQs_= + [0, + [0, + cst_r_duction_loyer_solidarit_$1, + caml_call1(Runtime_ocaml_Runtime[13],x[12])], + _bQr_], + _bQt_= + [0, + [0,cst_colocation_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[11])], + _bQs_], + _bQu_= + [0,[0,cst_type_aide_in$1,embed_type_aides_personnelle_l(x[10])],_bQt_], + _bQv_= + [0, + [0, + cst_g_es_ou_handicap_adultes_h$1, + caml_call1(Runtime_ocaml_Runtime[12],x[9])], + _bQu_], + _bQw_= + [0, + [0, + cst_logement_est_chambre_in$0, + caml_call1(Runtime_ocaml_Runtime[12],x[8])], + _bQv_], + _bQx_=[0,[0,cst_zone_in$3,embed_zone_d_habitation(x[7])],_bQw_], + _bQy_= + [0, + [0, + cst_situation_familiale_calcul$4, + embed_situation_familiale_calc(x[6])], + _bQx_], + _bQz_= + [0, + [0, + cst_nombre_personnes_charge_in$5, + caml_call1(Runtime_ocaml_Runtime[14],x[5])], + _bQy_], + _bQA_= + [0, + [0, + cst_date_courante_in$12, + caml_call1(Runtime_ocaml_Runtime[16],x[4])], + _bQz_], + _bQB_= + [0, + [0, + cst_b_n_ficiaire_aide_adulte_o$1, + caml_call1(Runtime_ocaml_Runtime[12],x[3])], + _bQA_], + _bQC_= + [0, + [0, + cst_ressources_m_nage_arrondie$4, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bQB_]; + return [7, + _mb_, + [0, + [0, + cst_loyer_principal_in, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bQC_]]} + var CalculAllocationLogementAccess$0=[0]; + function embed_calcul_allocation_logeme$4(x) + {var + _bQe_= + [0, + [0,cst_copropri_t_in$0,caml_call1(Runtime_ocaml_Runtime[12],x[13])], + 0], + _bQf_= + [0, + [0, + cst_charges_mensuelles_pr_t_in, + caml_call1(Runtime_ocaml_Runtime[13],x[12])], + _bQe_], + _bQg_= + [0, + [0, + cst_date_entr_e_logement_in$0, + caml_call1(Runtime_ocaml_Runtime[16],x[11])], + _bQf_], + _bQh_= + [0, + [0, + cst_local_habit_premi_re_fois_$1, + caml_call1(Runtime_ocaml_Runtime[12],x[10])], + _bQg_], + _bQi_= + [0, + [0, + cst_type_travaux_logement_in$0, + embed_type_travaux_logement_r8(x[9])], + _bQh_], + _bQj_= + [0, + [0, + cst_date_signature_pr_t_in$0, + caml_call1(Runtime_ocaml_Runtime[16],x[8])], + _bQi_], + _bQk_= + [0, + [0, + cst_situation_r822_11_13_17_in$0, + caml_call1(Runtime_ocaml_Runtime[12],x[7])], + _bQj_], + _bQl_= + [0, + [0, + cst_mensualit_principale_in$0, + caml_call1(Runtime_ocaml_Runtime[13],x[6])], + _bQk_], + _bQm_= + [0, + [0, + cst_date_courante_in$13, + caml_call1(Runtime_ocaml_Runtime[16],x[5])], + _bQl_], + _bQn_=[0,[0,cst_zone_in$4,embed_zone_d_habitation(x[4])],_bQm_], + _bQo_= + [0, + [0, + cst_situation_familiale_calcul$5, + embed_situation_familiale_calc(x[3])], + _bQn_], + _bQp_= + [0, + [0, + cst_nombre_personnes_charge_in$6, + caml_call1(Runtime_ocaml_Runtime[14],x[2])], + _bQo_]; + return [7, + _mc_, + [0, + [0, + cst_ressources_m_nage_arrondie$5, + caml_call1(Runtime_ocaml_Runtime[13],x[1])], + _bQp_]]} + var CalculAllocationLogementFoyerI=[0]; + function embed_calcul_allocation_logeme$5(x) + {var + _bP8_= + [0, + [0, + cst_cat_gorie_quivalence_loyer$0, + embed_categorie_equivalence_lo(x[9])], + 0], + _bP9_= + [0, + [0, + cst_date_courante_in$14, + caml_call1(Runtime_ocaml_Runtime[16],x[8])], + _bP8_], + _bP__=[0,[0,cst_zone_in$5,embed_zone_d_habitation(x[7])],_bP9_], + _bP$_= + [0, + [0, + cst_situation_familiale_calcul$6, + embed_situation_familiale_calc(x[6])], + _bP__], + _bQa_= + [0, + [0, + cst_nombre_personnes_charge_in$7, + caml_call1(Runtime_ocaml_Runtime[14],x[5])], + _bP$_], + _bQb_= + [0, + [0, + cst_ressources_m_nage_arrondie$6, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bQa_], + _bQc_= + [0, + [0,cst_redevance_in$0,caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bQb_], + _bQd_= + [0, + [0, + cst_date_conventionnement_in$0, + caml_call1(Runtime_ocaml_Runtime[16],x[2])], + _bQc_]; + return [7, + _md_, + [0, + [0, + cst_type_logement_foyer_in$0, + embed_type_logement_foyer(x[1])], + _bQd_]]} + var CalculAllocationLogementIn=[0]; + function embed_calcul_allocation_logeme$6(x) + {var + _bP2_=[0,[0,cst_type_aide_in$2,embed_type_aides_personnelle_l(x[7])],0], + _bP3_= + [0, + [0, + cst_date_courante_in$15, + caml_call1(Runtime_ocaml_Runtime[16],x[6])], + _bP2_], + _bP4_=[0,[0,cst_zone_in$6,embed_zone_d_habitation(x[5])],_bP3_], + _bP5_= + [0, + [0, + cst_nombre_personnes_charge_in$8, + caml_call1(Runtime_ocaml_Runtime[14],x[4])], + _bP4_], + _bP6_= + [0, + [0,cst_situation_familiale_in$1,embed_situation_familiale(x[3])], + _bP5_], + _bP7_= + [0, + [0, + cst_ressources_m_nage_sans_arr$0, + caml_call1(Runtime_ocaml_Runtime[13],x[2])], + _bP6_]; + return [7, + _me_, + [0, + [0,cst_mode_occupation_in$1,embed_mode_occupation(x[1])], + _bP7_]]} + var OuvertureDroitsRetraiteIn=[0]; + function embed_ouverture_droits_retrait$0(x) + {return [7, + _mf_, + [0, + [0, + cst_date_naissance_assur_in, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + 0]]} + var ImpayeDepenseLogementIn=[0]; + function embed_impaye_depense_logement_(x) + {var + _bPX_= + [0, + [0,cst_montant_dette_in,caml_call1(Runtime_ocaml_Runtime[13],x[6])], + 0], + _bPY_= + [0,[0,cst_d_pense_logement_in,embed_depense_logement(x[5])],_bPX_], + _bPZ_= + [0, + [0,cst_montant_charges_in,caml_call1(Runtime_ocaml_Runtime[13],x[4])], + _bPY_], + _bP0_= + [0, + [0,cst_montant_apl_in,caml_call1(Runtime_ocaml_Runtime[13],x[3])], + _bPZ_], + _bP1_=[0,[0,cst_aide_vers_e_in,embed_versement_a(x[2])],_bP0_]; + return [7, + _mg_, + [0, + [0,cst_mode_occupation_in$2,embed_mode_occupation(x[1])], + _bP1_]]} + var CalculetteAidesAuLogementIn=[0]; + function embed_calculette_aides_au_loge$1(x) + {var + _bPU_= + [0, + [0, + cst_ressources_m_nage_prises_e, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + 0], + _bPV_= + [0, + [0, + cst_date_courante_in$16, + caml_call1(Runtime_ocaml_Runtime[16],x[3])], + _bPU_], + _bPW_=[0,[0,cst_demandeur_in$3,embed_demandeur(x[2])],_bPV_]; + return [7,_mh_,[0,[0,cst_m_nage_in$3,embed_menage(x[1])],_bPW_]]} + var CalculetteAidesAuLogementGarde$0=[0]; + function embed_calculette_aides_au_loge$2(x) + {var + _bPR_= + [0, + [0, + cst_ressources_m_nage_prises_e$0, + caml_call1(Runtime_ocaml_Runtime[13],x[4])], + 0], + _bPS_= + [0, + [0, + cst_date_courante_in$17, + caml_call1(Runtime_ocaml_Runtime[16],x[3])], + _bPR_], + _bPT_=[0,[0,cst_demandeur_in$4,embed_demandeur(x[2])],_bPS_]; + return [7,_mi_,[0,[0,cst_m_nage_in$4,embed_menage(x[1])],_bPT_]]} + var BaseMensuelleAllocationsFamili$2=[0]; + function embed_base_mensuelle_allocatio$2(x) + {return [7, + _mj_, + [0, + [0, + cst_date_courante_in$18, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + 0]]} + var SmicIn$0=[0]; + function embed_smic_in$0(x) + {var _bPQ_=[0,[0,cst_r_sidence_in$2,embed_collectivite$0(x[2])],0]; + return [7, + _mk_, + [0, + [0, + cst_date_courante_in$19, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bPQ_]]} + var EligibilitePrestationsFamilial$0=[0]; + function embed_eligibilite_prestations_$0(x) + {var + _bPO_=[0,[0,cst_r_sidence_in$3,embed_collectivite$0(x[3])],0], + _bPP_= + [0, + [0, + cst_prestation_courante_in$0, + embed_element_prestations_fami$0(x[2])], + _bPO_]; + return [7, + _ml_, + [0, + [0, + cst_date_courante_in$20, + caml_call1(Runtime_ocaml_Runtime[16],x[1])], + _bPP_]]} + function contributions_sociales_aides_p(contributions_sociales_aides_p) + {var date_courante=contributions_sociales_aides_p[1]; + try + {var + _bPu_=function(param){return 0}, + _bPv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mn_,1)}, + _bPw_= + [0, + function(param) + {function _bPM_(param){return 1} + function _bPN_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_mo_,1)} + return caml_call4(Runtime_ocaml_Runtime[63],_mp_,[0],_bPN_,_bPM_)}], + _bPx_=caml_call4(Runtime_ocaml_Runtime[63],_mq_,_bPw_,_bPv_,_bPu_)} + catch(_bPL_) + {_bPL_ = caml_wrap_exception(_bPL_); + if(_bPL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mm_]; + throw _bPL_} + var + exonere_csg= + caml_call3 + (Runtime_ocaml_Runtime[28],_mr_,Runtime_ocaml_Runtime[12],_bPx_); + try + {var + _bPy_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_005)}, + _bPz_= + function(param) + {var + _bPJ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _bPK_=caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bPJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_mt_,_bPK_)}, + _bPA_=caml_call4(Runtime_ocaml_Runtime[63],_mu_,[0],_bPz_,_bPy_)} + catch(_bPI_) + {_bPI_ = caml_wrap_exception(_bPI_); + if(_bPI_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ms_]; + throw _bPI_} + var + taux_crds= + caml_call3 + (Runtime_ocaml_Runtime[28],_mv_,Runtime_ocaml_Runtime[15],_bPA_); + function _bPB_(aide_finale) + {try + {var + _bPC_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[104],aide_finale,taux_crds)}, + _bPD_= + function(param) + {var + _bPG_=caml_call3(Runtime_ocaml_Runtime[57],2018,9,1), + _bPH_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bPG_); + return caml_call2(Runtime_ocaml_Runtime[29],_mx_,_bPH_)}, + _bPE_=caml_call4(Runtime_ocaml_Runtime[63],_my_,[0],_bPD_,_bPC_); + return _bPE_} + catch(_bPF_) + {_bPF_ = caml_wrap_exception(_bPF_); + if(_bPF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mw_]; + throw _bPF_}} + var + montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_mz_,Runtime_ocaml_Runtime[10],_bPB_); + if(exonere_csg)return [0,montant]; + throw [0,Runtime_ocaml_Runtime[3],_mA_]} + function calcul_equivalence_loyer_minim(calcul_equivalence_loyer_minim) + {var + ressources_menage_arrondies=calcul_equivalence_loyer_minim[1], + condition_2_du_832_25=calcul_equivalence_loyer_minim[2], + n_nombre_parts_d832_25=calcul_equivalence_loyer_minim[3]; + try + {var + _bN3_= + function(param) + {return condition_2_du_832_25 + ?caml_call1(Runtime_ocaml_Runtime[31],cst_7632) + :caml_call1(Runtime_ocaml_Runtime[31],cst_4557)}, + _bN4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mC_,1)}, + _bN5_=caml_call4(Runtime_ocaml_Runtime[63],_mD_,[0],_bN4_,_bN3_)} + catch(_bPt_) + {_bPt_ = caml_wrap_exception(_bPt_); + if(_bPt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mB_]; + throw _bPt_} + var + montant_forfaitaire_d832_26= + caml_call3 + (Runtime_ocaml_Runtime[28],_mE_,Runtime_ocaml_Runtime[13],_bN5_); + try + {var + _bN6_= + function(param) + {var + _bPd_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_48), + _bPe_= + [0,_mG_,caml_call1(Runtime_ocaml_Runtime[31],cst_633129),_bPd_], + _bPf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_32$1), + _bPg_=caml_call1(Runtime_ocaml_Runtime[31],cst_535744), + _bPh_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_633129$0)], + _bPg_, + _bPf_], + _bPi_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_264), + _bPj_=caml_call1(Runtime_ocaml_Runtime[31],cst_389618), + _bPk_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_535744$0)], + _bPj_, + _bPi_], + _bPl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_216), + _bPm_=caml_call1(Runtime_ocaml_Runtime[31],cst_267871), + _bPn_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_389618$0)], + _bPm_, + _bPl_], + _bPo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_104), + _bPp_=caml_call1(Runtime_ocaml_Runtime[31],cst_194810), + _bPq_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_267871$0)], + _bPp_, + _bPo_], + _bPr_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_04$0), + _bPs_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$67); + return [0, + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_194810$0)], + _bPs_, + _bPr_], + _bPq_, + _bPn_, + _bPk_, + _bPh_, + _bPe_]}, + _bN7_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mH_,1)}, + _bN8_= + [0, + function(param) + {function _bO0_(param) + {var + _bO2_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_328), + _bO3_= + [0, + _mI_, + caml_call1(Runtime_ocaml_Runtime[31],cst_409505), + _bO2_], + _bO4_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_232$0), + _bO5_=caml_call1(Runtime_ocaml_Runtime[31],cst_262985), + _bO6_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_409505$0)], + _bO5_, + _bO4_], + _bO7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_208), + _bO8_=caml_call1(Runtime_ocaml_Runtime[31],cst_204761), + _bO9_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_262985$0)], + _bO8_, + _bO7_], + _bO__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_024), + _bO$_=caml_call1(Runtime_ocaml_Runtime[31],cst_142303), + _bPa_= + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_204761$0)], + _bO$_, + _bO__], + _bPb_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$68), + _bPc_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$69); + return [0, + [0, + [0,caml_call1(Runtime_ocaml_Runtime[31],cst_142303$0)], + _bPc_, + _bPb_], + _bPa_, + _bO9_, + _bO6_, + _bO3_]} + function _bO1_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_mJ_,condition_2_du_832_25)} + return caml_call4(Runtime_ocaml_Runtime[63],_mK_,[0],_bO1_,_bO0_)}], + _bN9_=caml_call4(Runtime_ocaml_Runtime[63],_mL_,_bN8_,_bN7_,_bN6_)} + catch(_bOZ_) + {_bOZ_ = caml_wrap_exception(_bOZ_); + if(_bOZ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mF_]; + throw _bOZ_} + var + _bN__=caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu), + tranches_revenus_d832_26= + caml_call3(Runtime_ocaml_Runtime[28],_mM_,_bN__,_bN9_); + try + {var + _bN$_= + function(param) + {function _bOS_(tranche) + {var + _bOT_=tranche[3], + _bOU_=caml_call1(Runtime_ocaml_Runtime[70],tranche[2]), + _bOV_= + caml_call2 + (Runtime_ocaml_Runtime[103],_bOU_,n_nombre_parts_d832_25), + _bOW_=tranche[1]; + if(0 === _bOW_[0]) + var + tranche_haut=_bOW_[1], + _bOX_=caml_call1(Runtime_ocaml_Runtime[70],tranche_haut), + _bOY_= + [0, + caml_call2 + (Runtime_ocaml_Runtime[103],_bOX_,n_nombre_parts_d832_25)]; + else + var _bOY_=_mO_; + return [0,_bOY_,_bOV_,_bOT_]} + return caml_call2 + (Runtime_ocaml_Runtime[87],_bOS_,tranches_revenus_d832_26)}, + _bOa_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mP_,1)}, + _bOb_=caml_call4(Runtime_ocaml_Runtime[63],_mQ_,[0],_bOa_,_bN$_)} + catch(_bOR_) + {_bOR_ = caml_wrap_exception(_bOR_); + if(_bOR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mN_]; + throw _bOR_} + var + _bOc_= + caml_call1(Runtime_ocaml_Runtime[18],embed_tranche_revenu_decimal), + tranches_revenus_d832_26_multi= + caml_call3(Runtime_ocaml_Runtime[28],_mR_,_bOc_,_bOb_); + try + {var + _bOd_= + function(param) + {var + ressources_menage_arrondies$0= + caml_call1 + (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), + _bOA_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$11), + _bOB_= + caml_call1 + (Runtime_ocaml_Runtime[70],montant_forfaitaire_d832_26), + _bOC_= + caml_call2 + (Runtime_ocaml_Runtime[103],_bOB_,n_nombre_parts_d832_25); + function _bOD_(tranche) + {if + (caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage_arrondies$0, + tranche[2])) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$70); + var _bOK_=tranche[1]; + if(0 === _bOK_[0]) + {var tranche_haut=_bOK_[1]; + if + (caml_call2 + (Runtime_ocaml_Runtime[127], + ressources_menage_arrondies$0, + tranche_haut)) + {var + _bOL_=tranche[3], + _bOM_= + caml_call2 + (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOM_,_bOL_)} + var + _bON_=tranche[3], + _bOO_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOO_,_bON_)} + var + _bOP_=tranche[3], + _bOQ_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOQ_,_bOP_)} + var + _bOE_= + caml_call2 + (Runtime_ocaml_Runtime[87], + _bOD_, + tranches_revenus_d832_26_multi), + _bOF_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$71); + function _bOG_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} + var + _bOH_=caml_call3(Runtime_ocaml_Runtime[88],_bOG_,_bOF_,_bOE_), + _bOI_=caml_call2(Runtime_ocaml_Runtime[92],_bOH_,_bOC_), + _bOJ_=caml_call2(Runtime_ocaml_Runtime[107],_bOI_,_bOA_); + return caml_call1(Runtime_ocaml_Runtime[71],_bOJ_)}, + _bOe_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mT_,1)}, + _bOf_= + [0, + function(param) + {function _bOi_(param) + {var + ressources_menage_arrondies$0= + caml_call1 + (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), + _bOk_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$12), + _bOl_= + caml_call1 + (Runtime_ocaml_Runtime[70],montant_forfaitaire_d832_26); + function _bOm_(tranche) + {if + (caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage_arrondies$0, + tranche[2])) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$72); + var _bOt_=tranche[1]; + if(0 === _bOt_[0]) + {var tranche_haut=_bOt_[1]; + if + (caml_call2 + (Runtime_ocaml_Runtime[127], + ressources_menage_arrondies$0, + tranche_haut)) + {var + _bOu_=tranche[3], + _bOv_= + caml_call2 + (Runtime_ocaml_Runtime[97],tranche_haut,tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOv_,_bOu_)} + var + _bOw_=tranche[3], + _bOx_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOx_,_bOw_)} + var + _bOy_=tranche[3], + _bOz_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + tranche[2]); + return caml_call2(Runtime_ocaml_Runtime[103],_bOz_,_bOy_)} + var + _bOn_= + caml_call2 + (Runtime_ocaml_Runtime[87], + _bOm_, + tranches_revenus_d832_26_multi), + _bOo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$73); + function _bOp_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)} + var + _bOq_=caml_call3(Runtime_ocaml_Runtime[88],_bOp_,_bOo_,_bOn_), + _bOr_=caml_call2(Runtime_ocaml_Runtime[92],_bOq_,_bOl_), + _bOs_=caml_call2(Runtime_ocaml_Runtime[107],_bOr_,_bOk_); + return caml_call1(Runtime_ocaml_Runtime[71],_bOs_)} + function _bOj_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_mU_,condition_2_du_832_25)} + return caml_call4(Runtime_ocaml_Runtime[63],_mV_,[0],_bOj_,_bOi_)}], + _bOg_=caml_call4(Runtime_ocaml_Runtime[63],_mW_,_bOf_,_bOe_,_bOd_)} + catch(_bOh_) + {_bOh_ = caml_wrap_exception(_bOh_); + if(_bOh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mS_]; + throw _bOh_} + var + montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_mX_,Runtime_ocaml_Runtime[13],_bOg_); + return [0,montant]} + function calcul_nombre_part_logement_fo(calcul_nombre_part_logement_fo) + {var + condition_2_du_832_25=calcul_nombre_part_logement_fo[1], + nombre_personnes_a_charge=calcul_nombre_part_logement_fo[2], + situation_familiale_calcul_apl=calcul_nombre_part_logement_fo[3]; + try + {var + _bNA_= + function(param) + {var _bNS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNS_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4) + :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8); + var _bNT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNT_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5); + var _bNU_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$17); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNU_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3$3); + var _bNV_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$4); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNV_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7); + var _bNW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNW_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3); + var + _bNX_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$0), + _bNY_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNX_), + _bNZ_=caml_call1(Runtime_ocaml_Runtime[69],_bNY_), + _bN0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$1), + _bN1_=caml_call2(Runtime_ocaml_Runtime[103],_bN0_,_bNZ_), + _bN2_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$0); + return caml_call2(Runtime_ocaml_Runtime[92],_bN2_,_bN1_)}, + _bNB_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_mZ_,1)}, + _bNC_= + [0, + function(param) + {function _bNF_(param) + {var _bNH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNH_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_2) + :caml_call1(Runtime_ocaml_Runtime[39],cst_1_5); + var _bNI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$29); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNI_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$0); + var _bNJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$18); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNJ_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3$5); + var _bNK_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$6); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNK_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$0); + var _bNL_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$1); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNL_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$1); + var + _bNM_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$2), + _bNN_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNM_), + _bNO_=caml_call1(Runtime_ocaml_Runtime[69],_bNN_), + _bNP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$2), + _bNQ_=caml_call2(Runtime_ocaml_Runtime[103],_bNP_,_bNO_), + _bNR_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$2); + return caml_call2(Runtime_ocaml_Runtime[92],_bNR_,_bNQ_)} + function _bNG_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_m0_,condition_2_du_832_25)} + return caml_call4(Runtime_ocaml_Runtime[63],_m1_,[0],_bNG_,_bNF_)}], + _bND_=caml_call4(Runtime_ocaml_Runtime[63],_m2_,_bNC_,_bNB_,_bNA_)} + catch(_bNE_) + {_bNE_ = caml_wrap_exception(_bNE_); + if(_bNE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_mY_]; + throw _bNE_} + var + n_nombre_parts_d832_25= + caml_call3 + (Runtime_ocaml_Runtime[28],_m3_,Runtime_ocaml_Runtime[15],_bND_); + return [0,n_nombre_parts_d832_25]} + function calcul_nombre_parts_accession_(calcul_nombre_parts_accession_) + {var + nombre_personnes_a_charge=calcul_nombre_parts_accession_[1], + situation_familiale_calcul_apl=calcul_nombre_parts_accession_[2]; + try + {var + _bNl_= + function(param) + {var _bNp_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNp_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_1_4$0) + :caml_call1(Runtime_ocaml_Runtime[39],cst_1_8$0); + var _bNq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNq_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$1); + var _bNr_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$19); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNr_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3$7); + var _bNs_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$8); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNs_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_3_7$1); + var _bNt_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$3); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bNt_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$3); + var + _bNu_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$4), + _bNv_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bNu_), + _bNw_=caml_call1(Runtime_ocaml_Runtime[69],_bNv_), + _bNx_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_5$3), + _bNy_=caml_call2(Runtime_ocaml_Runtime[103],_bNx_,_bNw_), + _bNz_=caml_call1(Runtime_ocaml_Runtime[39],cst_4_3$4); + return caml_call2(Runtime_ocaml_Runtime[92],_bNz_,_bNy_)}, + _bNm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_m5_,1)}, + _bNn_=caml_call4(Runtime_ocaml_Runtime[63],_m6_,[0],_bNm_,_bNl_)} + catch(_bNo_) + {_bNo_ = caml_wrap_exception(_bNo_); + if(_bNo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_m4_]; + throw _bNo_} + var + n_nombre_parts_d832_11= + caml_call3 + (Runtime_ocaml_Runtime[28],_m7_,Runtime_ocaml_Runtime[15],_bNn_); + return [0,n_nombre_parts_d832_11]} + function ouverture_droits_retraite(ouverture_droits_retraite_in) + {var date_naissance_assure=ouverture_droits_retraite_in[1]; + try + {var + _bMB_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bMC_=function(param){return 0}, + _bMD_= + function(param) + {function _bNe_(param) + {var + _bNj_=caml_call3(Runtime_ocaml_Runtime[60],0,7,0), + _bNk_=caml_call3(Runtime_ocaml_Runtime[60],61,0,0); + return caml_call2(Runtime_ocaml_Runtime[95],_bNk_,_bNj_)} + function _bNf_(param) + {var + _bNg_=caml_call1(Runtime_ocaml_Runtime[46],cst_1954), + _bNh_= + caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), + _bNi_=caml_call2(Runtime_ocaml_Runtime[86],_bNh_,_bNg_); + return caml_call2(Runtime_ocaml_Runtime[29],_m9_,_bNi_)} + return caml_call4(Runtime_ocaml_Runtime[63],_m__,[0],_bNf_,_bNe_)}, + _bME_= + function(param) + {function _bM9_(param) + {var + _bNc_=caml_call3(Runtime_ocaml_Runtime[60],0,2,0), + _bNd_=caml_call3(Runtime_ocaml_Runtime[60],61,0,0); + return caml_call2(Runtime_ocaml_Runtime[95],_bNd_,_bNc_)} + function _bM__(param) + {var + _bM$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1953), + _bNa_= + caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), + _bNb_=caml_call2(Runtime_ocaml_Runtime[86],_bNa_,_bM$_); + return caml_call2(Runtime_ocaml_Runtime[29],_m$_,_bNb_)} + return caml_call4(Runtime_ocaml_Runtime[63],_na_,[0],_bM__,_bM9_)}, + _bMF_= + function(param) + {function _bM2_(param) + {var + _bM7_=caml_call3(Runtime_ocaml_Runtime[60],0,9,0), + _bM8_=caml_call3(Runtime_ocaml_Runtime[60],60,0,0); + return caml_call2(Runtime_ocaml_Runtime[95],_bM8_,_bM7_)} + function _bM3_(param) + {var + _bM4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1952), + _bM5_= + caml_call1(Runtime_ocaml_Runtime[74],date_naissance_assure), + _bM6_=caml_call2(Runtime_ocaml_Runtime[86],_bM5_,_bM4_); + return caml_call2(Runtime_ocaml_Runtime[29],_nb_,_bM6_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nc_,[0],_bM3_,_bM2_)}, + _bMG_= + function(param) + {function _bMT_(param) + {var + _bM0_=caml_call3(Runtime_ocaml_Runtime[60],0,4,0), + _bM1_=caml_call3(Runtime_ocaml_Runtime[60],60,0,0); + return caml_call2(Runtime_ocaml_Runtime[95],_bM1_,_bM0_)} + function _bMU_(param) + {var + _bMV_=caml_call3(Runtime_ocaml_Runtime[57],1951,12,31), + _bMW_= + caml_call2 + (Runtime_ocaml_Runtime[120],date_naissance_assure,_bMV_), + _bMX_=caml_call3(Runtime_ocaml_Runtime[57],1951,7,1), + _bMY_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_naissance_assure,_bMX_), + _bMZ_=caml_call2(Runtime_ocaml_Runtime[83],_bMY_,_bMW_); + return caml_call2(Runtime_ocaml_Runtime[29],_nd_,_bMZ_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ne_,[0],_bMU_,_bMT_)}, + _bMH_= + function(param) + {function _bMP_(param) + {return caml_call3(Runtime_ocaml_Runtime[60],60,0,0)} + function _bMQ_(param) + {var + _bMR_=caml_call3(Runtime_ocaml_Runtime[57],1951,7,1), + _bMS_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_naissance_assure,_bMR_); + return caml_call2(Runtime_ocaml_Runtime[29],_nf_,_bMS_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ng_,[0],_bMQ_,_bMP_)}, + _bMI_= + [0, + function(param) + {function _bML_(param) + {return caml_call3(Runtime_ocaml_Runtime[60],62,0,0)} + function _bMM_(param) + {var + _bMN_=caml_call3(Runtime_ocaml_Runtime[57],1955,1,1), + _bMO_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_naissance_assure,_bMN_); + return caml_call2(Runtime_ocaml_Runtime[29],_nh_,_bMO_)} + return caml_call4(Runtime_ocaml_Runtime[63],_ni_,[0],_bMM_,_bML_)}, + _bMH_, + _bMG_, + _bMF_, + _bME_, + _bMD_], + _bMJ_=caml_call4(Runtime_ocaml_Runtime[63],_nj_,_bMI_,_bMC_,_bMB_)} + catch(_bMK_) + {_bMK_ = caml_wrap_exception(_bMK_); + if(_bMK_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_m8_]; + throw _bMK_} + var + age_ouverture_droit= + caml_call3 + (Runtime_ocaml_Runtime[28],_nk_,Runtime_ocaml_Runtime[17],_bMJ_); + return [0,age_ouverture_droit]} + function impaye_depense_logement(impaye_depense_logement_in) + {var + mode_occupation=impaye_depense_logement_in[1], + aide_versee=impaye_depense_logement_in[2], + montant_apl=impaye_depense_logement_in[3], + montant_charges=impaye_depense_logement_in[4], + depense_logement=impaye_depense_logement_in[5], + montant_dette=impaye_depense_logement_in[6]; + try + {var + _bLj_= + function(param) + {switch(mode_occupation[0]) + {case 0:return _nm_; + case 1:return _nn_; + case 2:return _no_; + case 3:return _np_; + default:return _nq_}}, + _bLk_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_nr_,1)}, + _bLl_=caml_call4(Runtime_ocaml_Runtime[63],_ns_,[0],_bLk_,_bLj_)} + catch(_bMA_) + {_bMA_ = caml_wrap_exception(_bMA_); + if(_bMA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nl_]; + throw _bMA_} + var + mode_occupation_impaye= + caml_call3 + (Runtime_ocaml_Runtime[28],_nt_,embed_mode_occupation_impaye,_bLl_); + try + {var + _bLm_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bLn_=function(param){return 0}, + _bLo_= + [0, + function(param) + {function _bMt_(param){return depense_logement} + function _bMu_(param) + {var _bMz_=0 === mode_occupation_impaye[0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[29],_nv_,_bMz_)} + var + _bMv_= + [0, + function(param) + {function _bMw_(param){return depense_logement} + function _bMx_(param) + {var _bMy_=0 === mode_occupation_impaye[0]?0:1; + return caml_call2(Runtime_ocaml_Runtime[29],_nw_,_bMy_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_nx_,[0],_bMx_,_bMw_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ny_,_bMv_,_bMu_,_bMt_)}], + _bLp_=caml_call4(Runtime_ocaml_Runtime[63],_nz_,_bLo_,_bLn_,_bLm_)} + catch(_bMs_) + {_bMs_ = caml_wrap_exception(_bMs_); + if(_bMs_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nu_]; + throw _bMs_} + var + depense_logement_brute= + caml_call3 + (Runtime_ocaml_Runtime[28],_nA_,embed_depense_logement,_bLp_); + try + {var + _bLq_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bLr_=function(param){return 0}, + _bLs_= + function(param) + {function _bMn_(param) + {switch(depense_logement[0]) + {case 0: + var + total_echeances=depense_logement[1], + _bMq_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$13), + _bMr_= + caml_call2(Runtime_ocaml_Runtime[104],montant_apl,_bMq_); + return [0, + caml_call2(Runtime_ocaml_Runtime[98],total_echeances,_bMr_)]; + case 1: + var mensualite=depense_logement[1]; + return [1, + caml_call2(Runtime_ocaml_Runtime[98],mensualite,montant_apl)]; + default:var loyer=depense_logement[1];return [2,loyer]}} + function _bMo_(param) + {var _bMp_=0 === mode_occupation_impaye[0]?0:1; + return caml_call2(Runtime_ocaml_Runtime[29],_nC_,_bMp_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nD_,[0],_bMo_,_bMn_)}, + _bLt_= + [0, + function(param) + {function _bMk_(param) + {switch(depense_logement_brute[0]) + {case 0:var total=depense_logement_brute[1];return [0,total]; + case 1: + var mensualite=depense_logement_brute[1]; + return [1,mensualite]; + default: + var montant_loyer=depense_logement_brute[1]; + return [2, + caml_call2 + (Runtime_ocaml_Runtime[98],montant_loyer,montant_apl)]}} + function _bMl_(param) + {var _bMm_=0 === mode_occupation_impaye[0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[29],_nE_,_bMm_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nF_,[0],_bMl_,_bMk_)}, + _bLs_], + _bLu_=caml_call4(Runtime_ocaml_Runtime[63],_nG_,_bLt_,_bLr_,_bLq_)} + catch(_bMj_) + {_bMj_ = caml_wrap_exception(_bMj_); + if(_bMj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nB_]; + throw _bMj_} + var + depense_logement_nette= + caml_call3 + (Runtime_ocaml_Runtime[28],_nH_,embed_depense_logement,_bLu_); + try + {var + _bLv_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bLw_=function(param){return 0}, + _bLx_= + function(param) + {function _bMa_(param) + {switch(depense_logement_nette[0]) + {case 0: + var + echeance_pret_nette=depense_logement_nette[1], + _bMf_=caml_call1(Runtime_ocaml_Runtime[39],cst_6), + _bMg_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$31), + _bMh_=caml_call2(Runtime_ocaml_Runtime[107],_bMg_,_bMf_); + return caml_call2 + (Runtime_ocaml_Runtime[104],echeance_pret_nette,_bMh_); + case 1: + var + mensualite_nette=depense_logement_nette[1], + _bMi_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$20); + return caml_call2 + (Runtime_ocaml_Runtime[104],mensualite_nette,_bMi_); + default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$77)}} + function _bMb_(param) + {switch(aide_versee[0]) + {case 0:var _bMc_=0;break; + case 1:var _bMc_=0;break; + default:var _bMc_=1} + var + _bMd_=0 === mode_occupation_impaye[0]?0:1, + _bMe_=caml_call2(Runtime_ocaml_Runtime[83],_bMd_,_bMc_); + return caml_call2(Runtime_ocaml_Runtime[29],_nJ_,_bMe_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nK_,[0],_bMb_,_bMa_)}, + _bLy_= + function(param) + {function _bL3_(param) + {switch(depense_logement_brute[0]) + {case 0: + var + echeance_pret_brute=depense_logement_brute[1], + _bL8_=caml_call1(Runtime_ocaml_Runtime[39],cst_6$0), + _bL9_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$32), + _bL__=caml_call2(Runtime_ocaml_Runtime[107],_bL9_,_bL8_); + return caml_call2 + (Runtime_ocaml_Runtime[104],echeance_pret_brute,_bL__); + case 1: + var + mensualite_brute=depense_logement_brute[1], + _bL$_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$21); + return caml_call2 + (Runtime_ocaml_Runtime[104],mensualite_brute,_bL$_); + default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$78)}} + function _bL4_(param) + {switch(aide_versee[0]) + {case 0:var _bL5_=0;break; + case 1:var _bL5_=1;break; + default:var _bL5_=0} + var + _bL6_=0 === mode_occupation_impaye[0]?0:1, + _bL7_=caml_call2(Runtime_ocaml_Runtime[83],_bL6_,_bL5_); + return caml_call2(Runtime_ocaml_Runtime[29],_nL_,_bL7_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nM_,[0],_bL4_,_bL3_)}, + _bLz_= + function(param) + {function _bLW_(param) + {switch(depense_logement_nette[0]) + {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$79); + case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$80); + default: + var + loyer_net=depense_logement_nette[1], + _bL1_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$22), + _bL2_= + caml_call2 + (Runtime_ocaml_Runtime[93],loyer_net,montant_charges); + return caml_call2(Runtime_ocaml_Runtime[104],_bL2_,_bL1_)}} + function _bLX_(param) + {switch(aide_versee[0]) + {case 0:var _bLY_=1;break; + case 1:var _bLY_=0;break; + default:var _bLY_=0} + var + _bLZ_=0 === mode_occupation_impaye[0]?1:0, + _bL0_=caml_call2(Runtime_ocaml_Runtime[83],_bLZ_,_bLY_); + return caml_call2(Runtime_ocaml_Runtime[29],_nN_,_bL0_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nO_,[0],_bLX_,_bLW_)}, + _bLA_= + [0, + function(param) + {function _bLP_(param) + {switch(depense_logement_brute[0]) + {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$81); + case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$82); + default: + var + loyer_brut=depense_logement_brute[1], + _bLU_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$23), + _bLV_= + caml_call2 + (Runtime_ocaml_Runtime[93],loyer_brut,montant_charges); + return caml_call2(Runtime_ocaml_Runtime[104],_bLV_,_bLU_)}} + function _bLQ_(param) + {switch(aide_versee[0]) + {case 0:var _bLR_=0;break; + case 1:var _bLR_=1;break; + default:var _bLR_=0} + var + _bLS_=0 === mode_occupation_impaye[0]?1:0, + _bLT_=caml_call2(Runtime_ocaml_Runtime[83],_bLS_,_bLR_); + return caml_call2(Runtime_ocaml_Runtime[29],_nP_,_bLT_)} + return caml_call4(Runtime_ocaml_Runtime[63],_nQ_,[0],_bLQ_,_bLP_)}, + _bLz_, + _bLy_, + _bLx_], + _bLB_=caml_call4(Runtime_ocaml_Runtime[63],_nR_,_bLA_,_bLw_,_bLv_)} + catch(_bLO_) + {_bLO_ = caml_wrap_exception(_bLO_); + if(_bLO_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nI_]; + throw _bLO_} + var + seuil_impaye_depense_de_logeme= + caml_call3 + (Runtime_ocaml_Runtime[28],_nS_,Runtime_ocaml_Runtime[13],_bLB_); + try + {var + _bLC_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bLD_=function(param){return 0}, + _bLE_= + [0, + function(param) + {function _bLH_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[128], + montant_dette, + seuil_impaye_depense_de_logeme) + ?montant_dette + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$83)} + function _bLI_(param) + {var _bLN_=0 === mode_occupation_impaye[0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[29],_nU_,_bLN_)} + var + _bLJ_= + [0, + function(param) + {function _bLK_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[128], + montant_dette, + seuil_impaye_depense_de_logeme) + ?montant_dette + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$84)} + function _bLL_(param) + {var _bLM_=0 === mode_occupation_impaye[0]?0:1; + return caml_call2(Runtime_ocaml_Runtime[29],_nV_,_bLM_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_nW_,[0],_bLL_,_bLK_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_nX_,_bLJ_,_bLI_,_bLH_)}], + _bLF_=caml_call4(Runtime_ocaml_Runtime[63],_nY_,_bLE_,_bLD_,_bLC_)} + catch(_bLG_) + {_bLG_ = caml_wrap_exception(_bLG_); + if(_bLG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_nT_]; + throw _bLG_} + var + montant_impaye= + caml_call3 + (Runtime_ocaml_Runtime[28],_nZ_,Runtime_ocaml_Runtime[13],_bLF_); + return [0,montant_impaye]} + function base_mensuelle_allocations_fam$5(base_mensuelle_allocations_fam) + {var date_courante=base_mensuelle_allocations_fam[1]; + try + {var + _bKL_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bKM_=function(param){return 0}, + _bKN_= + function(param) + {function _bLc_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_42228$0)} + function _bLd_(param) + {var + _bLe_=caml_call3(Runtime_ocaml_Runtime[57],2023,4,1), + _bLf_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bLe_), + _bLg_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), + _bLh_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bLg_), + _bLi_=caml_call2(Runtime_ocaml_Runtime[83],_bLh_,_bLf_); + return caml_call2(Runtime_ocaml_Runtime[29],_n1_,_bLi_)} + return caml_call4(Runtime_ocaml_Runtime[63],_n2_,[0],_bLd_,_bLc_)}, + _bKO_= + function(param) + {function _bK7_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41481$0)} + function _bK8_(param) + {var + _bK9_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,1), + _bK__= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bK9_), + _bK$_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), + _bLa_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bK$_), + _bLb_=caml_call2(Runtime_ocaml_Runtime[83],_bLa_,_bK__); + return caml_call2(Runtime_ocaml_Runtime[29],_n3_,_bLb_)} + return caml_call4(Runtime_ocaml_Runtime[63],_n4_,[0],_bK8_,_bK7_)}, + _bKP_= + function(param) + {function _bK0_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41440$0)} + function _bK1_(param) + {var + _bK2_=caml_call3(Runtime_ocaml_Runtime[57],2021,4,1), + _bK3_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bK2_), + _bK4_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), + _bK5_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bK4_), + _bK6_=caml_call2(Runtime_ocaml_Runtime[83],_bK5_,_bK3_); + return caml_call2(Runtime_ocaml_Runtime[29],_n5_,_bK6_)} + return caml_call4(Runtime_ocaml_Runtime[63],_n6_,[0],_bK1_,_bK0_)}, + _bKQ_= + [0, + function(param) + {function _bKT_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_41316$0)} + function _bKU_(param) + {var + _bKV_=caml_call3(Runtime_ocaml_Runtime[57],2020,4,1), + _bKW_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bKV_), + _bKX_=caml_call3(Runtime_ocaml_Runtime[57],2019,4,1), + _bKY_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bKX_), + _bKZ_=caml_call2(Runtime_ocaml_Runtime[83],_bKY_,_bKW_); + return caml_call2(Runtime_ocaml_Runtime[29],_n7_,_bKZ_)} + return caml_call4(Runtime_ocaml_Runtime[63],_n8_,[0],_bKU_,_bKT_)}, + _bKP_, + _bKO_, + _bKN_], + _bKR_=caml_call4(Runtime_ocaml_Runtime[63],_n9_,_bKQ_,_bKM_,_bKL_)} + catch(_bKS_) + {_bKS_ = caml_wrap_exception(_bKS_); + if(_bKS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_n0_]; + throw _bKS_} + var + montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_n__,Runtime_ocaml_Runtime[13],_bKR_); + return [0,montant]} + function smic$1(smic_in) + {var date_courante=smic_in[1],residence=smic_in[2]; + try + {var + _bGZ_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bG0_=function(param){return 0}, + _bG1_= + function(param) + {function _bKC_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_851$0)} + function _bKD_(param) + {var + _bKE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oa_), + _bKF_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), + _bKG_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bKF_), + _bKH_=caml_call2(Runtime_ocaml_Runtime[83],_bKG_,_bKE_), + _bKI_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _bKJ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bKI_), + _bKK_=caml_call2(Runtime_ocaml_Runtime[83],_bKJ_,_bKH_); + return caml_call2(Runtime_ocaml_Runtime[29],_ob_,_bKK_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oc_,[0],_bKD_,_bKC_)}, + _bG2_= + function(param) + {function _bKf_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1127$0)} + function _bKg_(param) + {var + _bKh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_od_), + _bKi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oe_), + _bKj_=caml_call2(Runtime_ocaml_Runtime[84],_bKi_,_bKh_), + _bKk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_of_), + _bKl_=caml_call2(Runtime_ocaml_Runtime[84],_bKk_,_bKj_), + _bKm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_og_), + _bKn_=caml_call2(Runtime_ocaml_Runtime[84],_bKm_,_bKl_), + _bKo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oh_), + _bKp_=caml_call2(Runtime_ocaml_Runtime[84],_bKo_,_bKn_), + _bKq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oi_), + _bKr_=caml_call2(Runtime_ocaml_Runtime[84],_bKq_,_bKp_), + _bKs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oj_), + _bKt_=caml_call2(Runtime_ocaml_Runtime[84],_bKs_,_bKr_), + _bKu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ok_), + _bKv_=caml_call2(Runtime_ocaml_Runtime[84],_bKu_,_bKt_), + _bKw_=caml_call3(Runtime_ocaml_Runtime[57],2023,12,31), + _bKx_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bKw_), + _bKy_=caml_call2(Runtime_ocaml_Runtime[83],_bKx_,_bKv_), + _bKz_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _bKA_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bKz_), + _bKB_=caml_call2(Runtime_ocaml_Runtime[83],_bKA_,_bKy_); + return caml_call2(Runtime_ocaml_Runtime[29],_ol_,_bKB_)} + return caml_call4(Runtime_ocaml_Runtime[63],_om_,[0],_bKg_,_bKf_)}, + _bG3_= + function(param) + {function _bJ8_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_835$0)} + function _bJ9_(param) + {var + _bJ__=caml_call2(Runtime_ocaml_Runtime[86],residence,_on_), + _bJ$_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _bKa_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bJ$_), + _bKb_=caml_call2(Runtime_ocaml_Runtime[83],_bKa_,_bJ__), + _bKc_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), + _bKd_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bKc_), + _bKe_=caml_call2(Runtime_ocaml_Runtime[83],_bKd_,_bKb_); + return caml_call2(Runtime_ocaml_Runtime[29],_oo_,_bKe_)} + return caml_call4(Runtime_ocaml_Runtime[63],_op_,[0],_bJ9_,_bJ8_)}, + _bG4_= + function(param) + {function _bJL_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1107$0)} + function _bJM_(param) + {var + _bJN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oq_), + _bJO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_or_), + _bJP_=caml_call2(Runtime_ocaml_Runtime[84],_bJO_,_bJN_), + _bJQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_os_), + _bJR_=caml_call2(Runtime_ocaml_Runtime[84],_bJQ_,_bJP_), + _bJS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ot_), + _bJT_=caml_call2(Runtime_ocaml_Runtime[84],_bJS_,_bJR_), + _bJU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ou_), + _bJV_=caml_call2(Runtime_ocaml_Runtime[84],_bJU_,_bJT_), + _bJW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ov_), + _bJX_=caml_call2(Runtime_ocaml_Runtime[84],_bJW_,_bJV_), + _bJY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ow_), + _bJZ_=caml_call2(Runtime_ocaml_Runtime[84],_bJY_,_bJX_), + _bJ0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ox_), + _bJ1_=caml_call2(Runtime_ocaml_Runtime[84],_bJ0_,_bJZ_), + _bJ2_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _bJ3_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bJ2_), + _bJ4_=caml_call2(Runtime_ocaml_Runtime[83],_bJ3_,_bJ1_), + _bJ5_=caml_call3(Runtime_ocaml_Runtime[57],2022,8,1), + _bJ6_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bJ5_), + _bJ7_=caml_call2(Runtime_ocaml_Runtime[83],_bJ6_,_bJ4_); + return caml_call2(Runtime_ocaml_Runtime[29],_oy_,_bJ7_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oz_,[0],_bJM_,_bJL_)}, + _bG5_= + function(param) + {function _bJC_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_819$0)} + function _bJD_(param) + {var + _bJE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oA_), + _bJF_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), + _bJG_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bJF_), + _bJH_=caml_call2(Runtime_ocaml_Runtime[83],_bJG_,_bJE_), + _bJI_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), + _bJJ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bJI_), + _bJK_=caml_call2(Runtime_ocaml_Runtime[83],_bJJ_,_bJH_); + return caml_call2(Runtime_ocaml_Runtime[29],_oB_,_bJK_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oC_,[0],_bJD_,_bJC_)}, + _bG6_= + function(param) + {function _bJf_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1085$0)} + function _bJg_(param) + {var + _bJh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oD_), + _bJi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oE_), + _bJj_=caml_call2(Runtime_ocaml_Runtime[84],_bJi_,_bJh_), + _bJk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oF_), + _bJl_=caml_call2(Runtime_ocaml_Runtime[84],_bJk_,_bJj_), + _bJm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oG_), + _bJn_=caml_call2(Runtime_ocaml_Runtime[84],_bJm_,_bJl_), + _bJo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oH_), + _bJp_=caml_call2(Runtime_ocaml_Runtime[84],_bJo_,_bJn_), + _bJq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oI_), + _bJr_=caml_call2(Runtime_ocaml_Runtime[84],_bJq_,_bJp_), + _bJs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oJ_), + _bJt_=caml_call2(Runtime_ocaml_Runtime[84],_bJs_,_bJr_), + _bJu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oK_), + _bJv_=caml_call2(Runtime_ocaml_Runtime[84],_bJu_,_bJt_), + _bJw_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,31), + _bJx_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bJw_), + _bJy_=caml_call2(Runtime_ocaml_Runtime[83],_bJx_,_bJv_), + _bJz_=caml_call3(Runtime_ocaml_Runtime[57],2022,5,1), + _bJA_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bJz_), + _bJB_=caml_call2(Runtime_ocaml_Runtime[83],_bJA_,_bJy_); + return caml_call2(Runtime_ocaml_Runtime[29],_oL_,_bJB_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oM_,[0],_bJg_,_bJf_)}, + _bG7_= + function(param) + {function _bI8_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_798$0)} + function _bI9_(param) + {var + _bI__=caml_call2(Runtime_ocaml_Runtime[86],residence,_oN_), + _bI$_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), + _bJa_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bI$_), + _bJb_=caml_call2(Runtime_ocaml_Runtime[83],_bJa_,_bI__), + _bJc_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _bJd_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bJc_), + _bJe_=caml_call2(Runtime_ocaml_Runtime[83],_bJd_,_bJb_); + return caml_call2(Runtime_ocaml_Runtime[29],_oO_,_bJe_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oP_,[0],_bI9_,_bI8_)}, + _bG8_= + function(param) + {function _bIL_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1057$0)} + function _bIM_(param) + {var + _bIN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oQ_), + _bIO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oR_), + _bIP_=caml_call2(Runtime_ocaml_Runtime[84],_bIO_,_bIN_), + _bIQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oS_), + _bIR_=caml_call2(Runtime_ocaml_Runtime[84],_bIQ_,_bIP_), + _bIS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oT_), + _bIT_=caml_call2(Runtime_ocaml_Runtime[84],_bIS_,_bIR_), + _bIU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oU_), + _bIV_=caml_call2(Runtime_ocaml_Runtime[84],_bIU_,_bIT_), + _bIW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oV_), + _bIX_=caml_call2(Runtime_ocaml_Runtime[84],_bIW_,_bIV_), + _bIY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oW_), + _bIZ_=caml_call2(Runtime_ocaml_Runtime[84],_bIY_,_bIX_), + _bI0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_oX_), + _bI1_=caml_call2(Runtime_ocaml_Runtime[84],_bI0_,_bIZ_), + _bI2_=caml_call3(Runtime_ocaml_Runtime[57],2022,4,30), + _bI3_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bI2_), + _bI4_=caml_call2(Runtime_ocaml_Runtime[83],_bI3_,_bI1_), + _bI5_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _bI6_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bI5_), + _bI7_=caml_call2(Runtime_ocaml_Runtime[83],_bI6_,_bI4_); + return caml_call2(Runtime_ocaml_Runtime[29],_oY_,_bI7_)} + return caml_call4(Runtime_ocaml_Runtime[63],_oZ_,[0],_bIM_,_bIL_)}, + _bG9_= + function(param) + {function _bIC_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_774$0)} + function _bID_(param) + {var + _bIE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o0_), + _bIF_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _bIG_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bIF_), + _bIH_=caml_call2(Runtime_ocaml_Runtime[83],_bIG_,_bIE_), + _bII_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _bIJ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bII_), + _bIK_=caml_call2(Runtime_ocaml_Runtime[83],_bIJ_,_bIH_); + return caml_call2(Runtime_ocaml_Runtime[29],_o1_,_bIK_)} + return caml_call4(Runtime_ocaml_Runtime[63],_o2_,[0],_bID_,_bIC_)}, + _bG__= + function(param) + {function _bIf_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1025$0)} + function _bIg_(param) + {var + _bIh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o3_), + _bIi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o4_), + _bIj_=caml_call2(Runtime_ocaml_Runtime[84],_bIi_,_bIh_), + _bIk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o5_), + _bIl_=caml_call2(Runtime_ocaml_Runtime[84],_bIk_,_bIj_), + _bIm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o6_), + _bIn_=caml_call2(Runtime_ocaml_Runtime[84],_bIm_,_bIl_), + _bIo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o7_), + _bIp_=caml_call2(Runtime_ocaml_Runtime[84],_bIo_,_bIn_), + _bIq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o8_), + _bIr_=caml_call2(Runtime_ocaml_Runtime[84],_bIq_,_bIp_), + _bIs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o9_), + _bIt_=caml_call2(Runtime_ocaml_Runtime[84],_bIs_,_bIr_), + _bIu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_o__), + _bIv_=caml_call2(Runtime_ocaml_Runtime[84],_bIu_,_bIt_), + _bIw_=caml_call3(Runtime_ocaml_Runtime[57],2021,12,31), + _bIx_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bIw_), + _bIy_=caml_call2(Runtime_ocaml_Runtime[83],_bIx_,_bIv_), + _bIz_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _bIA_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bIz_), + _bIB_=caml_call2(Runtime_ocaml_Runtime[83],_bIA_,_bIy_); + return caml_call2(Runtime_ocaml_Runtime[29],_o$_,_bIB_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pa_,[0],_bIg_,_bIf_)}, + _bG$_= + function(param) + {function _bH8_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_766$0)} + function _bH9_(param) + {var + _bH__=caml_call2(Runtime_ocaml_Runtime[86],residence,_pb_), + _bH$_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _bIa_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bH$_), + _bIb_=caml_call2(Runtime_ocaml_Runtime[83],_bIa_,_bH__), + _bIc_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _bId_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bIc_), + _bIe_=caml_call2(Runtime_ocaml_Runtime[83],_bId_,_bIb_); + return caml_call2(Runtime_ocaml_Runtime[29],_pc_,_bIe_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pd_,[0],_bH9_,_bH8_)}, + _bHa_= + function(param) + {function _bHL_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1015$0)} + function _bHM_(param) + {var + _bHN_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pe_), + _bHO_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pf_), + _bHP_=caml_call2(Runtime_ocaml_Runtime[84],_bHO_,_bHN_), + _bHQ_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pg_), + _bHR_=caml_call2(Runtime_ocaml_Runtime[84],_bHQ_,_bHP_), + _bHS_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ph_), + _bHT_=caml_call2(Runtime_ocaml_Runtime[84],_bHS_,_bHR_), + _bHU_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pi_), + _bHV_=caml_call2(Runtime_ocaml_Runtime[84],_bHU_,_bHT_), + _bHW_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pj_), + _bHX_=caml_call2(Runtime_ocaml_Runtime[84],_bHW_,_bHV_), + _bHY_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pk_), + _bHZ_=caml_call2(Runtime_ocaml_Runtime[84],_bHY_,_bHX_), + _bH0_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pl_), + _bH1_=caml_call2(Runtime_ocaml_Runtime[84],_bH0_,_bHZ_), + _bH2_=caml_call3(Runtime_ocaml_Runtime[57],2020,12,31), + _bH3_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bH2_), + _bH4_=caml_call2(Runtime_ocaml_Runtime[83],_bH3_,_bH1_), + _bH5_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _bH6_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bH5_), + _bH7_=caml_call2(Runtime_ocaml_Runtime[83],_bH6_,_bH4_); + return caml_call2(Runtime_ocaml_Runtime[29],_pm_,_bH7_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pn_,[0],_bHM_,_bHL_)}, + _bHb_= + function(param) + {function _bHC_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_757$0)} + function _bHD_(param) + {var + _bHE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_po_), + _bHF_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _bHG_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bHF_), + _bHH_=caml_call2(Runtime_ocaml_Runtime[83],_bHG_,_bHE_), + _bHI_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _bHJ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bHI_), + _bHK_=caml_call2(Runtime_ocaml_Runtime[83],_bHJ_,_bHH_); + return caml_call2(Runtime_ocaml_Runtime[29],_pp_,_bHK_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pq_,[0],_bHD_,_bHC_)}, + _bHc_= + [0, + function(param) + {function _bHf_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1003$0)} + function _bHg_(param) + {var + _bHh_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pr_), + _bHi_=caml_call2(Runtime_ocaml_Runtime[86],residence,_ps_), + _bHj_=caml_call2(Runtime_ocaml_Runtime[84],_bHi_,_bHh_), + _bHk_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pt_), + _bHl_=caml_call2(Runtime_ocaml_Runtime[84],_bHk_,_bHj_), + _bHm_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pu_), + _bHn_=caml_call2(Runtime_ocaml_Runtime[84],_bHm_,_bHl_), + _bHo_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pv_), + _bHp_=caml_call2(Runtime_ocaml_Runtime[84],_bHo_,_bHn_), + _bHq_=caml_call2(Runtime_ocaml_Runtime[86],residence,_pw_), + _bHr_=caml_call2(Runtime_ocaml_Runtime[84],_bHq_,_bHp_), + _bHs_=caml_call2(Runtime_ocaml_Runtime[86],residence,_px_), + _bHt_=caml_call2(Runtime_ocaml_Runtime[84],_bHs_,_bHr_), + _bHu_=caml_call2(Runtime_ocaml_Runtime[86],residence,_py_), + _bHv_=caml_call2(Runtime_ocaml_Runtime[84],_bHu_,_bHt_), + _bHw_=caml_call3(Runtime_ocaml_Runtime[57],2019,12,31), + _bHx_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bHw_), + _bHy_=caml_call2(Runtime_ocaml_Runtime[83],_bHx_,_bHv_), + _bHz_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _bHA_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bHz_), + _bHB_=caml_call2(Runtime_ocaml_Runtime[83],_bHA_,_bHy_); + return caml_call2(Runtime_ocaml_Runtime[29],_pz_,_bHB_)} + return caml_call4(Runtime_ocaml_Runtime[63],_pA_,[0],_bHg_,_bHf_)}, + _bHb_, + _bHa_, + _bG$_, + _bG__, + _bG9_, + _bG8_, + _bG7_, + _bG6_, + _bG5_, + _bG4_, + _bG3_, + _bG2_, + _bG1_], + _bHd_=caml_call4(Runtime_ocaml_Runtime[63],_pB_,_bHc_,_bG0_,_bGZ_)} + catch(_bHe_) + {_bHe_ = caml_wrap_exception(_bHe_); + if(_bHe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_n$_]; + throw _bHe_} + var + brut_horaire= + caml_call3 + (Runtime_ocaml_Runtime[28],_pC_,Runtime_ocaml_Runtime[13],_bHd_); + return [0,brut_horaire]} + function calcul_aide_personnalisee_loge(calcul_aide_personnalisee_loge) + {var + loyer_principal_base=calcul_aide_personnalisee_loge[1], + ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], + beneficiaire_aide_adulte_ou_en=calcul_aide_personnalisee_loge[3], + date_courante=calcul_aide_personnalisee_loge[4], + nombre_personnes_a_charge=calcul_aide_personnalisee_loge[5], + situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[6], + zone=calcul_aide_personnalisee_loge[7], + logement_est_chambre=calcul_aide_personnalisee_loge[8], + agees_ou_handicap_adultes_hebe=calcul_aide_personnalisee_loge[9], + type_aide=calcul_aide_personnalisee_loge[10], + colocation=calcul_aide_personnalisee_loge[11], + reduction_loyer_solidarite=calcul_aide_personnalisee_loge[12], + logement_meuble_d842_2=calcul_aide_personnalisee_loge[13]; + try + {var + _brE_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_98)}, + _brF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pE_,1)}, + _brG_=caml_call4(Runtime_ocaml_Runtime[63],_pF_,[0],_brF_,_brE_)} + catch(_bGY_) + {_bGY_ = caml_wrap_exception(_bGY_); + if(_bGY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_pD_]; + throw _bGY_} + var + fraction_l832_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_pG_,Runtime_ocaml_Runtime[15],_brG_); + try + {var + _brH_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500)}, + _brI_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pI_,1)}, + _brJ_=caml_call4(Runtime_ocaml_Runtime[63],_pJ_,[0],_brI_,_brH_)} + catch(_bGX_) + {_bGX_ = caml_wrap_exception(_bGX_); + if(_bGX_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_pH_]; + throw _bGX_} + var + montant_forfaitaire_d823_16= + caml_call3 + (Runtime_ocaml_Runtime[28],_pK_,Runtime_ocaml_Runtime[13],_brJ_); + try + {var + _brK_=function(param){return date_courante}, + _brL_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_pM_,1)}, + _brM_=caml_call4(Runtime_ocaml_Runtime[63],_pN_,[0],_brL_,_brK_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_pO_,Runtime_ocaml_Runtime[16],_brM_)} + catch(_bGW_) + {_bGW_ = caml_wrap_exception(_bGW_); + if(_bGW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_pL_]; + throw _bGW_} + var + _brN_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_pP_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_pQ_,_brN_), + contributions_sociales_dot_mon=result[1]; + try + {var + _brO_=function(param){throw Runtime_ocaml_Runtime[2]}, + _brP_=function(param){return 0}, + _brQ_= + [0, + function(param) + {function _bF1_(param) + {var _bGJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$85); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGJ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315); + var _bGK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$33); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGK_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027); + var _bGL_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$24); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGL_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238); + var _bGM_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$9); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGM_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201); + var _bGN_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$5); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGN_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185); + var _bGO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGO_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179); + var _bGP_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$1); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGP_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173); + var + _bGQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$2), + _bGR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGQ_), + _bGS_=caml_call1(Runtime_ocaml_Runtime[69],_bGR_), + _bGT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006), + _bGU_=caml_call2(Runtime_ocaml_Runtime[103],_bGT_,_bGS_), + _bGV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$0); + return caml_call2(Runtime_ocaml_Runtime[97],_bGV_,_bGU_)} + function _bF2_(param) + {var + _bGH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bGI_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bGH_); + return caml_call2(Runtime_ocaml_Runtime[29],_pS_,_bGI_)} + var + _bF3_= + [0, + function(param) + {function _bF4_(param) + {var _bGu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGu_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283$0) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315$0); + var _bGv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGv_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027$0); + var _bGw_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$25); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGw_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238$0); + var _bGx_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$10); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGx_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201$0); + var _bGy_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$6); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGy_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185$0); + var _bGz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$0); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGz_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179$0); + var _bGA_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$3); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGA_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$1); + var + _bGB_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$4), + _bGC_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGB_), + _bGD_=caml_call1(Runtime_ocaml_Runtime[69],_bGC_), + _bGE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006$0), + _bGF_=caml_call2(Runtime_ocaml_Runtime[103],_bGE_,_bGD_), + _bGG_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$2); + return caml_call2(Runtime_ocaml_Runtime[97],_bGG_,_bGF_)} + function _bF5_(param) + {var + _bGp_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bGq_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bGp_), + _bGr_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bGs_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bGr_), + _bGt_=caml_call2(Runtime_ocaml_Runtime[83],_bGs_,_bGq_); + return caml_call2(Runtime_ocaml_Runtime[29],_pT_,_bGt_)} + var + _bF6_= + [0, + function(param) + {function _bF7_(param) + {var _bGc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$87); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGc_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0283$1) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0315$1); + var _bGd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$35); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGd_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_027$1); + var _bGe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$26); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGe_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0238$1); + var _bGf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$11); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGf_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0201$1); + var _bGg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$7); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGg_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0185$1); + var _bGh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$1); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGh_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0179$1); + var _bGi_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$5); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bGi_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$3); + var + _bGj_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$6), + _bGk_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bGj_), + _bGl_=caml_call1(Runtime_ocaml_Runtime[69],_bGk_), + _bGm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0006$1), + _bGn_=caml_call2(Runtime_ocaml_Runtime[103],_bGm_,_bGl_), + _bGo_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0173$4); + return caml_call2(Runtime_ocaml_Runtime[97],_bGo_,_bGn_)} + function _bF8_(param) + {var + _bF9_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bF__= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bF9_), + _bF$_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bGa_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bF$_), + _bGb_=caml_call2(Runtime_ocaml_Runtime[83],_bGa_,_bF__); + return caml_call2(Runtime_ocaml_Runtime[29],_pU_,_bGb_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_pV_,[0],_bF8_,_bF7_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_pW_,_bF6_,_bF5_,_bF4_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_pX_,_bF3_,_bF2_,_bF1_)}], + _brR_=caml_call4(Runtime_ocaml_Runtime[63],_pY_,_brQ_,_brP_,_brO_)} + catch(_bF0_) + {_bF0_ = caml_wrap_exception(_bF0_); + if(_bF0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_pR_]; + throw _bF0_} + var + taux_composition_familiale= + caml_call3 + (Runtime_ocaml_Runtime[28],_pZ_,Runtime_ocaml_Runtime[15],_brR_); + try + {var + _brS_=function(param){throw Runtime_ocaml_Runtime[2]}, + _brT_=function(param){return 0}, + _brU_= + function(param) + {function _bFG_(param) + {var _bFN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$88); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFN_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_458800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_657200); + var _bFO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_783900); + var _bFP_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$27); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_801500); + var _bFQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$12); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFQ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_832200); + var _bFR_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$8); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_863100); + var _bFS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$2); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_893800); + var _bFT_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$7); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_924600); + var + _bFU_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$8), + _bFV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFU_), + _bFW_=caml_call1(Runtime_ocaml_Runtime[69],_bFV_), + _bFX_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500), + _bFY_=caml_call2(Runtime_ocaml_Runtime[104],_bFX_,_bFW_), + _bFZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_924600$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bFZ_,_bFY_)} + function _bFH_(param) + {var + _bFI_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _bFJ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bFI_), + _bFK_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _bFL_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bFK_), + _bFM_=caml_call2(Runtime_ocaml_Runtime[83],_bFL_,_bFJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_p1_,_bFM_)} + return caml_call4(Runtime_ocaml_Runtime[63],_p2_,[0],_bFH_,_bFG_)}, + _brV_= + function(param) + {function _bFm_(param) + {var _bFt_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$89); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFt_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_468300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_670900); + var _bFu_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$37); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_800200); + var _bFv_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_819200); + var _bFw_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$13); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFw_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_849500); + var _bFx_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$9); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_881100); + var _bFy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$3); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFy_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_912400); + var _bFz_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$9); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_943900); + var + _bFA_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$10), + _bFB_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFA_), + _bFC_=caml_call1(Runtime_ocaml_Runtime[69],_bFB_), + _bFD_=caml_call1(Runtime_ocaml_Runtime[31],cst_31100), + _bFE_=caml_call2(Runtime_ocaml_Runtime[104],_bFD_,_bFC_), + _bFF_=caml_call1(Runtime_ocaml_Runtime[31],cst_943900$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bFF_,_bFE_)} + function _bFn_(param) + {var + _bFo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bFp_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bFo_), + _bFq_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _bFr_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bFq_), + _bFs_=caml_call2(Runtime_ocaml_Runtime[83],_bFr_,_bFp_); + return caml_call2(Runtime_ocaml_Runtime[29],_p3_,_bFs_)} + return caml_call4(Runtime_ocaml_Runtime[63],_p4_,[0],_bFn_,_bFm_)}, + _brW_= + function(param) + {function _bE4_(param) + {var _bE$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$90); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bE$_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_487000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_697700); + var _bFa_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFa_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_832200$0); + var _bFb_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$29); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_850900); + var _bFc_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$14); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_883400); + var _bFd_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$10); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_916300); + var _bFe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$4); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFe_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_948800); + var _bFf_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$11); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bFf_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_981600); + var + _bFg_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$12), + _bFh_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bFg_), + _bFi_=caml_call1(Runtime_ocaml_Runtime[69],_bFh_), + _bFj_=caml_call1(Runtime_ocaml_Runtime[31],cst_32300), + _bFk_=caml_call2(Runtime_ocaml_Runtime[104],_bFj_,_bFi_), + _bFl_=caml_call1(Runtime_ocaml_Runtime[31],cst_981600$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bFl_,_bFk_)} + function _bE5_(param) + {var + _bE6_=caml_call3(Runtime_ocaml_Runtime[57],2022,12,31), + _bE7_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_bE6_), + _bE8_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bE9_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bE8_), + _bE__=caml_call2(Runtime_ocaml_Runtime[83],_bE9_,_bE7_); + return caml_call2(Runtime_ocaml_Runtime[29],_p5_,_bE__)} + return caml_call4(Runtime_ocaml_Runtime[63],_p6_,[0],_bE5_,_bE4_)}, + _brX_= + [0, + function(param) + {function _bEN_(param) + {var _bER_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$91); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bER_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_494900) + :caml_call1(Runtime_ocaml_Runtime[31],cst_709000); + var _bES_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$39); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bES_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_845600); + var _bET_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bET_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_864600); + var _bEU_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$15); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_897700); + var _bEV_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$11); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_931100); + var _bEW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$5); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEW_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_964200); + var _bEX_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$13); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_997500); + var + _bEY_=caml_call1(Runtime_ocaml_Runtime[46],cst_6$14), + _bEZ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEY_), + _bE0_=caml_call1(Runtime_ocaml_Runtime[69],_bEZ_), + _bE1_=caml_call1(Runtime_ocaml_Runtime[31],cst_32800), + _bE2_=caml_call2(Runtime_ocaml_Runtime[104],_bE1_,_bE0_), + _bE3_=caml_call1(Runtime_ocaml_Runtime[31],cst_997500$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bE3_,_bE2_)} + function _bEO_(param) + {var + _bEP_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _bEQ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bEP_); + return caml_call2(Runtime_ocaml_Runtime[29],_p7_,_bEQ_)} + return caml_call4(Runtime_ocaml_Runtime[63],_p8_,[0],_bEO_,_bEN_)}, + _brW_, + _brV_, + _brU_], + _brY_=caml_call4(Runtime_ocaml_Runtime[63],_p9_,_brX_,_brT_,_brS_)} + catch(_bEM_) + {_bEM_ = caml_wrap_exception(_bEM_); + if(_bEM_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_p0_]; + throw _bEM_} + var + abattement_forfaitaire_d823_17= + caml_call3 + (Runtime_ocaml_Runtime[28],_p__,Runtime_ocaml_Runtime[13],_brY_); + try + {var + _brZ_=function(param){throw Runtime_ocaml_Runtime[2]}, + _br0_=function(param){return 0}, + _br1_= + function(param) + {function _bEy_(param) + {var _bEF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$92); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEF_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25869) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31664); + var + _bEG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$40), + _bEH_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEG_), + _bEI_=caml_call1(Runtime_ocaml_Runtime[69],_bEH_), + _bEJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186), + _bEK_=caml_call2(Runtime_ocaml_Runtime[104],_bEJ_,_bEI_), + _bEL_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630); + return caml_call2(Runtime_ocaml_Runtime[93],_bEL_,_bEK_)} + function _bEz_(param) + {var + _bEA_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bEB_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bEA_), + _bEC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bED_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bEC_), + _bEE_=caml_call2(Runtime_ocaml_Runtime[83],_bED_,_bEB_); + return caml_call2(Runtime_ocaml_Runtime[29],_qa_,_bEE_)} + return caml_call4(Runtime_ocaml_Runtime[63],_qb_,[0],_bEz_,_bEy_)}, + _br2_= + [0, + function(param) + {function _bD__(param) + {var _bEr_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$93); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEr_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25978) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31797); + var + _bEs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$41), + _bEt_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEs_), + _bEu_=caml_call1(Runtime_ocaml_Runtime[69],_bEt_), + _bEv_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208), + _bEw_=caml_call2(Runtime_ocaml_Runtime[104],_bEv_,_bEu_), + _bEx_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780); + return caml_call2(Runtime_ocaml_Runtime[93],_bEx_,_bEw_)} + function _bD$_(param) + {var + _bEp_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bEq_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bEp_); + return caml_call2(Runtime_ocaml_Runtime[29],_qc_,_bEq_)} + var + _bEa_= + [0, + function(param) + {function _bEb_(param) + {var _bEi_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$94); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bEi_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25978$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31797$0); + var + _bEj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$42), + _bEk_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bEj_), + _bEl_=caml_call1(Runtime_ocaml_Runtime[69],_bEk_), + _bEm_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208$0), + _bEn_=caml_call2(Runtime_ocaml_Runtime[104],_bEm_,_bEl_), + _bEo_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bEo_,_bEn_)} + function _bEc_(param) + {var + _bEd_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bEe_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bEd_), + _bEf_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bEg_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bEf_), + _bEh_=caml_call2(Runtime_ocaml_Runtime[83],_bEg_,_bEe_); + return caml_call2(Runtime_ocaml_Runtime[29],_qd_,_bEh_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qe_,[0],_bEc_,_bEb_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qf_,_bEa_,_bD$_,_bD__)}, + _br1_], + _br3_=caml_call4(Runtime_ocaml_Runtime[63],_qg_,_br2_,_br0_,_brZ_)} + catch(_bD9_) + {_bD9_ = caml_wrap_exception(_bD9_); + if(_bD9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_p$_]; + throw _bD9_} + var + loyer_reference= + caml_call3 + (Runtime_ocaml_Runtime[28],_qh_,Runtime_ocaml_Runtime[13],_br3_); + try + {var + _br4_= + function(param) + {switch(type_aide[0]) + {case 0:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$95); + case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000); + default:return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$0)}}, + _br5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_qj_,1)}, + _br6_=caml_call4(Runtime_ocaml_Runtime[63],_qk_,[0],_br5_,_br4_)} + catch(_bD8_) + {_bD8_ = caml_wrap_exception(_bD8_); + if(_bD8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_qi_]; + throw _bD8_} + var + montant_minimal_aide_d823_16= + caml_call3 + (Runtime_ocaml_Runtime[28],_ql_,Runtime_ocaml_Runtime[13],_br6_); + try + {var + _br7_= + function(param) + {function _bBE_(param){throw Runtime_ocaml_Runtime[2]} + function _bBF_(param){return 0} + function _bBG_(param) + {function _bDG_(param) + {switch(zone[0]) + {case 0: + var + _bDQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$43), + _bDR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDQ_), + _bDS_=caml_call1(Runtime_ocaml_Runtime[69],_bDR_), + _bDT_=caml_call1(Runtime_ocaml_Runtime[31],cst_5870), + _bDU_=caml_call2(Runtime_ocaml_Runtime[104],_bDT_,_bDS_), + _bDV_=caml_call1(Runtime_ocaml_Runtime[31],cst_40460); + return caml_call2(Runtime_ocaml_Runtime[93],_bDV_,_bDU_); + case 1: + var + _bDW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$44), + _bDX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDW_), + _bDY_=caml_call1(Runtime_ocaml_Runtime[69],_bDX_), + _bDZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_5186$0), + _bD0_=caml_call2(Runtime_ocaml_Runtime[104],_bDZ_,_bDY_), + _bD1_=caml_call1(Runtime_ocaml_Runtime[31],cst_35630$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bD1_,_bD0_); + default: + var + _bD2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$45), + _bD3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bD2_), + _bD4_=caml_call1(Runtime_ocaml_Runtime[69],_bD3_), + _bD5_=caml_call1(Runtime_ocaml_Runtime[31],cst_4723), + _bD6_=caml_call2(Runtime_ocaml_Runtime[104],_bD5_,_bD4_), + _bD7_=caml_call1(Runtime_ocaml_Runtime[31],cst_32956); + return caml_call2(Runtime_ocaml_Runtime[93],_bD7_,_bD6_)}} + function _bDH_(param) + {var + _bDI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$46), + _bDJ_= + caml_call2 + (Runtime_ocaml_Runtime[126],nombre_personnes_a_charge,_bDI_), + _bDK_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bDL_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bDK_), + _bDM_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bDN_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bDM_), + _bDO_=caml_call2(Runtime_ocaml_Runtime[83],_bDN_,_bDL_), + _bDP_=caml_call2(Runtime_ocaml_Runtime[83],_bDO_,_bDJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_qn_,_bDP_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qo_,[0],_bDH_,_bDG_)} + function _bBH_(param) + {function _bDu_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_35799); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_31664$0); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_29392)}} + function _bDv_(param) + {var + _bDw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$96), + _bDx_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bDw_), + _bDy_=0 === situation_familiale_calcul_apl[0]?0:1, + _bDz_=caml_call2(Runtime_ocaml_Runtime[83],_bDy_,_bDx_), + _bDA_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bDB_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bDA_), + _bDC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bDD_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bDC_), + _bDE_=caml_call2(Runtime_ocaml_Runtime[83],_bDD_,_bDB_), + _bDF_=caml_call2(Runtime_ocaml_Runtime[83],_bDE_,_bDz_); + return caml_call2(Runtime_ocaml_Runtime[29],_qp_,_bDF_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qq_,[0],_bDv_,_bDu_)} + function _bBI_(param) + {function _bDi_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_29682); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_25859); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_24246)}} + function _bDj_(param) + {var + _bDk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$97), + _bDl_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bDk_), + _bDm_=0 === situation_familiale_calcul_apl[0]?1:0, + _bDn_=caml_call2(Runtime_ocaml_Runtime[83],_bDm_,_bDl_), + _bDo_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bDp_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bDo_), + _bDq_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bDr_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bDq_), + _bDs_=caml_call2(Runtime_ocaml_Runtime[83],_bDr_,_bDp_), + _bDt_=caml_call2(Runtime_ocaml_Runtime[83],_bDs_,_bDn_); + return caml_call2(Runtime_ocaml_Runtime[29],_qr_,_bDt_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qs_,[0],_bDj_,_bDi_)} + function _bBJ_(param) + {function _bCS_(param) + {switch(zone[0]) + {case 0: + var + _bC2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$47), + _bC3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bC2_), + _bC4_=caml_call1(Runtime_ocaml_Runtime[69],_bC3_), + _bC5_=caml_call1(Runtime_ocaml_Runtime[31],cst_5895), + _bC6_=caml_call2(Runtime_ocaml_Runtime[104],_bC5_,_bC4_), + _bC7_=caml_call1(Runtime_ocaml_Runtime[31],cst_40630); + return caml_call2(Runtime_ocaml_Runtime[93],_bC7_,_bC6_); + case 1: + var + _bC8_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$48), + _bC9_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bC8_), + _bC__=caml_call1(Runtime_ocaml_Runtime[69],_bC9_), + _bC$_=caml_call1(Runtime_ocaml_Runtime[31],cst_5208$1), + _bDa_=caml_call2(Runtime_ocaml_Runtime[104],_bC$_,_bC__), + _bDb_=caml_call1(Runtime_ocaml_Runtime[31],cst_35780$1); + return caml_call2(Runtime_ocaml_Runtime[93],_bDb_,_bDa_); + default: + var + _bDc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$49), + _bDd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bDc_), + _bDe_=caml_call1(Runtime_ocaml_Runtime[69],_bDd_), + _bDf_=caml_call1(Runtime_ocaml_Runtime[31],cst_4743), + _bDg_=caml_call2(Runtime_ocaml_Runtime[104],_bDf_,_bDe_), + _bDh_=caml_call1(Runtime_ocaml_Runtime[31],cst_33094); + return caml_call2(Runtime_ocaml_Runtime[93],_bDh_,_bDg_)}} + function _bCT_(param) + {var + _bCU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$50), + _bCV_= + caml_call2 + (Runtime_ocaml_Runtime[126],nombre_personnes_a_charge,_bCU_), + _bCW_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bCX_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bCW_), + _bCY_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bCZ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bCY_), + _bC0_=caml_call2(Runtime_ocaml_Runtime[83],_bCZ_,_bCX_), + _bC1_=caml_call2(Runtime_ocaml_Runtime[83],_bC0_,_bCV_); + return caml_call2(Runtime_ocaml_Runtime[29],_qt_,_bC1_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qu_,[0],_bCT_,_bCS_)} + function _bBK_(param) + {function _bCG_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_35949); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$1); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_29515)}} + function _bCH_(param) + {var + _bCI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$98), + _bCJ_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bCI_), + _bCK_=0 === situation_familiale_calcul_apl[0]?0:1, + _bCL_=caml_call2(Runtime_ocaml_Runtime[83],_bCK_,_bCJ_), + _bCM_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bCN_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bCM_), + _bCO_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bCP_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bCO_), + _bCQ_=caml_call2(Runtime_ocaml_Runtime[83],_bCP_,_bCN_), + _bCR_=caml_call2(Runtime_ocaml_Runtime[83],_bCQ_,_bCL_); + return caml_call2(Runtime_ocaml_Runtime[29],_qv_,_bCR_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qw_,[0],_bCH_,_bCG_)} + function _bBL_(param) + {function _bCu_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_29807); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_25978$1); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_24348)}} + function _bCv_(param) + {var + _bCw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$99), + _bCx_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bCw_), + _bCy_=0 === situation_familiale_calcul_apl[0]?1:0, + _bCz_=caml_call2(Runtime_ocaml_Runtime[83],_bCy_,_bCx_), + _bCA_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bCB_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bCA_), + _bCC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bCD_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bCC_), + _bCE_=caml_call2(Runtime_ocaml_Runtime[83],_bCD_,_bCB_), + _bCF_=caml_call2(Runtime_ocaml_Runtime[83],_bCE_,_bCz_); + return caml_call2(Runtime_ocaml_Runtime[29],_qx_,_bCF_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qy_,[0],_bCv_,_bCu_)} + function _bBM_(param) + {function _bB7_(param) + {switch(zone[0]) + {case 0: + var + _bCc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$51), + _bCd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCc_), + _bCe_=caml_call1(Runtime_ocaml_Runtime[69],_bCd_), + _bCf_=caml_call1(Runtime_ocaml_Runtime[31],cst_6101), + _bCg_=caml_call2(Runtime_ocaml_Runtime[104],_bCf_,_bCe_), + _bCh_=caml_call1(Runtime_ocaml_Runtime[31],cst_42052); + return caml_call2(Runtime_ocaml_Runtime[93],_bCh_,_bCg_); + case 1: + var + _bCi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$52), + _bCj_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCi_), + _bCk_=caml_call1(Runtime_ocaml_Runtime[69],_bCj_), + _bCl_=caml_call1(Runtime_ocaml_Runtime[31],cst_5390), + _bCm_=caml_call2(Runtime_ocaml_Runtime[104],_bCl_,_bCk_), + _bCn_=caml_call1(Runtime_ocaml_Runtime[31],cst_37032); + return caml_call2(Runtime_ocaml_Runtime[93],_bCn_,_bCm_); + default: + var + _bCo_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$53), + _bCp_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bCo_), + _bCq_=caml_call1(Runtime_ocaml_Runtime[69],_bCp_), + _bCr_=caml_call1(Runtime_ocaml_Runtime[31],cst_4909), + _bCs_=caml_call2(Runtime_ocaml_Runtime[104],_bCr_,_bCq_), + _bCt_=caml_call1(Runtime_ocaml_Runtime[31],cst_34252); + return caml_call2(Runtime_ocaml_Runtime[93],_bCt_,_bCs_)}} + function _bB8_(param) + {var + _bB9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$54), + _bB__= + caml_call2 + (Runtime_ocaml_Runtime[126],nombre_personnes_a_charge,_bB9_), + _bB$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bCa_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bB$_), + _bCb_=caml_call2(Runtime_ocaml_Runtime[83],_bCa_,_bB__); + return caml_call2(Runtime_ocaml_Runtime[29],_qz_,_bCb_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qA_,[0],_bB8_,_bB7_)} + function _bBN_(param) + {function _bBY_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_37207); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_32910); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_30548)}} + function _bBZ_(param) + {var + _bB0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$100), + _bB1_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bB0_), + _bB2_=0 === situation_familiale_calcul_apl[0]?0:1, + _bB3_=caml_call2(Runtime_ocaml_Runtime[83],_bB2_,_bB1_), + _bB4_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bB5_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bB4_), + _bB6_=caml_call2(Runtime_ocaml_Runtime[83],_bB5_,_bB3_); + return caml_call2(Runtime_ocaml_Runtime[29],_qB_,_bB6_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qC_,[0],_bBZ_,_bBY_)} + var + _bBO_= + [0, + function(param) + {function _bBP_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_30850); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26887); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_25200)}} + function _bBQ_(param) + {var + _bBR_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$101), + _bBS_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bBR_), + _bBT_=0 === situation_familiale_calcul_apl[0]?1:0, + _bBU_=caml_call2(Runtime_ocaml_Runtime[83],_bBT_,_bBS_), + _bBV_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bBW_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bBV_), + _bBX_=caml_call2(Runtime_ocaml_Runtime[83],_bBW_,_bBU_); + return caml_call2(Runtime_ocaml_Runtime[29],_qD_,_bBX_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qE_,[0],_bBQ_,_bBP_)}, + _bBN_, + _bBM_, + _bBL_, + _bBK_, + _bBJ_, + _bBI_, + _bBH_, + _bBG_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qF_,_bBO_,_bBF_,_bBE_)}, + _br8_=function(param){return 1}, + _br9_= + function(param) + {function _bAK_(param) + {function _bBe_(param){throw Runtime_ocaml_Runtime[2]} + function _bBf_(param){return 0} + function _bBg_(param) + {function _bBw_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26714); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23282); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_21821)}} + function _bBx_(param) + {var + _bBy_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bBz_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bBy_), + _bBA_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bBz_,logement_est_chambre), + _bBB_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bBC_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bBB_), + _bBD_=caml_call2(Runtime_ocaml_Runtime[83],_bBC_,_bBA_); + return caml_call2(Runtime_ocaml_Runtime[29],_qG_,_bBD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qH_,[0],_bBx_,_bBw_)} + function _bBh_(param) + {function _bBo_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26826); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23380); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_21913)}} + function _bBp_(param) + {var + _bBq_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bBr_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bBq_), + _bBs_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bBr_,logement_est_chambre), + _bBt_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bBu_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bBt_), + _bBv_=caml_call2(Runtime_ocaml_Runtime[83],_bBu_,_bBs_); + return caml_call2(Runtime_ocaml_Runtime[29],_qI_,_bBv_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qJ_,[0],_bBp_,_bBo_)} + var + _bBi_= + [0, + function(param) + {function _bBj_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_27765); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_24198); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22680)}} + function _bBk_(param) + {var + _bBl_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bBm_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bBl_), + _bBn_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bBm_,logement_est_chambre); + return caml_call2(Runtime_ocaml_Runtime[29],_qK_,_bBn_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qL_,[0],_bBk_,_bBj_)}, + _bBh_, + _bBg_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qM_,_bBi_,_bBf_,_bBe_)} + function _bAL_(param){return 1} + var + _bAM_= + [0, + function(param) + {function _bAN_(param){throw Runtime_ocaml_Runtime[2]} + function _bAO_(param){return 0} + function _bAP_(param) + {function _bA7_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22262); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_19402); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18185)}} + function _bA8_(param) + {var + _bA9_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bA__= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bA9_), + _bA$_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bA__,logement_est_chambre), + _bBa_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bBb_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bBa_), + _bBc_=caml_call2(Runtime_ocaml_Runtime[83],_bBb_,_bA$_), + _bBd_= + caml_call2 + (Runtime_ocaml_Runtime[83], + _bBc_, + agees_ou_handicap_adultes_hebe); + return caml_call2(Runtime_ocaml_Runtime[29],_qN_,_bBd_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qO_,[0],_bA8_,_bA7_)} + function _bAQ_(param) + {function _bAY_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22355); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_19484); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18261)}} + function _bAZ_(param) + {var + _bA0_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bA1_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bA0_), + _bA2_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bA1_,logement_est_chambre), + _bA3_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bA4_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bA3_), + _bA5_=caml_call2(Runtime_ocaml_Runtime[83],_bA4_,_bA2_), + _bA6_= + caml_call2 + (Runtime_ocaml_Runtime[83], + _bA5_, + agees_ou_handicap_adultes_hebe); + return caml_call2(Runtime_ocaml_Runtime[29],_qP_,_bA6_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qQ_,[0],_bAZ_,_bAY_)} + var + _bAR_= + [0, + function(param) + {function _bAS_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23138); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_20165); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18900)}} + function _bAT_(param) + {var + _bAU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bAV_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bAU_), + _bAW_= + caml_call2 + (Runtime_ocaml_Runtime[83],_bAV_,logement_est_chambre), + _bAX_= + caml_call2 + (Runtime_ocaml_Runtime[83], + _bAW_, + agees_ou_handicap_adultes_hebe); + return caml_call2(Runtime_ocaml_Runtime[29],_qR_,_bAX_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qS_,[0],_bAT_,_bAS_)}, + _bAQ_, + _bAP_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qT_,_bAR_,_bAO_,_bAN_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_qU_,_bAM_,_bAL_,_bAK_)}, + _br__= + [0, + function(param) + {function _bx9_(param){throw Runtime_ocaml_Runtime[2]} + function _bx__(param){return 0} + function _bx$_(param) + {function _bAh_(param) + {switch(zone[0]) + {case 0: + var + _bAs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$55), + _bAt_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAs_), + _bAu_=caml_call1(Runtime_ocaml_Runtime[69],_bAt_), + _bAv_=caml_call1(Runtime_ocaml_Runtime[31],cst_4403), + _bAw_=caml_call2(Runtime_ocaml_Runtime[104],_bAv_,_bAu_), + _bAx_=caml_call1(Runtime_ocaml_Runtime[31],cst_30345); + return caml_call2(Runtime_ocaml_Runtime[93],_bAx_,_bAw_); + case 1: + var + _bAy_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$56), + _bAz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAy_), + _bAA_=caml_call1(Runtime_ocaml_Runtime[69],_bAz_), + _bAB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3890), + _bAC_=caml_call2(Runtime_ocaml_Runtime[104],_bAB_,_bAA_), + _bAD_=caml_call1(Runtime_ocaml_Runtime[31],cst_26723); + return caml_call2(Runtime_ocaml_Runtime[93],_bAD_,_bAC_); + default: + var + _bAE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$57), + _bAF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bAE_), + _bAG_=caml_call1(Runtime_ocaml_Runtime[69],_bAF_), + _bAH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3542), + _bAI_=caml_call2(Runtime_ocaml_Runtime[104],_bAH_,_bAG_), + _bAJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_24717); + return caml_call2(Runtime_ocaml_Runtime[93],_bAJ_,_bAI_)}} + function _bAi_(param) + {var + _bAj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$58), + _bAk_= + caml_call2 + (Runtime_ocaml_Runtime[126],nombre_personnes_a_charge,_bAj_), + _bAl_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bAm_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bAl_), + _bAn_=caml_call2(Runtime_ocaml_Runtime[83],_bAm_,colocation), + _bAo_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bAp_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bAo_), + _bAq_=caml_call2(Runtime_ocaml_Runtime[83],_bAp_,_bAn_), + _bAr_=caml_call2(Runtime_ocaml_Runtime[83],_bAq_,_bAk_); + return caml_call2(Runtime_ocaml_Runtime[29],_qV_,_bAr_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qW_,[0],_bAi_,_bAh_)} + function _bya_(param) + {function _bz6_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26849); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23748); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22044)}} + function _bz7_(param) + {var + _bz8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$102), + _bz9_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bz8_), + _bz__=0 === situation_familiale_calcul_apl[0]?0:1, + _bz$_=caml_call2(Runtime_ocaml_Runtime[83],_bz__,_bz9_), + _bAa_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bAb_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bAa_), + _bAc_=caml_call2(Runtime_ocaml_Runtime[83],_bAb_,colocation), + _bAd_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bAe_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bAd_), + _bAf_=caml_call2(Runtime_ocaml_Runtime[83],_bAe_,_bAc_), + _bAg_=caml_call2(Runtime_ocaml_Runtime[83],_bAf_,_bz$_); + return caml_call2(Runtime_ocaml_Runtime[29],_qX_,_bAg_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_qY_,[0],_bz7_,_bz6_)} + function _byb_(param) + {function _bzT_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22262$0); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_19402$0); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18185$0)}} + function _bzU_(param) + {var + _bzV_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$103), + _bzW_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bzV_), + _bzX_=0 === situation_familiale_calcul_apl[0]?1:0, + _bzY_=caml_call2(Runtime_ocaml_Runtime[83],_bzX_,_bzW_), + _bzZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bz0_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bzZ_), + _bz1_=caml_call2(Runtime_ocaml_Runtime[83],_bz0_,colocation), + _bz2_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bz3_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bz2_), + _bz4_=caml_call2(Runtime_ocaml_Runtime[83],_bz3_,_bz1_), + _bz5_=caml_call2(Runtime_ocaml_Runtime[83],_bz4_,_bzY_); + return caml_call2(Runtime_ocaml_Runtime[29],_qZ_,_bz5_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q0_,[0],_bzU_,_bzT_)} + function _byc_(param) + {function _bzq_(param) + {switch(zone[0]) + {case 0: + var + _bzB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$59), + _bzC_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzB_), + _bzD_=caml_call1(Runtime_ocaml_Runtime[69],_bzC_), + _bzE_=caml_call1(Runtime_ocaml_Runtime[31],cst_4421), + _bzF_=caml_call2(Runtime_ocaml_Runtime[104],_bzE_,_bzD_), + _bzG_=caml_call1(Runtime_ocaml_Runtime[31],cst_30473); + return caml_call2(Runtime_ocaml_Runtime[93],_bzG_,_bzF_); + case 1: + var + _bzH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$60), + _bzI_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzH_), + _bzJ_=caml_call1(Runtime_ocaml_Runtime[69],_bzI_), + _bzK_=caml_call1(Runtime_ocaml_Runtime[31],cst_3906), + _bzL_=caml_call2(Runtime_ocaml_Runtime[104],_bzK_,_bzJ_), + _bzM_=caml_call1(Runtime_ocaml_Runtime[31],cst_26835); + return caml_call2(Runtime_ocaml_Runtime[93],_bzM_,_bzL_); + default: + var + _bzN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$61), + _bzO_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bzN_), + _bzP_=caml_call1(Runtime_ocaml_Runtime[69],_bzO_), + _bzQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3557), + _bzR_=caml_call2(Runtime_ocaml_Runtime[104],_bzQ_,_bzP_), + _bzS_=caml_call1(Runtime_ocaml_Runtime[31],cst_24821); + return caml_call2(Runtime_ocaml_Runtime[93],_bzS_,_bzR_)}} + function _bzr_(param) + {var + _bzs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$62), + _bzt_= + caml_call2 + (Runtime_ocaml_Runtime[126],nombre_personnes_a_charge,_bzs_), + _bzu_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bzv_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bzu_), + _bzw_=caml_call2(Runtime_ocaml_Runtime[83],_bzv_,colocation), + _bzx_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bzy_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bzx_), + _bzz_=caml_call2(Runtime_ocaml_Runtime[83],_bzy_,_bzw_), + _bzA_=caml_call2(Runtime_ocaml_Runtime[83],_bzz_,_bzt_); + return caml_call2(Runtime_ocaml_Runtime[29],_q1_,_bzA_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q2_,[0],_bzr_,_bzq_)} + function _byd_(param) + {function _bzd_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_26962); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23848); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22136)}} + function _bze_(param) + {var + _bzf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$104), + _bzg_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bzf_), + _bzh_=0 === situation_familiale_calcul_apl[0]?0:1, + _bzi_=caml_call2(Runtime_ocaml_Runtime[83],_bzh_,_bzg_), + _bzj_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bzk_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bzj_), + _bzl_=caml_call2(Runtime_ocaml_Runtime[83],_bzk_,colocation), + _bzm_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bzn_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bzm_), + _bzo_=caml_call2(Runtime_ocaml_Runtime[83],_bzn_,_bzl_), + _bzp_=caml_call2(Runtime_ocaml_Runtime[83],_bzo_,_bzi_); + return caml_call2(Runtime_ocaml_Runtime[29],_q3_,_bzp_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q4_,[0],_bze_,_bzd_)} + function _bye_(param) + {function _by2_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22355$0); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_19484$0); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18261$0)}} + function _by3_(param) + {var + _by4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$105), + _by5_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_by4_), + _by6_=0 === situation_familiale_calcul_apl[0]?1:0, + _by7_=caml_call2(Runtime_ocaml_Runtime[83],_by6_,_by5_), + _by8_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _by9_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_by8_), + _by__=caml_call2(Runtime_ocaml_Runtime[83],_by9_,colocation), + _by$_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bza_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_by$_), + _bzb_=caml_call2(Runtime_ocaml_Runtime[83],_bza_,_by__), + _bzc_=caml_call2(Runtime_ocaml_Runtime[83],_bzb_,_by7_); + return caml_call2(Runtime_ocaml_Runtime[29],_q5_,_bzc_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q6_,[0],_by3_,_by2_)} + function _byf_(param) + {function _byC_(param) + {switch(zone[0]) + {case 0: + var + _byK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$63), + _byL_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byK_), + _byM_=caml_call1(Runtime_ocaml_Runtime[69],_byL_), + _byN_=caml_call1(Runtime_ocaml_Runtime[31],cst_4576), + _byO_=caml_call2(Runtime_ocaml_Runtime[104],_byN_,_byM_), + _byP_=caml_call1(Runtime_ocaml_Runtime[31],cst_31539); + return caml_call2(Runtime_ocaml_Runtime[93],_byP_,_byO_); + case 1: + var + _byQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$64), + _byR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byQ_), + _byS_=caml_call1(Runtime_ocaml_Runtime[69],_byR_), + _byT_=caml_call1(Runtime_ocaml_Runtime[31],cst_4043), + _byU_=caml_call2(Runtime_ocaml_Runtime[104],_byT_,_byS_), + _byV_=caml_call1(Runtime_ocaml_Runtime[31],cst_27774); + return caml_call2(Runtime_ocaml_Runtime[93],_byV_,_byU_); + default: + var + _byW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$65), + _byX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_byW_), + _byY_=caml_call1(Runtime_ocaml_Runtime[69],_byX_), + _byZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3682), + _by0_=caml_call2(Runtime_ocaml_Runtime[104],_byZ_,_byY_), + _by1_=caml_call1(Runtime_ocaml_Runtime[31],cst_25689); + return caml_call2(Runtime_ocaml_Runtime[93],_by1_,_by0_)}} + function _byD_(param) + {var + _byE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$66), + _byF_= + caml_call2 + (Runtime_ocaml_Runtime[126],nombre_personnes_a_charge,_byE_), + _byG_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _byH_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_byG_), + _byI_=caml_call2(Runtime_ocaml_Runtime[83],_byH_,colocation), + _byJ_=caml_call2(Runtime_ocaml_Runtime[83],_byI_,_byF_); + return caml_call2(Runtime_ocaml_Runtime[29],_q7_,_byJ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q8_,[0],_byD_,_byC_)} + function _byg_(param) + {function _bys_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_27905); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_24683); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_22911)}} + function _byt_(param) + {var + _byu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$106), + _byv_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_byu_), + _byw_=0 === situation_familiale_calcul_apl[0]?0:1, + _byx_=caml_call2(Runtime_ocaml_Runtime[83],_byw_,_byv_), + _byy_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _byz_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_byy_), + _byA_=caml_call2(Runtime_ocaml_Runtime[83],_byz_,colocation), + _byB_=caml_call2(Runtime_ocaml_Runtime[83],_byA_,_byx_); + return caml_call2(Runtime_ocaml_Runtime[29],_q9_,_byB_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_q__,[0],_byt_,_bys_)} + var + _byh_= + [0, + function(param) + {function _byi_(param) + {switch(zone[0]) + {case 0: + return caml_call1(Runtime_ocaml_Runtime[31],cst_23138$0); + case 1: + return caml_call1(Runtime_ocaml_Runtime[31],cst_20165$0); + default: + return caml_call1(Runtime_ocaml_Runtime[31],cst_18900$0)}} + function _byj_(param) + {var + _byk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$107), + _byl_= + caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_byk_), + _bym_=0 === situation_familiale_calcul_apl[0]?1:0, + _byn_=caml_call2(Runtime_ocaml_Runtime[83],_bym_,_byl_), + _byo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _byp_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_byo_), + _byq_=caml_call2(Runtime_ocaml_Runtime[83],_byp_,colocation), + _byr_=caml_call2(Runtime_ocaml_Runtime[83],_byq_,_byn_); + return caml_call2(Runtime_ocaml_Runtime[29],_q$_,_byr_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ra_,[0],_byj_,_byi_)}, + _byg_, + _byf_, + _bye_, + _byd_, + _byc_, + _byb_, + _bya_, + _bx$_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_rb_,_byh_,_bx__,_bx9_)}, + _br9_], + _br$_=caml_call4(Runtime_ocaml_Runtime[63],_rc_,_br__,_br8_,_br7_)} + catch(_bx8_) + {_bx8_ = caml_wrap_exception(_bx8_); + if(_bx8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_qm_]; + throw _bx8_} + var + plafond_loyer_d823_16_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_rd_,Runtime_ocaml_Runtime[13],_br$_); + try + {var + _bsa_= + function(param) + {function _bxz_(param){throw Runtime_ocaml_Runtime[2]} + function _bxA_(param){return 0} + function _bxB_(param) + {function _bxX_(param) + {var + _bx4_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bx5_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224), + _bx6_=caml_call2(Runtime_ocaml_Runtime[104],_bx5_,_bx4_), + _bx7_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399); + return caml_call2(Runtime_ocaml_Runtime[93],_bx7_,_bx6_)} + function _bxY_(param) + {var + _bxZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bx0_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bxZ_), + _bx1_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bx2_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bx1_), + _bx3_=caml_call2(Runtime_ocaml_Runtime[83],_bx2_,_bx0_); + return caml_call2(Runtime_ocaml_Runtime[29],_rf_,_bx3_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rg_,[0],_bxY_,_bxX_)} + function _bxC_(param) + {function _bxM_(param) + {var + _bxT_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bxU_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229), + _bxV_=caml_call2(Runtime_ocaml_Runtime[104],_bxU_,_bxT_), + _bxW_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422); + return caml_call2(Runtime_ocaml_Runtime[93],_bxW_,_bxV_)} + function _bxN_(param) + {var + _bxO_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bxP_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bxO_), + _bxQ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bxR_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bxQ_), + _bxS_=caml_call2(Runtime_ocaml_Runtime[83],_bxR_,_bxP_); + return caml_call2(Runtime_ocaml_Runtime[29],_rh_,_bxS_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ri_,[0],_bxN_,_bxM_)} + var + _bxD_= + [0, + function(param) + {function _bxE_(param) + {var + _bxI_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bxJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272), + _bxK_=caml_call2(Runtime_ocaml_Runtime[104],_bxJ_,_bxI_), + _bxL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612); + return caml_call2(Runtime_ocaml_Runtime[93],_bxL_,_bxK_)} + function _bxF_(param) + {var + _bxG_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bxH_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bxG_); + return caml_call2(Runtime_ocaml_Runtime[29],_rj_,_bxH_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rk_,[0],_bxF_,_bxE_)}, + _bxC_, + _bxB_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_rl_,_bxD_,_bxA_,_bxz_)}, + _bsb_=function(param){return 1}, + _bsc_= + [0, + function(param) + {function _bwZ_(param){throw Runtime_ocaml_Runtime[2]} + function _bw0_(param){return 0} + function _bw1_(param) + {function _bxn_(param) + {var + _bxv_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bxw_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$0), + _bxx_=caml_call2(Runtime_ocaml_Runtime[104],_bxw_,_bxv_), + _bxy_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bxy_,_bxx_)} + function _bxo_(param) + {var + _bxp_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bxq_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bxp_), + _bxr_=caml_call2(Runtime_ocaml_Runtime[83],_bxq_,colocation), + _bxs_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bxt_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bxs_), + _bxu_=caml_call2(Runtime_ocaml_Runtime[83],_bxt_,_bxr_); + return caml_call2(Runtime_ocaml_Runtime[29],_rm_,_bxu_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rn_,[0],_bxo_,_bxn_)} + function _bw2_(param) + {function _bxb_(param) + {var + _bxj_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bxk_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$0), + _bxl_=caml_call2(Runtime_ocaml_Runtime[104],_bxk_,_bxj_), + _bxm_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bxm_,_bxl_)} + function _bxc_(param) + {var + _bxd_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bxe_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bxd_), + _bxf_=caml_call2(Runtime_ocaml_Runtime[83],_bxe_,colocation), + _bxg_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bxh_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bxg_), + _bxi_=caml_call2(Runtime_ocaml_Runtime[83],_bxh_,_bxf_); + return caml_call2(Runtime_ocaml_Runtime[29],_ro_,_bxi_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rp_,[0],_bxc_,_bxb_)} + var + _bw3_= + [0, + function(param) + {function _bw4_(param) + {var + _bw9_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bw__=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$0), + _bw$_=caml_call2(Runtime_ocaml_Runtime[104],_bw__,_bw9_), + _bxa_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$0); + return caml_call2(Runtime_ocaml_Runtime[93],_bxa_,_bw$_)} + function _bw5_(param) + {var + _bw6_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bw7_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bw6_), + _bw8_=caml_call2(Runtime_ocaml_Runtime[83],_bw7_,colocation); + return caml_call2(Runtime_ocaml_Runtime[29],_rq_,_bw8_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rr_,[0],_bw5_,_bw4_)}, + _bw2_, + _bw1_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_rs_,_bw3_,_bw0_,_bwZ_)}], + _bsd_=caml_call4(Runtime_ocaml_Runtime[63],_rt_,_bsc_,_bsb_,_bsa_)} + catch(_bwY_) + {_bwY_ = caml_wrap_exception(_bwY_); + if(_bwY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_re_]; + throw _bwY_} + var + montant_forfaitaire_charges_d8= + caml_call3 + (Runtime_ocaml_Runtime[28],_ru_,Runtime_ocaml_Runtime[13],_bsd_); + try + {var + _bse_= + function(param) + {if(logement_meuble_d842_2) + {var + _bwV_=caml_call1(Runtime_ocaml_Runtime[39],cst_3$16), + _bwW_=caml_call1(Runtime_ocaml_Runtime[39],cst_2$31), + _bwX_=caml_call2(Runtime_ocaml_Runtime[107],_bwW_,_bwV_); + return caml_call2 + (Runtime_ocaml_Runtime[104],loyer_principal_base,_bwX_)} + return loyer_principal_base}, + _bsf_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rw_,1)}, + _bsg_=caml_call4(Runtime_ocaml_Runtime[63],_rx_,[0],_bsf_,_bse_)} + catch(_bwU_) + {_bwU_ = caml_wrap_exception(_bwU_); + if(_bwU_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rv_]; + throw _bwU_} + var + loyer_principal_avec_reduction= + caml_call3 + (Runtime_ocaml_Runtime[28],_ry_,Runtime_ocaml_Runtime[13],_bsg_); + try + {var + _bsh_= + function(param) + {switch(zone[0]) + {case 0: + var _bwR_=caml_call1(Runtime_ocaml_Runtime[39],cst_4$12); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwR_); + case 1: + var _bwS_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwS_); + default: + var _bwT_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_1$0); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwT_)}}, + _bsi_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rA_,1)}, + _bsj_=caml_call4(Runtime_ocaml_Runtime[63],_rB_,[0],_bsi_,_bsh_)} + catch(_bwQ_) + {_bwQ_ = caml_wrap_exception(_bwQ_); + if(_bwQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rz_]; + throw _bwQ_} + var + plafond_suppression_d823_16= + caml_call3 + (Runtime_ocaml_Runtime[28],_rC_,Runtime_ocaml_Runtime[13],_bsj_); + try + {var + _bsk_= + function(param) + {switch(zone[0]) + {case 0: + var _bwN_=caml_call1(Runtime_ocaml_Runtime[39],cst_3_4); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwN_); + case 1: + var _bwO_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$2); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwO_); + default: + var _bwP_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$3); + return caml_call2 + (Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bwP_)}}, + _bsl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rE_,1)}, + _bsm_=caml_call4(Runtime_ocaml_Runtime[63],_rF_,[0],_bsl_,_bsk_)} + catch(_bwM_) + {_bwM_ = caml_wrap_exception(_bwM_); + if(_bwM_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rD_]; + throw _bwM_} + var + plafond_degressivite_d823_16= + caml_call3 + (Runtime_ocaml_Runtime[28],_rG_,Runtime_ocaml_Runtime[13],_bsm_); + try + {var + _bsn_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[123], + loyer_principal_avec_reduction, + plafond_loyer_d823_16_2) + ?plafond_loyer_d823_16_2 + :loyer_principal_avec_reduction}, + _bso_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_rI_,1)}, + _bsp_=caml_call4(Runtime_ocaml_Runtime[63],_rJ_,[0],_bso_,_bsn_)} + catch(_bwL_) + {_bwL_ = caml_wrap_exception(_bwL_); + if(_bwL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rH_]; + throw _bwL_} + var + loyer_eligible= + caml_call3 + (Runtime_ocaml_Runtime[28],_rK_,Runtime_ocaml_Runtime[13],_bsp_); + function _bsq_(aide_finale) + {try + {var + _bwA_= + function(param) + {if + (caml_call2 + (Runtime_ocaml_Runtime[123], + loyer_principal_avec_reduction, + plafond_suppression_d823_16)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$108); + if + (caml_call2 + (Runtime_ocaml_Runtime[123], + loyer_principal_avec_reduction, + plafond_degressivite_d823_16)) + {var + _bwH_= + caml_call2 + (Runtime_ocaml_Runtime[98], + plafond_suppression_d823_16, + plafond_degressivite_d823_16), + _bwI_= + caml_call2 + (Runtime_ocaml_Runtime[98], + loyer_principal_avec_reduction, + plafond_degressivite_d823_16), + _bwJ_=caml_call2(Runtime_ocaml_Runtime[108],_bwI_,_bwH_), + _bwK_= + caml_call2(Runtime_ocaml_Runtime[104],aide_finale,_bwJ_); + return caml_call2(Runtime_ocaml_Runtime[98],aide_finale,_bwK_)} + return aide_finale}, + _bwB_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_rM_,1)}, + _bwC_= + [0, + function(param) + {function _bwF_(param){return aide_finale} + function _bwG_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _rN_, + beneficiaire_aide_adulte_ou_en)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_rO_,[0],_bwG_,_bwF_)}], + _bwD_=caml_call4(Runtime_ocaml_Runtime[63],_rP_,_bwC_,_bwB_,_bwA_); + return _bwD_} + catch(_bwE_) + {_bwE_ = caml_wrap_exception(_bwE_); + if(_bwE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rL_]; + throw _bwE_}} + var + traitement_aide_finale_diminue= + caml_call3 + (Runtime_ocaml_Runtime[28],_rQ_,Runtime_ocaml_Runtime[10],_bsq_); + try + {var + _bsr_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bss_=function(param){return 0}, + _bst_= + function(param) + {function _bwn_(param) + {var + _bwu_=caml_call1(Runtime_ocaml_Runtime[31],cst_3524), + _bwv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085), + _bww_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8), + _bwx_=caml_call2(Runtime_ocaml_Runtime[104],_bww_,_bwv_); + if(caml_call2(Runtime_ocaml_Runtime[128],_bwx_,_bwu_)) + {var + _bwy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$0), + _bwz_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bwz_,_bwy_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_3524$0)} + function _bwo_(param) + {var + _bwp_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bwq_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bwp_), + _bwr_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bws_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bwr_), + _bwt_=caml_call2(Runtime_ocaml_Runtime[83],_bws_,_bwq_); + return caml_call2(Runtime_ocaml_Runtime[29],_rS_,_bwt_)} + return caml_call4(Runtime_ocaml_Runtime[63],_rT_,[0],_bwo_,_bwn_)}, + _bsu_= + function(param) + {function _bwa_(param) + {var + _bwh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3539), + _bwi_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$1), + _bwj_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8), + _bwk_=caml_call2(Runtime_ocaml_Runtime[104],_bwj_,_bwi_); + if(caml_call2(Runtime_ocaml_Runtime[128],_bwk_,_bwh_)) + {var + _bwl_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$2), + _bwm_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bwm_,_bwl_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_3539$0)} + function _bwb_(param) + {var + _bwc_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bwd_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bwc_), + _bwe_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bwf_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bwe_), + _bwg_=caml_call2(Runtime_ocaml_Runtime[83],_bwf_,_bwd_); + return caml_call2(Runtime_ocaml_Runtime[29],_rU_,_bwg_)} + return caml_call4(Runtime_ocaml_Runtime[63],_rV_,[0],_bwb_,_bwa_)}, + _bsv_= + [0, + function(param) + {function _bv2_(param) + {var + _bv6_=caml_call1(Runtime_ocaml_Runtime[31],cst_3663), + _bv7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$3), + _bv8_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8), + _bv9_=caml_call2(Runtime_ocaml_Runtime[104],_bv8_,_bv7_); + if(caml_call2(Runtime_ocaml_Runtime[128],_bv9_,_bv6_)) + {var + _bv__=caml_call1(Runtime_ocaml_Runtime[39],cst_0_085$4), + _bv$_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8); + return caml_call2(Runtime_ocaml_Runtime[104],_bv$_,_bv__)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_3663$0)} + function _bv3_(param) + {var + _bv4_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bv5_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bv4_); + return caml_call2(Runtime_ocaml_Runtime[29],_rW_,_bv5_)} + return caml_call4(Runtime_ocaml_Runtime[63],_rX_,[0],_bv3_,_bv2_)}, + _bsu_, + _bst_], + _bsw_=caml_call4(Runtime_ocaml_Runtime[63],_rY_,_bsv_,_bss_,_bsr_)} + catch(_bv1_) + {_bv1_ = caml_wrap_exception(_bv1_); + if(_bv1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_rR_]; + throw _bv1_} + var + participation_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_rZ_,Runtime_ocaml_Runtime[13],_bsw_); + try + {var + _bsx_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bsy_=function(param){return 0}, + _bsz_= + [0, + function(param) + {function _bvs_(param) + {var + _bvW_=caml_call1(Runtime_ocaml_Runtime[39],cst_100), + _bvX_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$0), + _bvY_= + caml_call2 + (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), + _bvZ_=caml_call2(Runtime_ocaml_Runtime[103],_bvY_,_bvX_), + _bv0_=caml_call1(Runtime_ocaml_Runtime[78],_bvZ_); + return caml_call2(Runtime_ocaml_Runtime[107],_bv0_,_bvW_)} + function _bvt_(param) + {var + _bvU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bvV_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bvU_); + return caml_call2(Runtime_ocaml_Runtime[29],_r1_,_bvV_)} + var + _bvu_= + [0, + function(param) + {function _bvv_(param) + {var + _bvP_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$1), + _bvQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$2), + _bvR_= + caml_call2 + (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), + _bvS_=caml_call2(Runtime_ocaml_Runtime[103],_bvR_,_bvQ_), + _bvT_=caml_call1(Runtime_ocaml_Runtime[78],_bvS_); + return caml_call2(Runtime_ocaml_Runtime[107],_bvT_,_bvP_)} + function _bvw_(param) + {var + _bvK_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bvL_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bvK_), + _bvM_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bvN_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bvM_), + _bvO_=caml_call2(Runtime_ocaml_Runtime[83],_bvN_,_bvL_); + return caml_call2(Runtime_ocaml_Runtime[29],_r2_,_bvO_)} + var + _bvx_= + [0, + function(param) + {function _bvy_(param) + {var + _bvF_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$3), + _bvG_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$4), + _bvH_= + caml_call2 + (Runtime_ocaml_Runtime[108],loyer_eligible,loyer_reference), + _bvI_=caml_call2(Runtime_ocaml_Runtime[103],_bvH_,_bvG_), + _bvJ_=caml_call1(Runtime_ocaml_Runtime[78],_bvI_); + return caml_call2(Runtime_ocaml_Runtime[107],_bvJ_,_bvF_)} + function _bvz_(param) + {var + _bvA_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bvB_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bvA_), + _bvC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bvD_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bvC_), + _bvE_=caml_call2(Runtime_ocaml_Runtime[83],_bvD_,_bvB_); + return caml_call2(Runtime_ocaml_Runtime[29],_r3_,_bvE_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_r4_,[0],_bvz_,_bvy_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_r5_,_bvx_,_bvw_,_bvv_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_r6_,_bvu_,_bvt_,_bvs_)}], + _bsA_=caml_call4(Runtime_ocaml_Runtime[63],_r7_,_bsz_,_bsy_,_bsx_)} + catch(_bvr_) + {_bvr_ = caml_wrap_exception(_bvr_); + if(_bvr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_r0_]; + throw _bvr_} + var + rapport_loyers= + caml_call3 + (Runtime_ocaml_Runtime[28],_r8_,Runtime_ocaml_Runtime[15],_bsA_); + function _bsB_(aide_finale) + {try + {var + _bvi_= + function(param) + {var + _bvm_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _r__, + Runtime_ocaml_Runtime[13], + aide_finale), + _bvn_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _r$_, + traitement_aide_finale_diminue), + _bvm_), + _bvo_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sa_, + Runtime_ocaml_Runtime[13], + _bvn_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_sb_,_bvo_), + _bvp_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$109), + _bvq_= + caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale$0, + montant_forfaitaire_d823_16); + return caml_call2(Runtime_ocaml_Runtime[128],_bvq_,_bvp_) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale$0, + montant_forfaitaire_d823_16) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$110)}, + _bvj_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_sc_,1)}, + _bvk_=caml_call4(Runtime_ocaml_Runtime[63],_sd_,[0],_bvj_,_bvi_); + return _bvk_} + catch(_bvl_) + {_bvl_ = caml_wrap_exception(_bvl_); + if(_bvl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_r9_]; + throw _bvl_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_se_,Runtime_ocaml_Runtime[10],_bsB_); + try + {var + _bsC_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bsD_=function(param){return 0}, + _bsE_= + [0, + function(param) + {function _bue_(param) + {var _bu4_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45); + if(caml_call2(Runtime_ocaml_Runtime[112],rapport_loyers,_bu4_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$111); + var + _bu5_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75), + _bu6_= + caml_call2(Runtime_ocaml_Runtime[112],rapport_loyers,_bu5_), + _bu7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$0), + _bu8_= + caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_bu7_); + if(caml_call2(Runtime_ocaml_Runtime[83],_bu8_,_bu6_)) + {var + _bu9_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045), + _bu__= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bu9_), + _bu$_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$0); + return caml_call2(Runtime_ocaml_Runtime[103],_bu$_,_bu__)} + var _bva_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$0); + if(caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_bva_)) + {var + _bvb_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$1), + _bvc_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_bvb_), + _bvd_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068), + _bve_=caml_call2(Runtime_ocaml_Runtime[103],_bvd_,_bvc_), + _bvf_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3), + _bvg_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$1), + _bvh_=caml_call2(Runtime_ocaml_Runtime[103],_bvg_,_bvf_); + return caml_call2(Runtime_ocaml_Runtime[92],_bvh_,_bve_)} + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$112)} + function _buf_(param) + {var + _bu2_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bu3_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bu2_); + return caml_call2(Runtime_ocaml_Runtime[29],_sg_,_bu3_)} + var + _bug_= + [0, + function(param) + {function _buh_(param) + {var _buM_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$1); + if + (caml_call2(Runtime_ocaml_Runtime[112],rapport_loyers,_buM_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$113); + var + _buN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$2), + _buO_= + caml_call2(Runtime_ocaml_Runtime[112],rapport_loyers,_buN_), + _buP_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$2), + _buQ_= + caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_buP_); + if(caml_call2(Runtime_ocaml_Runtime[83],_buQ_,_buO_)) + {var + _buR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$2), + _buS_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buR_), + _buT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$3); + return caml_call2(Runtime_ocaml_Runtime[103],_buT_,_buS_)} + var _buU_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$3); + if + (caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_buU_)) + {var + _buV_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$4), + _buW_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buV_), + _buX_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$0), + _buY_=caml_call2(Runtime_ocaml_Runtime[103],_buX_,_buW_), + _buZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$0), + _bu0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$4), + _bu1_=caml_call2(Runtime_ocaml_Runtime[103],_bu0_,_buZ_); + return caml_call2(Runtime_ocaml_Runtime[92],_bu1_,_buY_)} + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$114)} + function _bui_(param) + {var + _buH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _buI_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_buH_), + _buJ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _buK_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_buJ_), + _buL_=caml_call2(Runtime_ocaml_Runtime[83],_buK_,_buI_); + return caml_call2(Runtime_ocaml_Runtime[29],_sh_,_buL_)} + var + _buj_= + [0, + function(param) + {function _buk_(param) + {var _bur_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$3); + if + (caml_call2(Runtime_ocaml_Runtime[112],rapport_loyers,_bur_)) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$115); + var + _bus_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$5), + _but_= + caml_call2(Runtime_ocaml_Runtime[112],rapport_loyers,_bus_), + _buu_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_45$4), + _buv_= + caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_buu_); + if(caml_call2(Runtime_ocaml_Runtime[83],_buv_,_but_)) + {var + _buw_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$5), + _bux_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buw_), + _buy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$6); + return caml_call2(Runtime_ocaml_Runtime[103],_buy_,_bux_)} + var _buz_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$6); + if + (caml_call2(Runtime_ocaml_Runtime[127],rapport_loyers,_buz_)) + {var + _buA_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$7), + _buB_= + caml_call2(Runtime_ocaml_Runtime[97],rapport_loyers,_buA_), + _buC_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0068$1), + _buD_=caml_call2(Runtime_ocaml_Runtime[103],_buC_,_buB_), + _buE_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_3$1), + _buF_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_0045$7), + _buG_=caml_call2(Runtime_ocaml_Runtime[103],_buF_,_buE_); + return caml_call2(Runtime_ocaml_Runtime[92],_buG_,_buD_)} + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$116)} + function _bul_(param) + {var + _bum_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bun_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bum_), + _buo_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bup_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_buo_), + _buq_=caml_call2(Runtime_ocaml_Runtime[83],_bup_,_bun_); + return caml_call2(Runtime_ocaml_Runtime[29],_si_,_buq_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_sj_,[0],_bul_,_buk_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_sk_,_buj_,_bui_,_buh_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_sl_,_bug_,_buf_,_bue_)}], + _bsF_=caml_call4(Runtime_ocaml_Runtime[63],_sm_,_bsE_,_bsD_,_bsC_)} + catch(_bud_) + {_bud_ = caml_wrap_exception(_bud_); + if(_bud_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sf_]; + throw _bud_} + var + taux_loyer_eligible_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_sn_,Runtime_ocaml_Runtime[15],_bsF_); + function _bsG_(aide_finale) + {try + {var + _bt0_= + function(param) + {var + _bt4_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sp_, + Runtime_ocaml_Runtime[13], + aide_finale), + _bt5_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _sq_, + traitement_aide_finale_minorat), + _bt4_), + _bt6_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sr_, + Runtime_ocaml_Runtime[13], + _bt5_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_ss_,_bt6_), + _bt7_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _st_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _bt8_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _su_, + contributions_sociales_dot_mon), + _bt7_), + _bt9_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sv_, + Runtime_ocaml_Runtime[13], + _bt8_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_sw_,_bt9_), + _bt__=caml_call1(Runtime_ocaml_Runtime[31],cst_50), + _bt$_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,crds), + _bua_=caml_call2(Runtime_ocaml_Runtime[98],_bt$_,_bt__), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_bua_), + _bub_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$117), + _buc_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[128],_buc_,_bub_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$118)}, + _bt1_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_sx_,1)}, + _bt2_=caml_call4(Runtime_ocaml_Runtime[63],_sy_,[0],_bt1_,_bt0_); + return _bt2_} + catch(_bt3_) + {_bt3_ = caml_wrap_exception(_bt3_); + if(_bt3_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_so_]; + throw _bt3_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_sz_,Runtime_ocaml_Runtime[10],_bsG_); + try + {var + _bsH_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bsI_=function(param){return 0}, + _bsJ_= + [0, + function(param) + {function _btu_(param) + {var + _btW_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000), + _btX_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$0), + _btY_= + caml_call2 + (Runtime_ocaml_Runtime[103], + taux_loyer_eligible_formule, + _btX_), + _btZ_=caml_call1(Runtime_ocaml_Runtime[78],_btY_); + return caml_call2(Runtime_ocaml_Runtime[107],_btZ_,_btW_)} + function _btv_(param) + {var + _btU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _btV_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_btU_); + return caml_call2(Runtime_ocaml_Runtime[29],_sB_,_btV_)} + var + _btw_= + [0, + function(param) + {function _btx_(param) + {var + _btQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$1), + _btR_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$2), + _btS_= + caml_call2 + (Runtime_ocaml_Runtime[103], + taux_loyer_eligible_formule, + _btR_), + _btT_=caml_call1(Runtime_ocaml_Runtime[78],_btS_); + return caml_call2(Runtime_ocaml_Runtime[107],_btT_,_btQ_)} + function _bty_(param) + {var + _btL_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _btM_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_btL_), + _btN_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _btO_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_btN_), + _btP_=caml_call2(Runtime_ocaml_Runtime[83],_btO_,_btM_); + return caml_call2(Runtime_ocaml_Runtime[29],_sC_,_btP_)} + var + _btz_= + [0, + function(param) + {function _btA_(param) + {var + _btH_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$3), + _btI_=caml_call1(Runtime_ocaml_Runtime[39],cst_100000$4), + _btJ_= + caml_call2 + (Runtime_ocaml_Runtime[103], + taux_loyer_eligible_formule, + _btI_), + _btK_=caml_call1(Runtime_ocaml_Runtime[78],_btJ_); + return caml_call2(Runtime_ocaml_Runtime[107],_btK_,_btH_)} + function _btB_(param) + {var + _btC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _btD_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_btC_), + _btE_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _btF_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_btE_), + _btG_=caml_call2(Runtime_ocaml_Runtime[83],_btF_,_btD_); + return caml_call2(Runtime_ocaml_Runtime[29],_sD_,_btG_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_sE_,[0],_btB_,_btA_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_sF_,_btz_,_bty_,_btx_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_sG_,_btw_,_btv_,_btu_)}], + _bsK_=caml_call4(Runtime_ocaml_Runtime[63],_sH_,_bsJ_,_bsI_,_bsH_)} + catch(_btt_) + {_btt_ = caml_wrap_exception(_btt_); + if(_btt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sA_]; + throw _btt_} + var + taux_loyer_eligible_taux_arron= + caml_call3 + (Runtime_ocaml_Runtime[28],_sI_,Runtime_ocaml_Runtime[15],_bsK_); + function _bsL_(aide_finale) + {try + {var + _bti_= + function(param) + {var + _btm_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sK_, + Runtime_ocaml_Runtime[13], + aide_finale), + _btn_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _sL_, + traitement_aide_finale_contrib), + _btm_), + _bto_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sM_, + Runtime_ocaml_Runtime[13], + _btn_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_sN_,_bto_), + _btp_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$119), + _btq_= + caml_call2 + (Runtime_ocaml_Runtime[104], + reduction_loyer_solidarite, + fraction_l832_3), + _btr_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,_btq_); + if(caml_call2(Runtime_ocaml_Runtime[128],_btr_,_btp_)) + {var + _bts_= + caml_call2 + (Runtime_ocaml_Runtime[104], + reduction_loyer_solidarite, + fraction_l832_3); + return caml_call2 + (Runtime_ocaml_Runtime[98],aide_finale$0,_bts_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$120)}, + _btj_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_sO_,1)}, + _btk_=caml_call4(Runtime_ocaml_Runtime[63],_sP_,[0],_btj_,_bti_); + return _btk_} + catch(_btl_) + {_btl_ = caml_wrap_exception(_btl_); + if(_btl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sJ_]; + throw _btl_}} + var + traitement_aide_finale_reducti= + caml_call3 + (Runtime_ocaml_Runtime[28],_sQ_,Runtime_ocaml_Runtime[10],_bsL_); + try + {var + _bsM_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[92], + taux_composition_familiale, + taux_loyer_eligible_taux_arron)}, + _bsN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_sS_,1)}, + _bsO_=caml_call4(Runtime_ocaml_Runtime[63],_sT_,[0],_bsN_,_bsM_)} + catch(_bth_) + {_bth_ = caml_wrap_exception(_bth_); + if(_bth_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sR_]; + throw _bth_} + var + taux_prise_compte_ressources= + caml_call3 + (Runtime_ocaml_Runtime[28],_sU_,Runtime_ocaml_Runtime[15],_bsO_); + function _bsP_(aide_finale) + {try + {var + _bta_= + function(param) + {var + _bte_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sW_, + Runtime_ocaml_Runtime[13], + aide_finale), + _btf_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _sX_, + traitement_aide_finale_reducti), + _bte_), + _btg_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _sY_, + Runtime_ocaml_Runtime[13], + _btf_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_sZ_,_btg_); + return caml_call2 + (Runtime_ocaml_Runtime[113], + aide_finale$0, + montant_minimal_aide_d823_16) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$121) + :aide_finale$0}, + _btb_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_s0_,1)}, + _btc_=caml_call4(Runtime_ocaml_Runtime[63],_s1_,[0],_btb_,_bta_); + return _btc_} + catch(_btd_) + {_btd_ = caml_wrap_exception(_btd_); + if(_btd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_sV_]; + throw _btd_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_s2_,Runtime_ocaml_Runtime[10],_bsP_); + try + {var + _bsQ_= + function(param) + {var + _bs__= + caml_call2 + (Runtime_ocaml_Runtime[98], + ressources_menage_arrondies, + abattement_forfaitaire_d823_17), + participation_ressources= + caml_call2 + (Runtime_ocaml_Runtime[104],_bs__,taux_prise_compte_ressources), + _bs$_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$122), + participation_ressources$0= + caml_call2 + (Runtime_ocaml_Runtime[113],participation_ressources,_bs$_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$123) + :participation_ressources; + return caml_call2 + (Runtime_ocaml_Runtime[93], + participation_minimale, + participation_ressources$0)}, + _bsR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s4_,1)}, + _bsS_=caml_call4(Runtime_ocaml_Runtime[63],_s5_,[0],_bsR_,_bsQ_)} + catch(_bs9_) + {_bs9_ = caml_wrap_exception(_bs9_); + if(_bs9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_s3_]; + throw _bs9_} + var + participation_personnelle= + caml_call3 + (Runtime_ocaml_Runtime[28],_s6_,Runtime_ocaml_Runtime[13],_bsS_); + try + {var + _bsT_= + function(param) + {var + _bs7_= + caml_call2 + (Runtime_ocaml_Runtime[93], + loyer_eligible, + montant_forfaitaire_charges_d8), + aide_finale= + caml_call2 + (Runtime_ocaml_Runtime[98],_bs7_,participation_personnelle), + _bs8_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$124); + return caml_call2(Runtime_ocaml_Runtime[113],aide_finale,_bs8_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$125) + :aide_finale}, + _bsU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_s8_,1)}, + _bsV_=caml_call4(Runtime_ocaml_Runtime[63],_s9_,[0],_bsU_,_bsT_)} + catch(_bs6_) + {_bs6_ = caml_wrap_exception(_bs6_); + if(_bs6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_s7_]; + throw _bs6_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_s__,Runtime_ocaml_Runtime[13],_bsV_); + try + {var + _bsW_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_5$4), + _bsX_= + caml_call2(Runtime_ocaml_Runtime[104],plafond_loyer_d823_16_2,_bsW_), + _bsY_= + caml_call2 + (Runtime_ocaml_Runtime[128],plafond_degressivite_d823_16,_bsX_)} + catch(_bs5_) + {_bs5_ = caml_wrap_exception(_bs5_); + if(_bs5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_s$_]; + throw _bs5_} + if(_bsY_) + {try + {var + _bsZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_98$0), + _bs0_=caml_call2(Runtime_ocaml_Runtime[117],fraction_l832_3,_bsZ_), + _bs1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9), + _bs2_=caml_call2(Runtime_ocaml_Runtime[127],fraction_l832_3,_bs1_), + _bs3_=caml_call2(Runtime_ocaml_Runtime[83],_bs2_,_bs0_)} + catch(_bs4_) + {_bs4_ = caml_wrap_exception(_bs4_); + if(_bs4_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ta_]; + throw _bs4_} + if(_bs3_) + return [0, + montant_forfaitaire_charges_d8, + plafond_loyer_d823_16_2, + participation_minimale, + taux_composition_familiale, + participation_personnelle, + aide_finale_formule, + traitement_aide_finale_montant]; + throw [0,Runtime_ocaml_Runtime[3],_tb_]} + throw [0,Runtime_ocaml_Runtime[3],_tc_]} + function calcul_aide_personnalisee_loge$0(calcul_aide_personnalisee_loge) + {var + type_logement_foyer=calcul_aide_personnalisee_loge[1], + date_conventionnement=calcul_aide_personnalisee_loge[2], + ressources_menage_arrondies=calcul_aide_personnalisee_loge[3], + nombre_personnes_a_charge=calcul_aide_personnalisee_loge[4], + situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[5], + zone=calcul_aide_personnalisee_loge[6], + date_courante=calcul_aide_personnalisee_loge[7], + redevance=calcul_aide_personnalisee_loge[8], + condition_2_du_832_25=calcul_aide_personnalisee_loge[9], + n_nombre_parts_d832_25=calcul_aide_personnalisee_loge[10]; + try + {var + _bm2_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_121726)}, + _bm3_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_te_,1)}, + _bm4_=caml_call4(Runtime_ocaml_Runtime[63],_tf_,[0],_bm3_,_bm2_)} + catch(_brD_) + {_brD_ = caml_wrap_exception(_brD_); + if(_brD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_td_]; + throw _brD_} + var + coefficient_r_d832_25= + caml_call3 + (Runtime_ocaml_Runtime[28],_tg_,Runtime_ocaml_Runtime[13],_bm4_); + try + {var + _bm5_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$0)}, + _bm6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ti_,1)}, + _bm7_=caml_call4(Runtime_ocaml_Runtime[63],_tj_,[0],_bm6_,_bm5_)} + catch(_brC_) + {_brC_ = caml_wrap_exception(_brC_); + if(_brC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_th_]; + throw _brC_} + var + montant_forfaitaire_d832_24= + caml_call3 + (Runtime_ocaml_Runtime[28],_tk_,Runtime_ocaml_Runtime[13],_bm7_); + try + {var + _bm8_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$1)}, + _bm9_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tm_,1)}, + _bm__=caml_call4(Runtime_ocaml_Runtime[63],_tn_,[0],_bm9_,_bm8_)} + catch(_brB_) + {_brB_ = caml_wrap_exception(_brB_); + if(_brB_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tl_]; + throw _brB_} + var + montant_minimal_aide_d823_24= + caml_call3 + (Runtime_ocaml_Runtime[28],_to_,Runtime_ocaml_Runtime[13],_bm__); + try + {var + _bm$_= + function(param) + {function _brx_(param) + {switch(type_logement_foyer[0]) + {case 0:return 0; + case 1: + var _brz_=caml_call3(Runtime_ocaml_Runtime[57],1994,12,31); + return caml_call2 + (Runtime_ocaml_Runtime[130],date_conventionnement,_brz_); + case 2: + var _brA_=caml_call3(Runtime_ocaml_Runtime[57],1990,9,30); + return caml_call2 + (Runtime_ocaml_Runtime[130],date_conventionnement,_brA_); + default:return 0}} + function _bry_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_tq_,1)} + return caml_call4(Runtime_ocaml_Runtime[63],_tr_,[0],_bry_,_brx_)}, + _bna_=function(param){return 1}, + _bnb_=[0,function(param){return caml_call1(condition_2_du_832_25,0)}], + _bnc_=caml_call4(Runtime_ocaml_Runtime[63],_ts_,_bnb_,_bna_,_bm$_)} + catch(_brw_) + {_brw_ = caml_wrap_exception(_brw_); + if(_brw_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tp_]; + throw _brw_} + var + condition_2_du_832_25$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_tt_,Runtime_ocaml_Runtime[12],_bnc_); + try + {var + _bnd_=function(param){return date_courante}, + _bne_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tv_,1)}, + _bnf_=caml_call4(Runtime_ocaml_Runtime[63],_tw_,[0],_bne_,_bnd_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_tx_,Runtime_ocaml_Runtime[16],_bnf_)} + catch(_brv_) + {_brv_ = caml_wrap_exception(_brv_); + if(_brv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tu_]; + throw _brv_} + var + _bng_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_ty_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_tz_,_bng_), + contributions_sociales_dot_mon=result[1]; + try + {var + _bnh_=function(param){throw Runtime_ocaml_Runtime[2]}, + _bni_=function(param){return 0}, + _bnj_= + function(param) + {function _bqW_(param) + {switch(zone[0]) + {case 0: + var _bq3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$126); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq3_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_44443) + :caml_call1(Runtime_ocaml_Runtime[31],cst_52101); + var _bq4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$67); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_55555); + var _bq5_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$32); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_59454); + var _bq6_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$17); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bq6_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_63369); + var + _bq7_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$13), + _bq8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bq7_), + _bq9_=caml_call1(Runtime_ocaml_Runtime[69],_bq8_), + _bq__=caml_call1(Runtime_ocaml_Runtime[31],cst_7089), + _bq$_=caml_call2(Runtime_ocaml_Runtime[104],_bq__,_bq9_), + _bra_=caml_call1(Runtime_ocaml_Runtime[31],cst_68350); + return caml_call2(Runtime_ocaml_Runtime[93],_bra_,_bq$_); + case 1: + var _brb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$127); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brb_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_40643) + :caml_call1(Runtime_ocaml_Runtime[31],cst_47433); + var _brc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_50575); + var _brd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$33); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_54138); + var _bre_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$18); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bre_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_57687); + var + _brf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$14), + _brg_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_brf_), + _brh_=caml_call1(Runtime_ocaml_Runtime[69],_brg_), + _bri_=caml_call1(Runtime_ocaml_Runtime[31],cst_6407), + _brj_=caml_call2(Runtime_ocaml_Runtime[104],_bri_,_brh_), + _brk_=caml_call1(Runtime_ocaml_Runtime[31],cst_61469); + return caml_call2(Runtime_ocaml_Runtime[93],_brk_,_brj_); + default: + var _brl_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$128); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brl_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_38578) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44869); + var _brm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$69); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brm_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_47602); + var _brn_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_brn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_50744); + var _bro_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$19); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bro_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_53884); + var + _brp_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$15), + _brq_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_brp_), + _brr_=caml_call1(Runtime_ocaml_Runtime[69],_brq_), + _brs_=caml_call1(Runtime_ocaml_Runtime[31],cst_5946), + _brt_=caml_call2(Runtime_ocaml_Runtime[104],_brs_,_brr_), + _bru_=caml_call1(Runtime_ocaml_Runtime[31],cst_57416); + return caml_call2(Runtime_ocaml_Runtime[93],_bru_,_brt_)}} + function _bqX_(param) + {var + _bqY_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bqZ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bqY_), + _bq0_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bq1_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bq0_), + _bq2_=caml_call2(Runtime_ocaml_Runtime[83],_bq1_,_bqZ_); + return caml_call2(Runtime_ocaml_Runtime[29],_tB_,_bq2_)} + return caml_call4(Runtime_ocaml_Runtime[63],_tC_,[0],_bqX_,_bqW_)}, + _bnk_= + function(param) + {function _bql_(param) + {switch(zone[0]) + {case 0: + var _bqs_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$129); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqs_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_44630) + :caml_call1(Runtime_ocaml_Runtime[31],cst_52321); + var _bqt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_55788); + var _bqu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$35); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_59704); + var _bqv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$20); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_63635); + var + _bqw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$16), + _bqx_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqw_), + _bqy_=caml_call1(Runtime_ocaml_Runtime[69],_bqx_), + _bqz_=caml_call1(Runtime_ocaml_Runtime[31],cst_7119), + _bqA_=caml_call2(Runtime_ocaml_Runtime[104],_bqz_,_bqy_), + _bqB_=caml_call1(Runtime_ocaml_Runtime[31],cst_68637); + return caml_call2(Runtime_ocaml_Runtime[93],_bqB_,_bqA_); + case 1: + var _bqC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$130); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqC_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_40814) + :caml_call1(Runtime_ocaml_Runtime[31],cst_47632); + var _bqD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$71); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqD_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_50787); + var _bqE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqE_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_54365); + var _bqF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$21); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_57929); + var + _bqG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$17), + _bqH_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqG_), + _bqI_=caml_call1(Runtime_ocaml_Runtime[69],_bqH_), + _bqJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_6434), + _bqK_=caml_call2(Runtime_ocaml_Runtime[104],_bqJ_,_bqI_), + _bqL_=caml_call1(Runtime_ocaml_Runtime[31],cst_61727); + return caml_call2(Runtime_ocaml_Runtime[93],_bqL_,_bqK_); + default: + var _bqM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$131); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqM_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_38740) + :caml_call1(Runtime_ocaml_Runtime[31],cst_45057); + var _bqN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_47802); + var _bqO_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$37); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_50957); + var _bqP_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$22); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_54110); + var + _bqQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$18), + _bqR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqQ_), + _bqS_=caml_call1(Runtime_ocaml_Runtime[69],_bqR_), + _bqT_=caml_call1(Runtime_ocaml_Runtime[31],cst_5971), + _bqU_=caml_call2(Runtime_ocaml_Runtime[104],_bqT_,_bqS_), + _bqV_=caml_call1(Runtime_ocaml_Runtime[31],cst_57657); + return caml_call2(Runtime_ocaml_Runtime[93],_bqV_,_bqU_)}} + function _bqm_(param) + {var + _bqn_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bqo_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bqn_), + _bqp_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bqq_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bqp_), + _bqr_=caml_call2(Runtime_ocaml_Runtime[83],_bqq_,_bqo_); + return caml_call2(Runtime_ocaml_Runtime[29],_tD_,_bqr_)} + return caml_call4(Runtime_ocaml_Runtime[63],_tE_,[0],_bqm_,_bql_)}, + _bnl_= + [0, + function(param) + {function _bpP_(param) + {switch(zone[0]) + {case 0: + var _bpT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$132); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpT_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_46192) + :caml_call1(Runtime_ocaml_Runtime[31],cst_54152); + var _bpU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$73); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_57741); + var _bpV_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_61794); + var _bpW_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$23); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bpW_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_65862); + var + _bpX_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$19), + _bpY_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bpX_), + _bpZ_=caml_call1(Runtime_ocaml_Runtime[69],_bpY_), + _bp0_=caml_call1(Runtime_ocaml_Runtime[31],cst_7368), + _bp1_=caml_call2(Runtime_ocaml_Runtime[104],_bp0_,_bpZ_), + _bp2_=caml_call1(Runtime_ocaml_Runtime[31],cst_71039); + return caml_call2(Runtime_ocaml_Runtime[93],_bp2_,_bp1_); + case 1: + var _bp3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$133); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp3_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_42242) + :caml_call1(Runtime_ocaml_Runtime[31],cst_49299); + var _bp4_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_52565); + var _bp5_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$39); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_56268); + var _bp6_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$24); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bp6_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_59957); + var + _bp7_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$20), + _bp8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bp7_), + _bp9_=caml_call1(Runtime_ocaml_Runtime[69],_bp8_), + _bp__=caml_call1(Runtime_ocaml_Runtime[31],cst_6659), + _bp$_=caml_call2(Runtime_ocaml_Runtime[104],_bp__,_bp9_), + _bqa_=caml_call1(Runtime_ocaml_Runtime[31],cst_63887); + return caml_call2(Runtime_ocaml_Runtime[93],_bqa_,_bp$_); + default: + var _bqb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$134); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqb_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_40096) + :caml_call1(Runtime_ocaml_Runtime[31],cst_46634); + var _bqc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_49475); + var _bqd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$40); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_52740); + var _bqe_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$25); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bqe_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_56004); + var + _bqf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$21), + _bqg_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bqf_), + _bqh_=caml_call1(Runtime_ocaml_Runtime[69],_bqg_), + _bqi_=caml_call1(Runtime_ocaml_Runtime[31],cst_6180), + _bqj_=caml_call2(Runtime_ocaml_Runtime[104],_bqi_,_bqh_), + _bqk_=caml_call1(Runtime_ocaml_Runtime[31],cst_59675); + return caml_call2(Runtime_ocaml_Runtime[93],_bqk_,_bqj_)}} + function _bpQ_(param) + {var + _bpR_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bpS_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bpR_); + return caml_call2(Runtime_ocaml_Runtime[29],_tF_,_bpS_)} + return caml_call4(Runtime_ocaml_Runtime[63],_tG_,[0],_bpQ_,_bpP_)}, + _bnk_, + _bnj_], + _bnm_=caml_call4(Runtime_ocaml_Runtime[63],_tH_,_bnl_,_bni_,_bnh_)} + catch(_bpO_) + {_bpO_ = caml_wrap_exception(_bpO_); + if(_bpO_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tA_]; + throw _bpO_} + var + plafond_equivalence_loyer_elig= + caml_call3 + (Runtime_ocaml_Runtime[28],_tI_,Runtime_ocaml_Runtime[13],_bnm_); + function _bnn_(aide_finale) + {try + {var + _bpI_= + function(param) + {var + _bpM_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$135), + _bpN_= + caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d832_24); + return caml_call2(Runtime_ocaml_Runtime[128],_bpN_,_bpM_) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d832_24) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$136)}, + _bpJ_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_tK_,1)}, + _bpK_=caml_call4(Runtime_ocaml_Runtime[63],_tL_,[0],_bpJ_,_bpI_); + return _bpK_} + catch(_bpL_) + {_bpL_ = caml_wrap_exception(_bpL_); + if(_bpL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tJ_]; + throw _bpL_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_tM_,Runtime_ocaml_Runtime[10],_bnn_); + try + {var + _bno_=function(param){return condition_2_du_832_25$0}, + _bnp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tO_,1)}, + _bnq_=caml_call4(Runtime_ocaml_Runtime[63],_tP_,[0],_bnp_,_bno_), + calcul_nombre_parts_dot_condit= + caml_call3 + (Runtime_ocaml_Runtime[28],_tQ_,Runtime_ocaml_Runtime[12],_bnq_)} + catch(_bpH_) + {_bpH_ = caml_wrap_exception(_bpH_); + if(_bpH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tN_]; + throw _bpH_} + try + {var + _bnr_=function(param){return nombre_personnes_a_charge}, + _bns_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tS_,1)}, + _bnt_=caml_call4(Runtime_ocaml_Runtime[63],_tT_,[0],_bns_,_bnr_), + calcul_nombre_parts_dot_nombre= + caml_call3 + (Runtime_ocaml_Runtime[28],_tU_,Runtime_ocaml_Runtime[14],_bnt_)} + catch(_bpG_) + {_bpG_ = caml_wrap_exception(_bpG_); + if(_bpG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tR_]; + throw _bpG_} + try + {var + _bnu_=function(param){return situation_familiale_calcul_apl}, + _bnv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_tW_,1)}, + _bnw_=caml_call4(Runtime_ocaml_Runtime[63],_tX_,[0],_bnv_,_bnu_), + calcul_nombre_parts_dot_situat= + caml_call3 + (Runtime_ocaml_Runtime[28], + _tY_, + embed_situation_familiale_calc, + _bnw_)} + catch(_bpF_) + {_bpF_ = caml_wrap_exception(_bpF_); + if(_bpF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_tV_]; + throw _bpF_} + var + _bnx_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_tZ_,calcul_nombre_part_logement_fo), + [0, + calcul_nombre_parts_dot_condit, + calcul_nombre_parts_dot_nombre, + calcul_nombre_parts_dot_situat]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_t0_,_bnx_), + calcul_nombre_parts_dot_n_nomb=result$0[1]; + try + {var + _bny_= + function(param) + {return condition_2_du_832_25$0 + ?caml_call1(Runtime_ocaml_Runtime[31],cst_1500) + :caml_call1(Runtime_ocaml_Runtime[31],cst_2668)}, + _bnz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t2_,1)}, + _bnA_=caml_call4(Runtime_ocaml_Runtime[63],_t3_,[0],_bnz_,_bny_)} + catch(_bpE_) + {_bpE_ = caml_wrap_exception(_bpE_); + if(_bpE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_t1_]; + throw _bpE_} + var + montant_forfaitaire_d832_27= + caml_call3 + (Runtime_ocaml_Runtime[28],_t4_,Runtime_ocaml_Runtime[13],_bnA_); + try + {var + _bnB_= + function(param) + {return condition_2_du_832_25$0 + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2142091) + :caml_call1(Runtime_ocaml_Runtime[31],cst_1339340)}, + _bnC_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t6_,1)}, + _bnD_=caml_call4(Runtime_ocaml_Runtime[63],_t7_,[0],_bnC_,_bnB_)} + catch(_bpD_) + {_bpD_ = caml_wrap_exception(_bpD_); + if(_bpD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_t5_]; + throw _bpD_} + var + coefficient_multiplicateur_d83= + caml_call3 + (Runtime_ocaml_Runtime[28],_t8_,Runtime_ocaml_Runtime[13],_bnD_); + try + {var + _bnE_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[128], + redevance, + plafond_equivalence_loyer_elig) + ?plafond_equivalence_loyer_elig + :redevance}, + _bnF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_t__,1)}, + _bnG_=caml_call4(Runtime_ocaml_Runtime[63],_t$_,[0],_bnF_,_bnE_)} + catch(_bpC_) + {_bpC_ = caml_wrap_exception(_bpC_); + if(_bpC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_t9_]; + throw _bpC_} + var + equivalence_loyer_eligible= + caml_call3 + (Runtime_ocaml_Runtime[28],_ua_,Runtime_ocaml_Runtime[13],_bnG_); + try + {var + _bnH_= + function(param) + {function _bpA_(param){return calcul_nombre_parts_dot_n_nomb} + function _bpB_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_uc_,1)} + return caml_call4(Runtime_ocaml_Runtime[63],_ud_,[0],_bpB_,_bpA_)}, + _bnI_=function(param){return 1}, + _bnJ_= + [0,function(param){return caml_call1(n_nombre_parts_d832_25,0)}], + _bnK_=caml_call4(Runtime_ocaml_Runtime[63],_ue_,_bnJ_,_bnI_,_bnH_)} + catch(_bpz_) + {_bpz_ = caml_wrap_exception(_bpz_); + if(_bpz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ub_]; + throw _bpz_} + var + n_nombre_parts_d832_25$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_uf_,Runtime_ocaml_Runtime[15],_bnK_); + function _bnL_(allocation_mensuelle) + {try + {var + _bpv_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[98], + equivalence_loyer_eligible, + allocation_mensuelle)}, + _bpw_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_uh_,1)}, + _bpx_=caml_call4(Runtime_ocaml_Runtime[63],_ui_,[0],_bpw_,_bpv_); + return _bpx_} + catch(_bpy_) + {_bpy_ = caml_wrap_exception(_bpy_); + if(_bpy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ug_]; + throw _bpy_}} + var + depense_nette_minimale_d832_27= + caml_call3 + (Runtime_ocaml_Runtime[28],_uj_,Runtime_ocaml_Runtime[10],_bnL_); + try + {var + _bnM_=function(param){return ressources_menage_arrondies}, + _bnN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ul_,1)}, + _bnO_=caml_call4(Runtime_ocaml_Runtime[63],_um_,[0],_bnN_,_bnM_), + calcul_equivalence_loyer_minim$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_un_,Runtime_ocaml_Runtime[13],_bnO_)} + catch(_bpu_) + {_bpu_ = caml_wrap_exception(_bpu_); + if(_bpu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uk_]; + throw _bpu_} + try + {var + _bnP_=function(param){return condition_2_du_832_25$0}, + _bnQ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_up_,1)}, + _bnR_=caml_call4(Runtime_ocaml_Runtime[63],_uq_,[0],_bnQ_,_bnP_), + calcul_equivalence_loyer_minim$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_ur_,Runtime_ocaml_Runtime[12],_bnR_)} + catch(_bpt_) + {_bpt_ = caml_wrap_exception(_bpt_); + if(_bpt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uo_]; + throw _bpt_} + try + {var + _bnS_=function(param){return n_nombre_parts_d832_25$0}, + _bnT_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ut_,1)}, + _bnU_=caml_call4(Runtime_ocaml_Runtime[63],_uu_,[0],_bnT_,_bnS_), + calcul_equivalence_loyer_minim$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_uv_,Runtime_ocaml_Runtime[15],_bnU_)} + catch(_bps_) + {_bps_ = caml_wrap_exception(_bps_); + if(_bps_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_us_]; + throw _bps_} + var + _bnV_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_uw_,calcul_equivalence_loyer_minim), + [0, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_equivalence_loyer_minim$2]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_ux_,_bnV_), + calcul_equivalence_loyer_minim$3=result$1[1]; + try + {var + _bnW_= + function(param) + {var + _bpn_= + caml_call2 + (Runtime_ocaml_Runtime[104], + coefficient_r_d832_25, + n_nombre_parts_d832_25$0), + denominateur= + caml_call2 + (Runtime_ocaml_Runtime[98],ressources_menage_arrondies,_bpn_), + _bpo_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$137), + denominateur$0= + caml_call2(Runtime_ocaml_Runtime[113],denominateur,_bpo_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$138) + :denominateur, + _bpp_= + caml_call2 + (Runtime_ocaml_Runtime[104], + coefficient_multiplicateur_d83, + n_nombre_parts_d832_25$0), + _bpq_=caml_call2(Runtime_ocaml_Runtime[108],denominateur$0,_bpp_), + _bpr_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95); + return caml_call2(Runtime_ocaml_Runtime[97],_bpr_,_bpq_)}, + _bnX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uz_,1)}, + _bnY_= + [0, + function(param) + {function _bpi_(param) + {var + _bpk_= + caml_call2 + (Runtime_ocaml_Runtime[104], + coefficient_multiplicateur_d83, + n_nombre_parts_d832_25$0), + _bpl_= + caml_call2 + (Runtime_ocaml_Runtime[108], + ressources_menage_arrondies, + _bpk_), + _bpm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$0); + return caml_call2(Runtime_ocaml_Runtime[97],_bpm_,_bpl_)} + function _bpj_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_uA_,condition_2_du_832_25$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_uB_,[0],_bpj_,_bpi_)}], + _bnZ_=caml_call4(Runtime_ocaml_Runtime[63],_uC_,_bnY_,_bnX_,_bnW_)} + catch(_bph_) + {_bph_ = caml_wrap_exception(_bph_); + if(_bph_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uy_]; + throw _bph_} + var + coefficient_prise_en_charge_d8= + caml_call3 + (Runtime_ocaml_Runtime[28],_uD_,Runtime_ocaml_Runtime[15],_bnZ_); + function _bn0_(allocation_mensuelle) + {try + {var + _bpa_= + function(param) + {var + _bpe_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _uF_, + Runtime_ocaml_Runtime[13], + allocation_mensuelle), + _bpf_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _uG_, + depense_nette_minimale_d832_27), + _bpe_), + _bpg_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _uH_, + Runtime_ocaml_Runtime[13], + _bpf_), + depense_nette_minimale= + caml_call2(Runtime_ocaml_Runtime[27],_uI_,_bpg_); + return caml_call2 + (Runtime_ocaml_Runtime[118], + depense_nette_minimale, + montant_forfaitaire_d832_27) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + montant_forfaitaire_d832_27, + depense_nette_minimale) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$139)}, + _bpb_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_uJ_,1)}, + _bpc_=caml_call4(Runtime_ocaml_Runtime[63],_uK_,[0],_bpb_,_bpa_); + return _bpc_} + catch(_bpd_) + {_bpd_ = caml_wrap_exception(_bpd_); + if(_bpd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uE_]; + throw _bpd_}} + var + abattement_depense_nette_minim= + caml_call3 + (Runtime_ocaml_Runtime[28],_uL_,Runtime_ocaml_Runtime[10],_bn0_); + try + {var + _bn1_=function(param){return calcul_equivalence_loyer_minim$3}, + _bn2_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uN_,1)}, + _bn3_=caml_call4(Runtime_ocaml_Runtime[63],_uO_,[0],_bn2_,_bn1_)} + catch(_bo$_) + {_bo$_ = caml_wrap_exception(_bo$_); + if(_bo$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uM_]; + throw _bo$_} + var + equivalence_loyer_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_uP_,Runtime_ocaml_Runtime[13],_bn3_); + try + {var + _bn4_= + function(param) + {var + _bo5_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$5), + _bo6_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$6), + _bo7_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$0), + _bo8_= + caml_call2 + (Runtime_ocaml_Runtime[97], + coefficient_prise_en_charge_d8, + _bo7_), + _bo9_=caml_call2(Runtime_ocaml_Runtime[103],_bo8_,_bo6_), + _bo__=caml_call1(Runtime_ocaml_Runtime[78],_bo9_); + return caml_call2(Runtime_ocaml_Runtime[107],_bo__,_bo5_)}, + _bn5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_uR_,1)}, + _bn6_= + [0, + function(param) + {function _boX_(param) + {var + _boZ_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$7), + _bo0_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$8), + _bo1_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$1), + _bo2_= + caml_call2 + (Runtime_ocaml_Runtime[97], + coefficient_prise_en_charge_d8, + _bo1_), + _bo3_=caml_call2(Runtime_ocaml_Runtime[103],_bo2_,_bo0_), + _bo4_=caml_call1(Runtime_ocaml_Runtime[78],_bo3_); + return caml_call2(Runtime_ocaml_Runtime[107],_bo4_,_boZ_)} + function _boY_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_uS_,condition_2_du_832_25$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_uT_,[0],_boY_,_boX_)}], + _bn7_=caml_call4(Runtime_ocaml_Runtime[63],_uU_,_bn6_,_bn5_,_bn4_)} + catch(_boW_) + {_boW_ = caml_wrap_exception(_boW_); + if(_boW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uQ_]; + throw _boW_} + var + coefficient_prise_en_charge_d8$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_uV_,Runtime_ocaml_Runtime[15],_bn7_); + function _bn8_(aide_finale) + {try + {var + _boK_= + function(param) + {var + _boO_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _uX_, + Runtime_ocaml_Runtime[13], + aide_finale), + _boP_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _uY_, + traitement_aide_finale_minorat), + _boO_), + _boQ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _uZ_, + Runtime_ocaml_Runtime[13], + _boP_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_u0_,_boQ_), + _boR_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _u1_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _boS_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _u2_, + abattement_depense_nette_minim), + _boR_), + _boT_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _u3_, + Runtime_ocaml_Runtime[13], + _boS_), + _boU_=caml_call2(Runtime_ocaml_Runtime[27],_u4_,_boT_), + aide_finale$1= + caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,_boU_), + _boV_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$140); + return caml_call2 + (Runtime_ocaml_Runtime[128],aide_finale$1,_boV_) + ?aide_finale$1 + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$141)}, + _boL_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_u5_,1)}, + _boM_=caml_call4(Runtime_ocaml_Runtime[63],_u6_,[0],_boL_,_boK_); + return _boM_} + catch(_boN_) + {_boN_ = caml_wrap_exception(_boN_); + if(_boN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_uW_]; + throw _boN_}} + var + traitement_aide_finale_abattem= + caml_call3 + (Runtime_ocaml_Runtime[28],_u7_,Runtime_ocaml_Runtime[10],_bn8_); + try + {var + _bn9_= + function(param) + {var _boJ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$0); + return caml_call2 + (Runtime_ocaml_Runtime[127], + coefficient_prise_en_charge_d8$0, + _boJ_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$1) + :coefficient_prise_en_charge_d8$0}, + _bn__= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_u9_,1)}, + _bn$_= + [0, + function(param) + {function _boG_(param) + {var _boI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$1); + return caml_call2 + (Runtime_ocaml_Runtime[127], + coefficient_prise_en_charge_d8$0, + _boI_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_9$2) + :coefficient_prise_en_charge_d8$0} + function _boH_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_u__,condition_2_du_832_25$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_u$_,[0],_boH_,_boG_)}], + _boa_=caml_call4(Runtime_ocaml_Runtime[63],_va_,_bn$_,_bn__,_bn9_)} + catch(_boF_) + {_boF_ = caml_wrap_exception(_boF_); + if(_boF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_u8_]; + throw _boF_} + var + coefficient_prise_en_charge_d8$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_vb_,Runtime_ocaml_Runtime[15],_boa_); + function _bob_(aide_finale) + {try + {var + _boq_= + function(param) + {var + _bou_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vd_, + Runtime_ocaml_Runtime[13], + aide_finale), + _bov_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _ve_, + traitement_aide_finale_abattem), + _bou_), + _bow_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vf_, + Runtime_ocaml_Runtime[13], + _bov_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_vg_,_bow_), + _box_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vh_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _boy_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _vi_, + contributions_sociales_dot_mon), + _box_), + _boz_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vj_, + Runtime_ocaml_Runtime[13], + _boy_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_vk_,_boz_), + _boA_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$0), + _boB_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,crds), + _boC_=caml_call2(Runtime_ocaml_Runtime[98],_boB_,_boA_), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_boC_), + _boD_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$142), + _boE_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[128],_boE_,_boD_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$143)}, + _bor_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_vl_,1)}, + _bos_=caml_call4(Runtime_ocaml_Runtime[63],_vm_,[0],_bor_,_boq_); + return _bos_} + catch(_bot_) + {_bot_ = caml_wrap_exception(_bot_); + if(_bot_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vc_]; + throw _bot_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_vn_,Runtime_ocaml_Runtime[10],_bob_); + try + {var + _boc_= + function(param) + {var + _boo_= + caml_call2 + (Runtime_ocaml_Runtime[98], + equivalence_loyer_eligible, + equivalence_loyer_minimale), + aide_finale= + caml_call2 + (Runtime_ocaml_Runtime[104], + _boo_, + coefficient_prise_en_charge_d8$1), + _bop_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$144); + return caml_call2(Runtime_ocaml_Runtime[113],aide_finale,_bop_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$145) + :aide_finale}, + _bod_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vp_,1)}, + _boe_=caml_call4(Runtime_ocaml_Runtime[63],_vq_,[0],_bod_,_boc_)} + catch(_bon_) + {_bon_ = caml_wrap_exception(_bon_); + if(_bon_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vo_]; + throw _bon_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_vr_,Runtime_ocaml_Runtime[13],_boe_); + function _bof_(aide_finale) + {try + {var + _bog_= + function(param) + {var + _bok_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vt_, + Runtime_ocaml_Runtime[13], + aide_finale), + _bol_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _vu_, + traitement_aide_finale_contrib), + _bok_), + _bom_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _vv_, + Runtime_ocaml_Runtime[13], + _bol_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_vw_,_bom_); + return caml_call2 + (Runtime_ocaml_Runtime[113], + aide_finale$0, + montant_minimal_aide_d823_24) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$146) + :aide_finale$0}, + _boh_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_vx_,1)}, + _boi_=caml_call4(Runtime_ocaml_Runtime[63],_vy_,[0],_boh_,_bog_); + return _boi_} + catch(_boj_) + {_boj_ = caml_wrap_exception(_boj_); + if(_boj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vs_]; + throw _boj_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_vz_,Runtime_ocaml_Runtime[10],_bof_); + return [0, + coefficient_multiplicateur_d83, + coefficient_r_d832_25, + n_nombre_parts_d832_25$0, + equivalence_loyer_eligible, + plafond_equivalence_loyer_elig, + equivalence_loyer_minimale, + coefficient_prise_en_charge_d8$1, + aide_finale_formule, + traitement_aide_finale_montant]} + function calcul_aide_personnalisee_loge$1(calcul_aide_personnalisee_loge) + {var + mensualite_principale=calcul_aide_personnalisee_loge[1], + ressources_menage_arrondies=calcul_aide_personnalisee_loge[2], + nombre_personnes_a_charge=calcul_aide_personnalisee_loge[3], + situation_familiale_calcul_apl=calcul_aide_personnalisee_loge[4], + type_travaux_logement=calcul_aide_personnalisee_loge[5], + date_signature_pret=calcul_aide_personnalisee_loge[6], + local_habite_premiere_fois_ben=calcul_aide_personnalisee_loge[7], + date_entree_logement=calcul_aide_personnalisee_loge[8], + copropriete=calcul_aide_personnalisee_loge[9], + situation_r822_11_13_17=calcul_aide_personnalisee_loge[10], + zone=calcul_aide_personnalisee_loge[11], + type_pret=calcul_aide_personnalisee_loge[12], + anciennete_logement=calcul_aide_personnalisee_loge[13], + date_courante=calcul_aide_personnalisee_loge[14]; + try + {var + _aVY_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$1)}, + _aVZ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vB_,1)}, + _aV0_=caml_call4(Runtime_ocaml_Runtime[63],_vC_,[0],_aVZ_,_aVY_)} + catch(_bm1_) + {_bm1_ = caml_wrap_exception(_bm1_); + if(_bm1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vA_]; + throw _bm1_} + var + montant_forfaitaire_d832_10= + caml_call3 + (Runtime_ocaml_Runtime[28],_vD_,Runtime_ocaml_Runtime[13],_aV0_); + try + {var + _aV1_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$2)}, + _aV2_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vF_,1)}, + _aV3_=caml_call4(Runtime_ocaml_Runtime[63],_vG_,[0],_aV2_,_aV1_)} + catch(_bm0_) + {_bm0_ = caml_wrap_exception(_bm0_); + if(_bm0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vE_]; + throw _bm0_} + var + montant_minimal_aide_d832_10= + caml_call3 + (Runtime_ocaml_Runtime[28],_vH_,Runtime_ocaml_Runtime[13],_aV3_); + try + {var + _aV4_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_2211133)}, + _aV5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vJ_,1)}, + _aV6_=caml_call4(Runtime_ocaml_Runtime[63],_vK_,[0],_aV5_,_aV4_)} + catch(_bmZ_) + {_bmZ_ = caml_wrap_exception(_bmZ_); + if(_bmZ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vI_]; + throw _bmZ_} + var + coefficient_multiplicateur_d83= + caml_call3 + (Runtime_ocaml_Runtime[28],_vL_,Runtime_ocaml_Runtime[13],_aV6_); + try + {var + _aV7_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25)}, + _aV8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vN_,1)}, + _aV9_=caml_call4(Runtime_ocaml_Runtime[63],_vO_,[0],_aV8_,_aV7_)} + catch(_bmY_) + {_bmY_ = caml_wrap_exception(_bmY_); + if(_bmY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vM_]; + throw _bmY_} + var + coefficient_multiplicateur_d83$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_vP_,Runtime_ocaml_Runtime[15],_aV9_); + try + {var + _aV__= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_560085)}, + _aV$_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vR_,1)}, + _aWa_=caml_call4(Runtime_ocaml_Runtime[63],_vS_,[0],_aV$_,_aV__)} + catch(_bmX_) + {_bmX_ = caml_wrap_exception(_bmX_); + if(_bmX_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vQ_]; + throw _bmX_} + var + montant_limite_tranches_d832_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_vT_,Runtime_ocaml_Runtime[13],_aWa_); + try + {var + _aWb_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_208$0)}, + _aWc_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vV_,1)}, + _aWd_=caml_call4(Runtime_ocaml_Runtime[63],_vW_,[0],_aWc_,_aWb_)} + catch(_bmW_) + {_bmW_ = caml_wrap_exception(_bmW_); + if(_bmW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vU_]; + throw _bmW_} + var + taux_tranche_inferieure_d832_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_vX_,Runtime_ocaml_Runtime[15],_aWd_); + try + {var + _aWe_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_416)}, + _aWf_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_vZ_,1)}, + _aWg_=caml_call4(Runtime_ocaml_Runtime[63],_v0_,[0],_aWf_,_aWe_)} + catch(_bmV_) + {_bmV_ = caml_wrap_exception(_bmV_); + if(_bmV_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_vY_]; + throw _bmV_} + var + taux_tranche_superieure_d832_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_v1_,Runtime_ocaml_Runtime[15],_aWg_); + try + {var + _aWh_= + function(param) + {var + _bmT_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957), + _bmU_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$76); + return caml_call2(Runtime_ocaml_Runtime[107],_bmU_,_bmT_)}, + _aWi_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v3_,1)}, + _aWj_=caml_call4(Runtime_ocaml_Runtime[63],_v4_,[0],_aWi_,_aWh_)} + catch(_bmS_) + {_bmS_ = caml_wrap_exception(_bmS_); + if(_bmS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_v2_]; + throw _bmS_} + var + taux_francs_vers_euros= + caml_call3 + (Runtime_ocaml_Runtime[28],_v5_,Runtime_ocaml_Runtime[15],_aWj_); + try + {var + _aWk_=function(param){return nombre_personnes_a_charge}, + _aWl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v7_,1)}, + _aWm_=caml_call4(Runtime_ocaml_Runtime[63],_v8_,[0],_aWl_,_aWk_), + calcul_nombre_parts_dot_nombre= + caml_call3 + (Runtime_ocaml_Runtime[28],_v9_,Runtime_ocaml_Runtime[14],_aWm_)} + catch(_bmR_) + {_bmR_ = caml_wrap_exception(_bmR_); + if(_bmR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_v6_]; + throw _bmR_} + try + {var + _aWn_=function(param){return situation_familiale_calcul_apl}, + _aWo_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_v$_,1)}, + _aWp_=caml_call4(Runtime_ocaml_Runtime[63],_wa_,[0],_aWo_,_aWn_), + calcul_nombre_parts_dot_situat= + caml_call3 + (Runtime_ocaml_Runtime[28], + _wb_, + embed_situation_familiale_calc, + _aWp_)} + catch(_bmQ_) + {_bmQ_ = caml_wrap_exception(_bmQ_); + if(_bmQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_v__]; + throw _bmQ_} + var + _aWq_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_wc_,calcul_nombre_parts_accession_), + [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_wd_,_aWq_), + calcul_nombre_parts_dot_n_nomb=result[1]; + try + {var + _aWr_= + function(param) + {if(0 === anciennete_logement[0]) + {var _bmO_=caml_call3(Runtime_ocaml_Runtime[57],1998,10,1); + return caml_call2 + (Runtime_ocaml_Runtime[120],date_signature_pret,_bmO_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234)} + var ameliore_par_occupant=anciennete_logement[1]; + if(0 === ameliore_par_occupant[0]) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0172); + var _bmP_=caml_call3(Runtime_ocaml_Runtime[57],1998,10,1); + return caml_call2 + (Runtime_ocaml_Runtime[120],date_signature_pret,_bmP_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_0226$0) + :caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$0)}, + _aWs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wf_,1)}, + _aWt_=caml_call4(Runtime_ocaml_Runtime[63],_wg_,[0],_aWs_,_aWr_)} + catch(_bmN_) + {_bmN_ = caml_wrap_exception(_bmN_); + if(_bmN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_we_]; + throw _bmN_} + var + coefficient_multiplicateur_d83$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_wh_,Runtime_ocaml_Runtime[15],_aWt_); + try + {var + _aWu_=function(param){return date_courante}, + _aWv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wj_,1)}, + _aWw_=caml_call4(Runtime_ocaml_Runtime[63],_wk_,[0],_aWv_,_aWu_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_wl_,Runtime_ocaml_Runtime[16],_aWw_)} + catch(_bmM_) + {_bmM_ = caml_wrap_exception(_bmM_); + if(_bmM_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wi_]; + throw _bmM_} + var + _aWx_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_wm_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_wn_,_aWx_), + contributions_sociales_dot_mon=result$0[1]; + try + {var + _aWy_= + function(param) + {function _bmd_(param){throw Runtime_ocaml_Runtime[2]} + function _bme_(param){return 0} + function _bmf_(param) + {function _bmB_(param) + {var + _bmI_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bmJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$1), + _bmK_=caml_call2(Runtime_ocaml_Runtime[104],_bmJ_,_bmI_), + _bmL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5399$1); + return caml_call2(Runtime_ocaml_Runtime[93],_bmL_,_bmK_)} + function _bmC_(param) + {var + _bmD_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bmE_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bmD_), + _bmF_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bmG_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bmF_), + _bmH_=caml_call2(Runtime_ocaml_Runtime[83],_bmG_,_bmE_); + return caml_call2(Runtime_ocaml_Runtime[29],_wp_,_bmH_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wq_,[0],_bmC_,_bmB_)} + function _bmg_(param) + {function _bmq_(param) + {var + _bmx_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bmy_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$1), + _bmz_=caml_call2(Runtime_ocaml_Runtime[104],_bmy_,_bmx_), + _bmA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$1); + return caml_call2(Runtime_ocaml_Runtime[93],_bmA_,_bmz_)} + function _bmr_(param) + {var + _bms_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bmt_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bms_), + _bmu_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bmv_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bmu_), + _bmw_=caml_call2(Runtime_ocaml_Runtime[83],_bmv_,_bmt_); + return caml_call2(Runtime_ocaml_Runtime[29],_wr_,_bmw_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_ws_,[0],_bmr_,_bmq_)} + var + _bmh_= + [0, + function(param) + {function _bmi_(param) + {var + _bmm_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bmn_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$1), + _bmo_=caml_call2(Runtime_ocaml_Runtime[104],_bmn_,_bmm_), + _bmp_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$1); + return caml_call2(Runtime_ocaml_Runtime[93],_bmp_,_bmo_)} + function _bmj_(param) + {var + _bmk_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _bml_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bmk_); + return caml_call2(Runtime_ocaml_Runtime[29],_wt_,_bml_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wu_,[0],_bmj_,_bmi_)}, + _bmg_, + _bmf_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_wv_,_bmh_,_bme_,_bmd_)}, + _aWz_=function(param){return 1}, + _aWA_= + [0, + function(param) + {function _blD_(param){throw Runtime_ocaml_Runtime[2]} + function _blE_(param){return 0} + function _blF_(param) + {function _bl3_(param) + {var + _bl$_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bma_=caml_call1(Runtime_ocaml_Runtime[31],cst_1224$2), + _bmb_=caml_call2(Runtime_ocaml_Runtime[104],_bma_,_bl$_), + _bmc_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2699$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5399$2); + return caml_call2(Runtime_ocaml_Runtime[93],_bmc_,_bmb_)} + function _bl4_(param) + {var + _bl5_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bl6_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bl5_), + _bl7_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _bl8_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_bl7_), + _bl9_=caml_call2(Runtime_ocaml_Runtime[83],_bl8_,_bl6_), + _bl__= + caml_call2(Runtime_ocaml_Runtime[83],_bl9_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_ww_,_bl__)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wx_,[0],_bl4_,_bl3_)} + function _blG_(param) + {function _blR_(param) + {var + _blZ_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _bl0_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$2), + _bl1_=caml_call2(Runtime_ocaml_Runtime[104],_bl0_,_blZ_), + _bl2_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$2); + return caml_call2(Runtime_ocaml_Runtime[93],_bl2_,_bl1_)} + function _blS_(param) + {var + _blT_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _blU_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_blT_), + _blV_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _blW_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_blV_), + _blX_=caml_call2(Runtime_ocaml_Runtime[83],_blW_,_blU_), + _blY_= + caml_call2(Runtime_ocaml_Runtime[83],_blX_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_wy_,_blY_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wz_,[0],_blS_,_blR_)} + var + _blH_= + [0, + function(param) + {function _blI_(param) + {var + _blN_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _blO_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$2), + _blP_=caml_call2(Runtime_ocaml_Runtime[104],_blO_,_blN_), + _blQ_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$2); + return caml_call2(Runtime_ocaml_Runtime[93],_blQ_,_blP_)} + function _blJ_(param) + {var + _blK_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _blL_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_blK_), + _blM_= + caml_call2(Runtime_ocaml_Runtime[83],_blL_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_wA_,_blM_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wB_,[0],_blJ_,_blI_)}, + _blG_, + _blF_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_wC_,_blH_,_blE_,_blD_)}], + _aWB_=caml_call4(Runtime_ocaml_Runtime[63],_wD_,_aWA_,_aWz_,_aWy_)} + catch(_blC_) + {_blC_ = caml_wrap_exception(_blC_); + if(_blC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wo_]; + throw _blC_} + var + montant_forfaitaire_charges_d8= + caml_call3 + (Runtime_ocaml_Runtime[28],_wE_,Runtime_ocaml_Runtime[13],_aWB_); + function _aWC_(aide_finale) + {try + {var + _blw_= + function(param) + {var + _blA_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$147), + _blB_= + caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d832_10); + return caml_call2(Runtime_ocaml_Runtime[128],_blB_,_blA_) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d832_10) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$148)}, + _blx_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_wG_,1)}, + _bly_=caml_call4(Runtime_ocaml_Runtime[63],_wH_,[0],_blx_,_blw_); + return _bly_} + catch(_blz_) + {_blz_ = caml_wrap_exception(_blz_); + if(_blz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wF_]; + throw _blz_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_wI_,Runtime_ocaml_Runtime[10],_aWC_); + try + {var + _aWD_= + function(param) + {var + _blv_= + caml_call2 + (Runtime_ocaml_Runtime[104], + mensualite_principale, + coefficient_multiplicateur_d83$0); + return caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage_arrondies, + _blv_) + ?caml_call2 + (Runtime_ocaml_Runtime[104], + mensualite_principale, + coefficient_multiplicateur_d83$0) + :ressources_menage_arrondies}, + _aWE_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_wK_,1)}, + _aWF_= + [0, + function(param) + {function _blt_(param){return ressources_menage_arrondies} + function _blu_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_wL_,situation_r822_11_13_17)} + return caml_call4(Runtime_ocaml_Runtime[63],_wM_,[0],_blu_,_blt_)}], + _aWG_=caml_call4(Runtime_ocaml_Runtime[63],_wN_,_aWF_,_aWE_,_aWD_)} + catch(_bls_) + {_bls_ = caml_wrap_exception(_bls_); + if(_bls_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wJ_]; + throw _bls_} + var + ressources_menage_avec_d832_18= + caml_call3 + (Runtime_ocaml_Runtime[28],_wO_,Runtime_ocaml_Runtime[13],_aWG_); + function _aWH_(date_signature_pret) + {try + {var + _aZs_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aZt_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_wQ_,0)}, + _aZu_= + function(param) + {function _bjo_(param){throw Runtime_ocaml_Runtime[2]} + function _bjp_(param){return 0} + function _bjq_(param) + {function _bk0_(param) + {switch(zone[0]) + {case 0: + var _bk8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$149); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bk8_)) + var + _bk9_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_148100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_178700); + else + var + _bk__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$77), + _bk$_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bk__), + _bla_=caml_call1(Runtime_ocaml_Runtime[69],_bk$_), + _blb_=caml_call1(Runtime_ocaml_Runtime[31],cst_30600), + _blc_=caml_call2(Runtime_ocaml_Runtime[104],_blb_,_bla_), + _bld_=caml_call1(Runtime_ocaml_Runtime[31],cst_209300), + _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_bld_,_blc_); + break; + case 1: + var _ble_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$150); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ble_)) + var + _bk9_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_158900); + else + var + _blf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$78), + _blg_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_blf_), + _blh_=caml_call1(Runtime_ocaml_Runtime[69],_blg_), + _bli_=caml_call1(Runtime_ocaml_Runtime[31],cst_26900), + _blj_=caml_call2(Runtime_ocaml_Runtime[104],_bli_,_blh_), + _blk_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800), + _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_blk_,_blj_); + break; + default: + var _bll_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$151); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bll_)) + var + _bk9_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_123300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_147900); + else + var + _blm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$79), + _bln_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_blm_), + _blo_=caml_call1(Runtime_ocaml_Runtime[69],_bln_), + _blp_=caml_call1(Runtime_ocaml_Runtime[31],cst_24600), + _blq_=caml_call2(Runtime_ocaml_Runtime[104],_blp_,_blo_), + _blr_=caml_call1(Runtime_ocaml_Runtime[31],cst_172500), + _bk9_=caml_call2(Runtime_ocaml_Runtime[93],_blr_,_blq_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_bk9_,taux_francs_vers_euros)} + function _bk1_(param) + {switch(type_pret[0]) + {case 0:var _bk2_=1;break; + case 1:var _bk2_=0;break; + case 2:var _bk2_=0;break; + case 3:var _bk2_=0;break; + default:var _bk2_=0} + var + _bk3_=0 === anciennete_logement[0]?0:1, + _bk4_=caml_call2(Runtime_ocaml_Runtime[83],_bk3_,_bk2_), + _bk5_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _bk6_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bk5_), + _bk7_=caml_call2(Runtime_ocaml_Runtime[83],_bk6_,_bk4_); + return caml_call2(Runtime_ocaml_Runtime[29],_wR_,_bk7_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wS_,[0],_bk1_,_bk0_)} + function _bjr_(param) + {function _bkw_(param) + {switch(zone[0]) + {case 0: + var _bkE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$152); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkE_)) + var + _bkF_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_184000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_220000); + else + var + _bkG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$80), + _bkH_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkG_), + _bkI_=caml_call1(Runtime_ocaml_Runtime[69],_bkH_), + _bkJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_38000), + _bkK_=caml_call2(Runtime_ocaml_Runtime[104],_bkJ_,_bkI_), + _bkL_=caml_call1(Runtime_ocaml_Runtime[31],cst_260000), + _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkL_,_bkK_); + break; + case 1: + var _bkM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$153); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkM_)) + var + _bkF_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_164200) + :caml_call1(Runtime_ocaml_Runtime[31],cst_197700); + else + var + _bkN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$81), + _bkO_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkN_), + _bkP_=caml_call1(Runtime_ocaml_Runtime[69],_bkO_), + _bkQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_33500), + _bkR_=caml_call2(Runtime_ocaml_Runtime[104],_bkQ_,_bkP_), + _bkS_=caml_call1(Runtime_ocaml_Runtime[31],cst_231200), + _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkS_,_bkR_); + break; + default: + var _bkT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$154); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkT_)) + var + _bkF_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_153200) + :caml_call1(Runtime_ocaml_Runtime[31],cst_183700); + else + var + _bkU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$82), + _bkV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkU_), + _bkW_=caml_call1(Runtime_ocaml_Runtime[69],_bkV_), + _bkX_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$0), + _bkY_=caml_call2(Runtime_ocaml_Runtime[104],_bkX_,_bkW_), + _bkZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_214200), + _bkF_=caml_call2(Runtime_ocaml_Runtime[93],_bkZ_,_bkY_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_bkF_,taux_francs_vers_euros)} + function _bkx_(param) + {switch(type_pret[0]) + {case 0:var _bky_=1;break; + case 1:var _bky_=0;break; + case 2:var _bky_=0;break; + case 3:var _bky_=0;break; + default:var _bky_=0} + var + _bkz_=0 === anciennete_logement[0]?1:0, + _bkA_=caml_call2(Runtime_ocaml_Runtime[83],_bkz_,_bky_), + _bkB_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _bkC_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bkB_), + _bkD_=caml_call2(Runtime_ocaml_Runtime[83],_bkC_,_bkA_); + return caml_call2(Runtime_ocaml_Runtime[29],_wT_,_bkD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wU_,[0],_bkx_,_bkw_)} + function _bjs_(param) + {function _bj1_(param) + {switch(zone[0]) + {case 0: + var _bka_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$155); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bka_)) + var + _bkb_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_202500); + else + var + _bkc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$83), + _bkd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkc_), + _bke_=caml_call1(Runtime_ocaml_Runtime[69],_bkd_), + _bkf_=caml_call1(Runtime_ocaml_Runtime[31],cst_34700), + _bkg_=caml_call2(Runtime_ocaml_Runtime[104],_bkf_,_bke_), + _bkh_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200), + _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bkh_,_bkg_); + break; + case 1: + var _bki_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$156); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bki_)) + var + _bkb_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_149600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_180100); + else + var + _bkj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$84), + _bkk_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkj_), + _bkl_=caml_call1(Runtime_ocaml_Runtime[69],_bkk_), + _bkm_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$1), + _bkn_=caml_call2(Runtime_ocaml_Runtime[104],_bkm_,_bkl_), + _bko_=caml_call1(Runtime_ocaml_Runtime[31],cst_210600), + _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bko_,_bkn_); + break; + default: + var _bkp_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$157); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bkp_)) + var + _bkb_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_167600); + else + var + _bkq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$85), + _bkr_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bkq_), + _bks_=caml_call1(Runtime_ocaml_Runtime[69],_bkr_), + _bkt_=caml_call1(Runtime_ocaml_Runtime[31],cst_27900), + _bku_=caml_call2(Runtime_ocaml_Runtime[104],_bkt_,_bks_), + _bkv_=caml_call1(Runtime_ocaml_Runtime[31],cst_195500), + _bkb_=caml_call2(Runtime_ocaml_Runtime[93],_bkv_,_bku_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_bkb_,taux_francs_vers_euros)} + function _bj2_(param) + {switch(type_pret[0]) + {case 0:var _bj3_=1;break; + case 1:var _bj3_=0;break; + case 2:var _bj3_=0;break; + case 3:var _bj3_=0;break; + default:var _bj3_=0} + var + _bj4_=0 === anciennete_logement[0]?0:1, + _bj5_=caml_call2(Runtime_ocaml_Runtime[83],_bj4_,_bj3_), + _bj6_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _bj7_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bj6_), + _bj8_=caml_call2(Runtime_ocaml_Runtime[83],_bj7_,_bj5_), + _bj9_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _bj__= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bj9_), + _bj$_=caml_call2(Runtime_ocaml_Runtime[83],_bj__,_bj8_); + return caml_call2(Runtime_ocaml_Runtime[29],_wV_,_bj$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wW_,[0],_bj2_,_bj1_)} + var + _bjt_= + [0, + function(param) + {function _bju_(param) + {switch(zone[0]) + {case 0: + var _bjF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$158); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjF_)) + var + _bjG_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500) + :caml_call1(Runtime_ocaml_Runtime[31],cst_251500); + else + var + _bjH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$86), + _bjI_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjH_), + _bjJ_=caml_call1(Runtime_ocaml_Runtime[69],_bjI_), + _bjK_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000), + _bjL_=caml_call2(Runtime_ocaml_Runtime[104],_bjK_,_bjJ_), + _bjM_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500), + _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bjM_,_bjL_); + break; + case 1: + var _bjN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$159); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjN_)) + var + _bjG_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_223900); + else + var + _bjO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$87), + _bjP_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjO_), + _bjQ_=caml_call1(Runtime_ocaml_Runtime[69],_bjP_), + _bjR_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900), + _bjS_=caml_call2(Runtime_ocaml_Runtime[104],_bjR_,_bjQ_), + _bjT_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800), + _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bjT_,_bjS_); + break; + default: + var _bjU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$160); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjU_)) + var + _bjG_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_208200); + else + var + _bjV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$88), + _bjW_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjV_), + _bjX_=caml_call1(Runtime_ocaml_Runtime[69],_bjW_), + _bjY_=caml_call1(Runtime_ocaml_Runtime[31],cst_35600), + _bjZ_=caml_call2(Runtime_ocaml_Runtime[104],_bjY_,_bjX_), + _bj0_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800), + _bjG_=caml_call2(Runtime_ocaml_Runtime[93],_bj0_,_bjZ_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_bjG_,taux_francs_vers_euros)} + function _bjv_(param) + {switch(type_pret[0]) + {case 0:var _bjw_=1;break; + case 1:var _bjw_=0;break; + case 2:var _bjw_=0;break; + case 3:var _bjw_=0;break; + default:var _bjw_=0} + var + _bjx_=0 === anciennete_logement[0]?1:0, + _bjy_=caml_call2(Runtime_ocaml_Runtime[83],_bjx_,_bjw_), + _bjz_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _bjA_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bjz_), + _bjB_=caml_call2(Runtime_ocaml_Runtime[83],_bjA_,_bjy_), + _bjC_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _bjD_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bjC_), + _bjE_=caml_call2(Runtime_ocaml_Runtime[83],_bjD_,_bjB_); + return caml_call2(Runtime_ocaml_Runtime[29],_wX_,_bjE_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_wY_,[0],_bjv_,_bju_)}, + _bjs_, + _bjr_, + _bjq_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_wZ_,_bjt_,_bjp_,_bjo_)}, + _aZv_= + [0, + function(param) + {function _aZy_(param) + {function _aZY_(param){throw Runtime_ocaml_Runtime[2]} + function _aZZ_(param){return 0} + function _aZ0_(param) + {function _biU_(param) + {switch(zone[0]) + {case 0: + var _bi5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$161); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bi5_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29986) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36187); + var + _bi6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$89), + _bi7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bi6_), + _bi8_=caml_call1(Runtime_ocaml_Runtime[69],_bi7_), + _bi9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6201), + _bi__=caml_call2(Runtime_ocaml_Runtime[104],_bi9_,_bi8_), + _bi$_=caml_call1(Runtime_ocaml_Runtime[31],cst_42386); + return caml_call2(Runtime_ocaml_Runtime[93],_bi$_,_bi__); + case 1: + var _bja_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$162); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bja_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26730) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32193); + var + _bjb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$90), + _bjc_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bjb_), + _bjd_=caml_call1(Runtime_ocaml_Runtime[69],_bjc_), + _bje_=caml_call1(Runtime_ocaml_Runtime[31],cst_5463), + _bjf_=caml_call2(Runtime_ocaml_Runtime[104],_bje_,_bjd_), + _bjg_=caml_call1(Runtime_ocaml_Runtime[31],cst_37656); + return caml_call2(Runtime_ocaml_Runtime[93],_bjg_,_bjf_); + default: + var _bjh_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$163); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bjh_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24964) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29948); + var + _bji_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$91), + _bjj_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bji_), + _bjk_=caml_call1(Runtime_ocaml_Runtime[69],_bjj_), + _bjl_=caml_call1(Runtime_ocaml_Runtime[31],cst_4986), + _bjm_=caml_call2(Runtime_ocaml_Runtime[104],_bjl_,_bjk_), + _bjn_=caml_call1(Runtime_ocaml_Runtime[31],cst_34934); + return caml_call2(Runtime_ocaml_Runtime[93],_bjn_,_bjm_)}} + function _biV_(param) + {switch(type_pret[0]) + {case 0:var _biW_=0;break; + case 1:var _biW_=1;break; + case 2:var _biW_=0;break; + case 3:var _biW_=0;break; + default:var _biW_=0} + var + _biX_=0 === anciennete_logement[0]?0:1, + _biY_=caml_call2(Runtime_ocaml_Runtime[83],_biX_,_biW_), + _biZ_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), + _bi0_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_biZ_), + _bi1_=caml_call2(Runtime_ocaml_Runtime[83],_bi0_,_biY_), + _bi2_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bi3_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bi2_), + _bi4_=caml_call2(Runtime_ocaml_Runtime[83],_bi3_,_bi1_); + return caml_call2(Runtime_ocaml_Runtime[29],_w0_,_bi4_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w1_,[0],_biV_,_biU_)} + function _aZ1_(param) + {function _bio_(param) + {switch(zone[0]) + {case 0: + var _biz_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$164); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biz_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_37252) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44941); + var + _biA_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$92), + _biB_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biA_), + _biC_=caml_call1(Runtime_ocaml_Runtime[69],_biB_), + _biD_=caml_call1(Runtime_ocaml_Runtime[31],cst_7687), + _biE_=caml_call2(Runtime_ocaml_Runtime[104],_biD_,_biC_), + _biF_=caml_call1(Runtime_ocaml_Runtime[31],cst_52629); + return caml_call2(Runtime_ocaml_Runtime[93],_biF_,_biE_); + case 1: + var _biG_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$165); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biG_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_33244) + :caml_call1(Runtime_ocaml_Runtime[31],cst_40013); + var + _biH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$93), + _biI_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biH_), + _biJ_=caml_call1(Runtime_ocaml_Runtime[69],_biI_), + _biK_=caml_call1(Runtime_ocaml_Runtime[31],cst_6768), + _biL_=caml_call2(Runtime_ocaml_Runtime[104],_biK_,_biJ_), + _biM_=caml_call1(Runtime_ocaml_Runtime[31],cst_46783); + return caml_call2(Runtime_ocaml_Runtime[93],_biM_,_biL_); + default: + var _biN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$166); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_biN_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31036) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37215); + var + _biO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$94), + _biP_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_biO_), + _biQ_=caml_call1(Runtime_ocaml_Runtime[69],_biP_), + _biR_=caml_call1(Runtime_ocaml_Runtime[31],cst_6179), + _biS_=caml_call2(Runtime_ocaml_Runtime[104],_biR_,_biQ_), + _biT_=caml_call1(Runtime_ocaml_Runtime[31],cst_43394); + return caml_call2(Runtime_ocaml_Runtime[93],_biT_,_biS_)}} + function _bip_(param) + {switch(type_pret[0]) + {case 0:var _biq_=0;break; + case 1:var _biq_=1;break; + case 2:var _biq_=0;break; + case 3:var _biq_=0;break; + default:var _biq_=0} + var + _bir_=0 === anciennete_logement[0]?1:0, + _bis_=caml_call2(Runtime_ocaml_Runtime[83],_bir_,_biq_), + _bit_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), + _biu_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bit_), + _biv_=caml_call2(Runtime_ocaml_Runtime[83],_biu_,_bis_), + _biw_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bix_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_biw_), + _biy_=caml_call2(Runtime_ocaml_Runtime[83],_bix_,_biv_); + return caml_call2(Runtime_ocaml_Runtime[29],_w2_,_biy_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w3_,[0],_bip_,_bio_)} + function _aZ2_(param) + {function _bhR_(param) + {switch(zone[0]) + {case 0: + var _bh5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$167); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bh5_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29897) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36079); + var + _bh6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$95), + _bh7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bh6_), + _bh8_=caml_call1(Runtime_ocaml_Runtime[69],_bh7_), + _bh9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6182), + _bh__=caml_call2(Runtime_ocaml_Runtime[104],_bh9_,_bh8_), + _bh$_=caml_call1(Runtime_ocaml_Runtime[31],cst_42260); + return caml_call2(Runtime_ocaml_Runtime[93],_bh$_,_bh__); + case 1: + var _bia_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$168); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bia_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26650) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32097); + var + _bib_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$96), + _bic_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bib_), + _bid_=caml_call1(Runtime_ocaml_Runtime[69],_bic_), + _bie_=caml_call1(Runtime_ocaml_Runtime[31],cst_5447), + _bif_=caml_call2(Runtime_ocaml_Runtime[104],_bie_,_bid_), + _big_=caml_call1(Runtime_ocaml_Runtime[31],cst_37543); + return caml_call2(Runtime_ocaml_Runtime[93],_big_,_bif_); + default: + var _bih_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$169); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bih_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24889) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29858); + var + _bii_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$97), + _bij_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bii_), + _bik_=caml_call1(Runtime_ocaml_Runtime[69],_bij_), + _bil_=caml_call1(Runtime_ocaml_Runtime[31],cst_4971), + _bim_=caml_call2(Runtime_ocaml_Runtime[104],_bil_,_bik_), + _bin_=caml_call1(Runtime_ocaml_Runtime[31],cst_34829); + return caml_call2(Runtime_ocaml_Runtime[93],_bin_,_bim_)}} + function _bhS_(param) + {switch(type_pret[0]) + {case 0:var _bhT_=0;break; + case 1:var _bhT_=1;break; + case 2:var _bhT_=0;break; + case 3:var _bhT_=0;break; + default:var _bhT_=0} + var + _bhU_=0 === anciennete_logement[0]?0:1, + _bhV_=caml_call2(Runtime_ocaml_Runtime[83],_bhU_,_bhT_), + _bhW_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), + _bhX_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bhW_), + _bhY_=caml_call2(Runtime_ocaml_Runtime[83],_bhX_,_bhV_), + _bhZ_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), + _bh0_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bhZ_), + _bh1_=caml_call2(Runtime_ocaml_Runtime[83],_bh0_,_bhY_), + _bh2_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bh3_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bh2_), + _bh4_=caml_call2(Runtime_ocaml_Runtime[83],_bh3_,_bh1_); + return caml_call2(Runtime_ocaml_Runtime[29],_w4_,_bh4_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w5_,[0],_bhS_,_bhR_)} + function _aZ3_(param) + {function _bhi_(param) + {switch(zone[0]) + {case 0: + var _bhw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$170); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhw_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_37140) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44807); + var + _bhx_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$98), + _bhy_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhx_), + _bhz_=caml_call1(Runtime_ocaml_Runtime[69],_bhy_), + _bhA_=caml_call1(Runtime_ocaml_Runtime[31],cst_7664), + _bhB_=caml_call2(Runtime_ocaml_Runtime[104],_bhA_,_bhz_), + _bhC_=caml_call1(Runtime_ocaml_Runtime[31],cst_52472); + return caml_call2(Runtime_ocaml_Runtime[93],_bhC_,_bhB_); + case 1: + var _bhD_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$171); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhD_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_33145) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39893); + var + _bhE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$99), + _bhF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhE_), + _bhG_=caml_call1(Runtime_ocaml_Runtime[69],_bhF_), + _bhH_=caml_call1(Runtime_ocaml_Runtime[31],cst_6748), + _bhI_=caml_call2(Runtime_ocaml_Runtime[104],_bhH_,_bhG_), + _bhJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_46643); + return caml_call2(Runtime_ocaml_Runtime[93],_bhJ_,_bhI_); + default: + var _bhK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$172); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhK_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30943) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37103); + var + _bhL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$100), + _bhM_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhL_), + _bhN_=caml_call1(Runtime_ocaml_Runtime[69],_bhM_), + _bhO_=caml_call1(Runtime_ocaml_Runtime[31],cst_6161), + _bhP_=caml_call2(Runtime_ocaml_Runtime[104],_bhO_,_bhN_), + _bhQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_43264); + return caml_call2(Runtime_ocaml_Runtime[93],_bhQ_,_bhP_)}} + function _bhj_(param) + {switch(type_pret[0]) + {case 0:var _bhk_=0;break; + case 1:var _bhk_=1;break; + case 2:var _bhk_=0;break; + case 3:var _bhk_=0;break; + default:var _bhk_=0} + var + _bhl_=0 === anciennete_logement[0]?1:0, + _bhm_=caml_call2(Runtime_ocaml_Runtime[83],_bhl_,_bhk_), + _bhn_=caml_call3(Runtime_ocaml_Runtime[57],2019,9,30), + _bho_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bhn_), + _bhp_=caml_call2(Runtime_ocaml_Runtime[83],_bho_,_bhm_), + _bhq_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), + _bhr_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bhq_), + _bhs_=caml_call2(Runtime_ocaml_Runtime[83],_bhr_,_bhp_), + _bht_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bhu_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bht_), + _bhv_=caml_call2(Runtime_ocaml_Runtime[83],_bhu_,_bhs_); + return caml_call2(Runtime_ocaml_Runtime[29],_w6_,_bhv_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w7_,[0],_bhj_,_bhi_)} + function _aZ4_(param) + {function _bgL_(param) + {switch(zone[0]) + {case 0: + var _bgZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$173); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgZ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29674) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35810); + var + _bg0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$101), + _bg1_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bg0_), + _bg2_=caml_call1(Runtime_ocaml_Runtime[69],_bg1_), + _bg3_=caml_call1(Runtime_ocaml_Runtime[31],cst_6136), + _bg4_=caml_call2(Runtime_ocaml_Runtime[104],_bg3_,_bg2_), + _bg5_=caml_call1(Runtime_ocaml_Runtime[31],cst_41945); + return caml_call2(Runtime_ocaml_Runtime[93],_bg5_,_bg4_); + case 1: + var _bg6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$174); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bg6_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26452) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31858); + var + _bg7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$102), + _bg8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bg7_), + _bg9_=caml_call1(Runtime_ocaml_Runtime[69],_bg8_), + _bg__=caml_call1(Runtime_ocaml_Runtime[31],cst_5406), + _bg$_=caml_call2(Runtime_ocaml_Runtime[104],_bg__,_bg9_), + _bha_=caml_call1(Runtime_ocaml_Runtime[31],cst_37264); + return caml_call2(Runtime_ocaml_Runtime[93],_bha_,_bg$_); + default: + var _bhb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$175); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bhb_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24704) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29636); + var + _bhc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$103), + _bhd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bhc_), + _bhe_=caml_call1(Runtime_ocaml_Runtime[69],_bhd_), + _bhf_=caml_call1(Runtime_ocaml_Runtime[31],cst_4934), + _bhg_=caml_call2(Runtime_ocaml_Runtime[104],_bhf_,_bhe_), + _bhh_=caml_call1(Runtime_ocaml_Runtime[31],cst_34570); + return caml_call2(Runtime_ocaml_Runtime[93],_bhh_,_bhg_)}} + function _bgM_(param) + {switch(type_pret[0]) + {case 0:var _bgN_=0;break; + case 1:var _bgN_=1;break; + case 2:var _bgN_=0;break; + case 3:var _bgN_=0;break; + default:var _bgN_=0} + var + _bgO_=0 === anciennete_logement[0]?0:1, + _bgP_=caml_call2(Runtime_ocaml_Runtime[83],_bgO_,_bgN_), + _bgQ_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), + _bgR_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bgQ_), + _bgS_=caml_call2(Runtime_ocaml_Runtime[83],_bgR_,_bgP_), + _bgT_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), + _bgU_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bgT_), + _bgV_=caml_call2(Runtime_ocaml_Runtime[83],_bgU_,_bgS_), + _bgW_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bgX_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bgW_), + _bgY_=caml_call2(Runtime_ocaml_Runtime[83],_bgX_,_bgV_); + return caml_call2(Runtime_ocaml_Runtime[29],_w8_,_bgY_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w9_,[0],_bgM_,_bgL_)} + function _aZ5_(param) + {function _bgc_(param) + {switch(zone[0]) + {case 0: + var _bgq_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$176); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgq_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_36864) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44473); + var + _bgr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$104), + _bgs_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgr_), + _bgt_=caml_call1(Runtime_ocaml_Runtime[69],_bgs_), + _bgu_=caml_call1(Runtime_ocaml_Runtime[31],cst_7607), + _bgv_=caml_call2(Runtime_ocaml_Runtime[104],_bgu_,_bgt_), + _bgw_=caml_call1(Runtime_ocaml_Runtime[31],cst_52081); + return caml_call2(Runtime_ocaml_Runtime[93],_bgw_,_bgv_); + case 1: + var _bgx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$177); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgx_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_32898) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39596); + var + _bgy_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$105), + _bgz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgy_), + _bgA_=caml_call1(Runtime_ocaml_Runtime[69],_bgz_), + _bgB_=caml_call1(Runtime_ocaml_Runtime[31],cst_6698), + _bgC_=caml_call2(Runtime_ocaml_Runtime[104],_bgB_,_bgA_), + _bgD_=caml_call1(Runtime_ocaml_Runtime[31],cst_46296); + return caml_call2(Runtime_ocaml_Runtime[93],_bgD_,_bgC_); + default: + var _bgE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$178); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bgE_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30713) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36827); + var + _bgF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$106), + _bgG_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bgF_), + _bgH_=caml_call1(Runtime_ocaml_Runtime[69],_bgG_), + _bgI_=caml_call1(Runtime_ocaml_Runtime[31],cst_6115), + _bgJ_=caml_call2(Runtime_ocaml_Runtime[104],_bgI_,_bgH_), + _bgK_=caml_call1(Runtime_ocaml_Runtime[31],cst_42942); + return caml_call2(Runtime_ocaml_Runtime[93],_bgK_,_bgJ_)}} + function _bgd_(param) + {switch(type_pret[0]) + {case 0:var _bge_=0;break; + case 1:var _bge_=1;break; + case 2:var _bge_=0;break; + case 3:var _bge_=0;break; + default:var _bge_=0} + var + _bgf_=0 === anciennete_logement[0]?1:0, + _bgg_=caml_call2(Runtime_ocaml_Runtime[83],_bgf_,_bge_), + _bgh_=caml_call3(Runtime_ocaml_Runtime[57],2017,9,30), + _bgi_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bgh_), + _bgj_=caml_call2(Runtime_ocaml_Runtime[83],_bgi_,_bgg_), + _bgk_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), + _bgl_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bgk_), + _bgm_=caml_call2(Runtime_ocaml_Runtime[83],_bgl_,_bgj_), + _bgn_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bgo_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bgn_), + _bgp_=caml_call2(Runtime_ocaml_Runtime[83],_bgo_,_bgm_); + return caml_call2(Runtime_ocaml_Runtime[29],_w__,_bgp_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_w$_,[0],_bgd_,_bgc_)} + function _aZ6_(param) + {function _bfF_(param) + {switch(zone[0]) + {case 0: + var _bfT_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$179); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfT_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29650) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35781); + var + _bfU_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$107), + _bfV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfU_), + _bfW_=caml_call1(Runtime_ocaml_Runtime[69],_bfV_), + _bfX_=caml_call1(Runtime_ocaml_Runtime[31],cst_6131), + _bfY_=caml_call2(Runtime_ocaml_Runtime[104],_bfX_,_bfW_), + _bfZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_41911); + return caml_call2(Runtime_ocaml_Runtime[93],_bfZ_,_bfY_); + case 1: + var _bf0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$180); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bf0_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26431) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31833); + var + _bf1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$108), + _bf2_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bf1_), + _bf3_=caml_call1(Runtime_ocaml_Runtime[69],_bf2_), + _bf4_=caml_call1(Runtime_ocaml_Runtime[31],cst_5402), + _bf5_=caml_call2(Runtime_ocaml_Runtime[104],_bf4_,_bf3_), + _bf6_=caml_call1(Runtime_ocaml_Runtime[31],cst_37234); + return caml_call2(Runtime_ocaml_Runtime[93],_bf6_,_bf5_); + default: + var _bf7_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$181); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bf7_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24684) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29612); + var + _bf8_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$109), + _bf9_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bf8_), + _bf__=caml_call1(Runtime_ocaml_Runtime[69],_bf9_), + _bf$_=caml_call1(Runtime_ocaml_Runtime[31],cst_4930), + _bga_=caml_call2(Runtime_ocaml_Runtime[104],_bf$_,_bf__), + _bgb_=caml_call1(Runtime_ocaml_Runtime[31],cst_34542); + return caml_call2(Runtime_ocaml_Runtime[93],_bgb_,_bga_)}} + function _bfG_(param) + {switch(type_pret[0]) + {case 0:var _bfH_=0;break; + case 1:var _bfH_=1;break; + case 2:var _bfH_=0;break; + case 3:var _bfH_=0;break; + default:var _bfH_=0} + var + _bfI_=0 === anciennete_logement[0]?0:1, + _bfJ_=caml_call2(Runtime_ocaml_Runtime[83],_bfI_,_bfH_), + _bfK_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), + _bfL_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bfK_), + _bfM_=caml_call2(Runtime_ocaml_Runtime[83],_bfL_,_bfJ_), + _bfN_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), + _bfO_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bfN_), + _bfP_=caml_call2(Runtime_ocaml_Runtime[83],_bfO_,_bfM_), + _bfQ_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bfR_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bfQ_), + _bfS_=caml_call2(Runtime_ocaml_Runtime[83],_bfR_,_bfP_); + return caml_call2(Runtime_ocaml_Runtime[29],_xa_,_bfS_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xb_,[0],_bfG_,_bfF_)} + function _aZ7_(param) + {function _be8_(param) + {switch(zone[0]) + {case 0: + var _bfk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$182); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfk_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_36835) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44437); + var + _bfl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$110), + _bfm_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfl_), + _bfn_=caml_call1(Runtime_ocaml_Runtime[69],_bfm_), + _bfo_=caml_call1(Runtime_ocaml_Runtime[31],cst_7601), + _bfp_=caml_call2(Runtime_ocaml_Runtime[104],_bfo_,_bfn_), + _bfq_=caml_call1(Runtime_ocaml_Runtime[31],cst_52039); + return caml_call2(Runtime_ocaml_Runtime[93],_bfq_,_bfp_); + case 1: + var _bfr_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$183); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfr_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_32872) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39564); + var + _bfs_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$111), + _bft_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfs_), + _bfu_=caml_call1(Runtime_ocaml_Runtime[69],_bft_), + _bfv_=caml_call1(Runtime_ocaml_Runtime[31],cst_6693), + _bfw_=caml_call2(Runtime_ocaml_Runtime[104],_bfv_,_bfu_), + _bfx_=caml_call1(Runtime_ocaml_Runtime[31],cst_46259); + return caml_call2(Runtime_ocaml_Runtime[93],_bfx_,_bfw_); + default: + var _bfy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$184); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bfy_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30688) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36798); + var + _bfz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$112), + _bfA_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bfz_), + _bfB_=caml_call1(Runtime_ocaml_Runtime[69],_bfA_), + _bfC_=caml_call1(Runtime_ocaml_Runtime[31],cst_6110), + _bfD_=caml_call2(Runtime_ocaml_Runtime[104],_bfC_,_bfB_), + _bfE_=caml_call1(Runtime_ocaml_Runtime[31],cst_42908); + return caml_call2(Runtime_ocaml_Runtime[93],_bfE_,_bfD_)}} + function _be9_(param) + {switch(type_pret[0]) + {case 0:var _be__=0;break; + case 1:var _be__=1;break; + case 2:var _be__=0;break; + case 3:var _be__=0;break; + default:var _be__=0} + var + _be$_=0 === anciennete_logement[0]?1:0, + _bfa_=caml_call2(Runtime_ocaml_Runtime[83],_be$_,_be__), + _bfb_=caml_call3(Runtime_ocaml_Runtime[57],2015,9,30), + _bfc_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bfb_), + _bfd_=caml_call2(Runtime_ocaml_Runtime[83],_bfc_,_bfa_), + _bfe_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), + _bff_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bfe_), + _bfg_=caml_call2(Runtime_ocaml_Runtime[83],_bff_,_bfd_), + _bfh_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bfi_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bfh_), + _bfj_=caml_call2(Runtime_ocaml_Runtime[83],_bfi_,_bfg_); + return caml_call2(Runtime_ocaml_Runtime[29],_xc_,_bfj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xd_,[0],_be9_,_be8_)} + function _aZ8_(param) + {function _bez_(param) + {switch(zone[0]) + {case 0: + var _beN_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$185); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_beN_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29482) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35578); + var + _beO_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$113), + _beP_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_beO_), + _beQ_=caml_call1(Runtime_ocaml_Runtime[69],_beP_), + _beR_=caml_call1(Runtime_ocaml_Runtime[31],cst_6096), + _beS_=caml_call2(Runtime_ocaml_Runtime[104],_beR_,_beQ_), + _beT_=caml_call1(Runtime_ocaml_Runtime[31],cst_41673); + return caml_call2(Runtime_ocaml_Runtime[93],_beT_,_beS_); + case 1: + var _beU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$186); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_beU_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26281) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31653); + var + _beV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$114), + _beW_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_beV_), + _beX_=caml_call1(Runtime_ocaml_Runtime[69],_beW_), + _beY_=caml_call1(Runtime_ocaml_Runtime[31],cst_5371), + _beZ_=caml_call2(Runtime_ocaml_Runtime[104],_beY_,_beX_), + _be0_=caml_call1(Runtime_ocaml_Runtime[31],cst_37023); + return caml_call2(Runtime_ocaml_Runtime[93],_be0_,_beZ_); + default: + var _be1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$187); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_be1_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24544) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29444); + var + _be2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$115), + _be3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_be2_), + _be4_=caml_call1(Runtime_ocaml_Runtime[69],_be3_), + _be5_=caml_call1(Runtime_ocaml_Runtime[31],cst_4902), + _be6_=caml_call2(Runtime_ocaml_Runtime[104],_be5_,_be4_), + _be7_=caml_call1(Runtime_ocaml_Runtime[31],cst_34346); + return caml_call2(Runtime_ocaml_Runtime[93],_be7_,_be6_)}} + function _beA_(param) + {switch(type_pret[0]) + {case 0:var _beB_=0;break; + case 1:var _beB_=1;break; + case 2:var _beB_=0;break; + case 3:var _beB_=0;break; + default:var _beB_=0} + var + _beC_=0 === anciennete_logement[0]?0:1, + _beD_=caml_call2(Runtime_ocaml_Runtime[83],_beC_,_beB_), + _beE_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), + _beF_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_beE_), + _beG_=caml_call2(Runtime_ocaml_Runtime[83],_beF_,_beD_), + _beH_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _beI_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_beH_), + _beJ_=caml_call2(Runtime_ocaml_Runtime[83],_beI_,_beG_), + _beK_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _beL_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_beK_), + _beM_=caml_call2(Runtime_ocaml_Runtime[83],_beL_,_beJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_xe_,_beM_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xf_,[0],_beA_,_bez_)} + function _aZ9_(param) + {function _bd2_(param) + {switch(zone[0]) + {case 0: + var _bee_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$188); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bee_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_36626) + :caml_call1(Runtime_ocaml_Runtime[31],cst_44185); + var + _bef_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$116), + _beg_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bef_), + _beh_=caml_call1(Runtime_ocaml_Runtime[69],_beg_), + _bei_=caml_call1(Runtime_ocaml_Runtime[31],cst_7558), + _bej_=caml_call2(Runtime_ocaml_Runtime[104],_bei_,_beh_), + _bek_=caml_call1(Runtime_ocaml_Runtime[31],cst_51744); + return caml_call2(Runtime_ocaml_Runtime[93],_bek_,_bej_); + case 1: + var _bel_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$189); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bel_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_32686) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39340); + var + _bem_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$117), + _ben_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bem_), + _beo_=caml_call1(Runtime_ocaml_Runtime[69],_ben_), + _bep_=caml_call1(Runtime_ocaml_Runtime[31],cst_6655), + _beq_=caml_call2(Runtime_ocaml_Runtime[104],_bep_,_beo_), + _ber_=caml_call1(Runtime_ocaml_Runtime[31],cst_45997); + return caml_call2(Runtime_ocaml_Runtime[93],_ber_,_beq_); + default: + var _bes_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$190); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bes_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30514) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36589); + var + _bet_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$118), + _beu_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bet_), + _bev_=caml_call1(Runtime_ocaml_Runtime[69],_beu_), + _bew_=caml_call1(Runtime_ocaml_Runtime[31],cst_6075), + _bex_=caml_call2(Runtime_ocaml_Runtime[104],_bew_,_bev_), + _bey_=caml_call1(Runtime_ocaml_Runtime[31],cst_42665); + return caml_call2(Runtime_ocaml_Runtime[93],_bey_,_bex_)}} + function _bd3_(param) + {switch(type_pret[0]) + {case 0:var _bd4_=0;break; + case 1:var _bd4_=1;break; + case 2:var _bd4_=0;break; + case 3:var _bd4_=0;break; + default:var _bd4_=0} + var + _bd5_=0 === anciennete_logement[0]?1:0, + _bd6_=caml_call2(Runtime_ocaml_Runtime[83],_bd5_,_bd4_), + _bd7_=caml_call3(Runtime_ocaml_Runtime[57],2014,9,30), + _bd8_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bd7_), + _bd9_=caml_call2(Runtime_ocaml_Runtime[83],_bd8_,_bd6_), + _bd__=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _bd$_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bd__), + _bea_=caml_call2(Runtime_ocaml_Runtime[83],_bd$_,_bd9_), + _beb_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bec_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_beb_), + _bed_=caml_call2(Runtime_ocaml_Runtime[83],_bec_,_bea_); + return caml_call2(Runtime_ocaml_Runtime[29],_xg_,_bed_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xh_,[0],_bd3_,_bd2_)} + function _aZ__(param) + {function _bdt_(param) + {switch(zone[0]) + {case 0: + var _bdH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$191); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdH_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28861) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34829$0); + var + _bdI_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$119), + _bdJ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdI_), + _bdK_=caml_call1(Runtime_ocaml_Runtime[69],_bdJ_), + _bdL_=caml_call1(Runtime_ocaml_Runtime[31],cst_5968), + _bdM_=caml_call2(Runtime_ocaml_Runtime[104],_bdL_,_bdK_), + _bdN_=caml_call1(Runtime_ocaml_Runtime[31],cst_40796); + return caml_call2(Runtime_ocaml_Runtime[93],_bdN_,_bdM_); + case 1: + var _bdO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$192); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdO_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25728) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30987); + var + _bdP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$120), + _bdQ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdP_), + _bdR_=caml_call1(Runtime_ocaml_Runtime[69],_bdQ_), + _bdS_=caml_call1(Runtime_ocaml_Runtime[31],cst_5258), + _bdT_=caml_call2(Runtime_ocaml_Runtime[104],_bdS_,_bdR_), + _bdU_=caml_call1(Runtime_ocaml_Runtime[31],cst_36244); + return caml_call2(Runtime_ocaml_Runtime[93],_bdU_,_bdT_); + default: + var _bdV_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$193); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdV_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24027) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28824); + var + _bdW_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$121), + _bdX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdW_), + _bdY_=caml_call1(Runtime_ocaml_Runtime[69],_bdX_), + _bdZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_4799), + _bd0_=caml_call2(Runtime_ocaml_Runtime[104],_bdZ_,_bdY_), + _bd1_=caml_call1(Runtime_ocaml_Runtime[31],cst_33623); + return caml_call2(Runtime_ocaml_Runtime[93],_bd1_,_bd0_)}} + function _bdu_(param) + {switch(type_pret[0]) + {case 0:var _bdv_=0;break; + case 1:var _bdv_=1;break; + case 2:var _bdv_=0;break; + case 3:var _bdv_=0;break; + default:var _bdv_=0} + var + _bdw_=0 === anciennete_logement[0]?0:1, + _bdx_=caml_call2(Runtime_ocaml_Runtime[83],_bdw_,_bdv_), + _bdy_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _bdz_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bdy_), + _bdA_=caml_call2(Runtime_ocaml_Runtime[83],_bdz_,_bdx_), + _bdB_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _bdC_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bdB_), + _bdD_=caml_call2(Runtime_ocaml_Runtime[83],_bdC_,_bdA_), + _bdE_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bdF_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bdE_), + _bdG_=caml_call2(Runtime_ocaml_Runtime[83],_bdF_,_bdD_); + return caml_call2(Runtime_ocaml_Runtime[29],_xi_,_bdG_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xj_,[0],_bdu_,_bdt_)} + function _aZ$_(param) + {function _bcW_(param) + {switch(zone[0]) + {case 0: + var _bc__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$194); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bc__)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_35855) + :caml_call1(Runtime_ocaml_Runtime[31],cst_43255); + var + _bc$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$122), + _bda_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bc$_), + _bdb_=caml_call1(Runtime_ocaml_Runtime[69],_bda_), + _bdc_=caml_call1(Runtime_ocaml_Runtime[31],cst_7399), + _bdd_=caml_call2(Runtime_ocaml_Runtime[104],_bdc_,_bdb_), + _bde_=caml_call1(Runtime_ocaml_Runtime[31],cst_50655); + return caml_call2(Runtime_ocaml_Runtime[93],_bde_,_bdd_); + case 1: + var _bdf_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$195); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdf_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31998) + :caml_call1(Runtime_ocaml_Runtime[31],cst_38512); + var + _bdg_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$123), + _bdh_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdg_), + _bdi_=caml_call1(Runtime_ocaml_Runtime[69],_bdh_), + _bdj_=caml_call1(Runtime_ocaml_Runtime[31],cst_6515), + _bdk_=caml_call2(Runtime_ocaml_Runtime[104],_bdj_,_bdi_), + _bdl_=caml_call1(Runtime_ocaml_Runtime[31],cst_45029); + return caml_call2(Runtime_ocaml_Runtime[93],_bdl_,_bdk_); + default: + var _bdm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$196); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bdm_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29872) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35819); + var + _bdn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$124), + _bdo_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bdn_), + _bdp_=caml_call1(Runtime_ocaml_Runtime[69],_bdo_), + _bdq_=caml_call1(Runtime_ocaml_Runtime[31],cst_5947), + _bdr_=caml_call2(Runtime_ocaml_Runtime[104],_bdq_,_bdp_), + _bds_=caml_call1(Runtime_ocaml_Runtime[31],cst_41767); + return caml_call2(Runtime_ocaml_Runtime[93],_bds_,_bdr_)}} + function _bcX_(param) + {switch(type_pret[0]) + {case 0:var _bcY_=0;break; + case 1:var _bcY_=1;break; + case 2:var _bcY_=0;break; + case 3:var _bcY_=0;break; + default:var _bcY_=0} + var + _bcZ_=0 === anciennete_logement[0]?1:0, + _bc0_=caml_call2(Runtime_ocaml_Runtime[83],_bcZ_,_bcY_), + _bc1_=caml_call3(Runtime_ocaml_Runtime[57],2012,12,31), + _bc2_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bc1_), + _bc3_=caml_call2(Runtime_ocaml_Runtime[83],_bc2_,_bc0_), + _bc4_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _bc5_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bc4_), + _bc6_=caml_call2(Runtime_ocaml_Runtime[83],_bc5_,_bc3_), + _bc7_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bc8_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bc7_), + _bc9_=caml_call2(Runtime_ocaml_Runtime[83],_bc8_,_bc6_); + return caml_call2(Runtime_ocaml_Runtime[29],_xk_,_bc9_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xl_,[0],_bcX_,_bcW_)} + function _a0a_(param) + {function _bcn_(param) + {switch(zone[0]) + {case 0: + var _bcB_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$197); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcB_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28575) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34484); + var + _bcC_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$125), + _bcD_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcC_), + _bcE_=caml_call1(Runtime_ocaml_Runtime[69],_bcD_), + _bcF_=caml_call1(Runtime_ocaml_Runtime[31],cst_5909), + _bcG_=caml_call2(Runtime_ocaml_Runtime[104],_bcF_,_bcE_), + _bcH_=caml_call1(Runtime_ocaml_Runtime[31],cst_40392); + return caml_call2(Runtime_ocaml_Runtime[93],_bcH_,_bcG_); + case 1: + var _bcI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$198); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcI_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25473) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30680); + var + _bcJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$126), + _bcK_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcJ_), + _bcL_=caml_call1(Runtime_ocaml_Runtime[69],_bcK_), + _bcM_=caml_call1(Runtime_ocaml_Runtime[31],cst_5206), + _bcN_=caml_call2(Runtime_ocaml_Runtime[104],_bcM_,_bcL_), + _bcO_=caml_call1(Runtime_ocaml_Runtime[31],cst_35885); + return caml_call2(Runtime_ocaml_Runtime[93],_bcO_,_bcN_); + default: + var _bcP_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$199); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcP_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23789) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28539); + var + _bcQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$127), + _bcR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bcQ_), + _bcS_=caml_call1(Runtime_ocaml_Runtime[69],_bcR_), + _bcT_=caml_call1(Runtime_ocaml_Runtime[31],cst_4751), + _bcU_=caml_call2(Runtime_ocaml_Runtime[104],_bcT_,_bcS_), + _bcV_=caml_call1(Runtime_ocaml_Runtime[31],cst_33290); + return caml_call2(Runtime_ocaml_Runtime[93],_bcV_,_bcU_)}} + function _bco_(param) + {switch(type_pret[0]) + {case 0:var _bcp_=0;break; + case 1:var _bcp_=1;break; + case 2:var _bcp_=0;break; + case 3:var _bcp_=0;break; + default:var _bcp_=0} + var + _bcq_=0 === anciennete_logement[0]?0:1, + _bcr_=caml_call2(Runtime_ocaml_Runtime[83],_bcq_,_bcp_), + _bcs_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _bct_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bcs_), + _bcu_=caml_call2(Runtime_ocaml_Runtime[83],_bct_,_bcr_), + _bcv_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), + _bcw_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bcv_), + _bcx_=caml_call2(Runtime_ocaml_Runtime[83],_bcw_,_bcu_), + _bcy_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bcz_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bcy_), + _bcA_=caml_call2(Runtime_ocaml_Runtime[83],_bcz_,_bcx_); + return caml_call2(Runtime_ocaml_Runtime[29],_xm_,_bcA_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xn_,[0],_bco_,_bcn_)} + function _a0b_(param) + {function _bbQ_(param) + {switch(zone[0]) + {case 0: + var _bb4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$200); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bb4_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_35500) + :caml_call1(Runtime_ocaml_Runtime[31],cst_42827); + var + _bb5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$128), + _bb6_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bb5_), + _bb7_=caml_call1(Runtime_ocaml_Runtime[69],_bb6_), + _bb8_=caml_call1(Runtime_ocaml_Runtime[31],cst_7326), + _bb9_=caml_call2(Runtime_ocaml_Runtime[104],_bb8_,_bb7_), + _bb__=caml_call1(Runtime_ocaml_Runtime[31],cst_50153); + return caml_call2(Runtime_ocaml_Runtime[93],_bb__,_bb9_); + case 1: + var _bb$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$201); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bb$_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31681) + :caml_call1(Runtime_ocaml_Runtime[31],cst_38131); + var + _bca_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$129), + _bcb_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bca_), + _bcc_=caml_call1(Runtime_ocaml_Runtime[69],_bcb_), + _bcd_=caml_call1(Runtime_ocaml_Runtime[31],cst_6450), + _bce_=caml_call2(Runtime_ocaml_Runtime[104],_bcd_,_bcc_), + _bcf_=caml_call1(Runtime_ocaml_Runtime[31],cst_44583); + return caml_call2(Runtime_ocaml_Runtime[93],_bcf_,_bce_); + default: + var _bcg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$202); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bcg_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29576) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35464); + var + _bch_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$130), + _bci_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bch_), + _bcj_=caml_call1(Runtime_ocaml_Runtime[69],_bci_), + _bck_=caml_call1(Runtime_ocaml_Runtime[31],cst_5888), + _bcl_=caml_call2(Runtime_ocaml_Runtime[104],_bck_,_bcj_), + _bcm_=caml_call1(Runtime_ocaml_Runtime[31],cst_41353); + return caml_call2(Runtime_ocaml_Runtime[93],_bcm_,_bcl_)}} + function _bbR_(param) + {switch(type_pret[0]) + {case 0:var _bbS_=0;break; + case 1:var _bbS_=1;break; + case 2:var _bbS_=0;break; + case 3:var _bbS_=0;break; + default:var _bbS_=0} + var + _bbT_=0 === anciennete_logement[0]?1:0, + _bbU_=caml_call2(Runtime_ocaml_Runtime[83],_bbT_,_bbS_), + _bbV_=caml_call3(Runtime_ocaml_Runtime[57],2011,12,31), + _bbW_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bbV_), + _bbX_=caml_call2(Runtime_ocaml_Runtime[83],_bbW_,_bbU_), + _bbY_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), + _bbZ_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bbY_), + _bb0_=caml_call2(Runtime_ocaml_Runtime[83],_bbZ_,_bbX_), + _bb1_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bb2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bb1_), + _bb3_=caml_call2(Runtime_ocaml_Runtime[83],_bb2_,_bb0_); + return caml_call2(Runtime_ocaml_Runtime[29],_xo_,_bb3_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xp_,[0],_bbR_,_bbQ_)} + function _a0c_(param) + {function _bbh_(param) + {switch(zone[0]) + {case 0: + var _bbv_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$203); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbv_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28264) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34109); + var + _bbw_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$131), + _bbx_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbw_), + _bby_=caml_call1(Runtime_ocaml_Runtime[69],_bbx_), + _bbz_=caml_call1(Runtime_ocaml_Runtime[31],cst_5845), + _bbA_=caml_call2(Runtime_ocaml_Runtime[104],_bbz_,_bby_), + _bbB_=caml_call1(Runtime_ocaml_Runtime[31],cst_39953); + return caml_call2(Runtime_ocaml_Runtime[93],_bbB_,_bbA_); + case 1: + var _bbC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$204); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbC_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25196) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30346); + var + _bbD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$132), + _bbE_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbD_), + _bbF_=caml_call1(Runtime_ocaml_Runtime[69],_bbE_), + _bbG_=caml_call1(Runtime_ocaml_Runtime[31],cst_5149), + _bbH_=caml_call2(Runtime_ocaml_Runtime[104],_bbG_,_bbF_), + _bbI_=caml_call1(Runtime_ocaml_Runtime[31],cst_35495); + return caml_call2(Runtime_ocaml_Runtime[93],_bbI_,_bbH_); + default: + var _bbJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$205); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bbJ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23530) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28228); + var + _bbK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$133), + _bbL_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbK_), + _bbM_=caml_call1(Runtime_ocaml_Runtime[69],_bbL_), + _bbN_=caml_call1(Runtime_ocaml_Runtime[31],cst_4699), + _bbO_=caml_call2(Runtime_ocaml_Runtime[104],_bbN_,_bbM_), + _bbP_=caml_call1(Runtime_ocaml_Runtime[31],cst_32928); + return caml_call2(Runtime_ocaml_Runtime[93],_bbP_,_bbO_)}} + function _bbi_(param) + {switch(type_pret[0]) + {case 0:var _bbj_=0;break; + case 1:var _bbj_=1;break; + case 2:var _bbj_=0;break; + case 3:var _bbj_=0;break; + default:var _bbj_=0} + var + _bbk_=0 === anciennete_logement[0]?0:1, + _bbl_=caml_call2(Runtime_ocaml_Runtime[83],_bbk_,_bbj_), + _bbm_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), + _bbn_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bbm_), + _bbo_=caml_call2(Runtime_ocaml_Runtime[83],_bbn_,_bbl_), + _bbp_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), + _bbq_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_bbp_), + _bbr_=caml_call2(Runtime_ocaml_Runtime[83],_bbq_,_bbo_), + _bbs_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _bbt_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bbs_), + _bbu_=caml_call2(Runtime_ocaml_Runtime[83],_bbt_,_bbr_); + return caml_call2(Runtime_ocaml_Runtime[29],_xq_,_bbu_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xr_,[0],_bbi_,_bbh_)} + function _a0d_(param) + {function _baK_(param) + {switch(zone[0]) + {case 0: + var _baY_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$206); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baY_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_35114) + :caml_call1(Runtime_ocaml_Runtime[31],cst_42361); + var + _baZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$134), + _ba0_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baZ_), + _ba1_=caml_call1(Runtime_ocaml_Runtime[69],_ba0_), + _ba2_=caml_call1(Runtime_ocaml_Runtime[31],cst_7246), + _ba3_=caml_call2(Runtime_ocaml_Runtime[104],_ba2_,_ba1_), + _ba4_=caml_call1(Runtime_ocaml_Runtime[31],cst_49607); + return caml_call2(Runtime_ocaml_Runtime[93],_ba4_,_ba3_); + case 1: + var _ba5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$207); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ba5_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31336) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37716); + var + _ba6_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$135), + _ba7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ba6_), + _ba8_=caml_call1(Runtime_ocaml_Runtime[69],_ba7_), + _ba9_=caml_call1(Runtime_ocaml_Runtime[31],cst_6380), + _ba__=caml_call2(Runtime_ocaml_Runtime[104],_ba9_,_ba8_), + _ba$_=caml_call1(Runtime_ocaml_Runtime[31],cst_44098); + return caml_call2(Runtime_ocaml_Runtime[93],_ba$_,_ba__); + default: + var _bba_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$208); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bba_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29254) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35078); + var + _bbb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$136), + _bbc_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bbb_), + _bbd_=caml_call1(Runtime_ocaml_Runtime[69],_bbc_), + _bbe_=caml_call1(Runtime_ocaml_Runtime[31],cst_5824), + _bbf_=caml_call2(Runtime_ocaml_Runtime[104],_bbe_,_bbd_), + _bbg_=caml_call1(Runtime_ocaml_Runtime[31],cst_40903); + return caml_call2(Runtime_ocaml_Runtime[93],_bbg_,_bbf_)}} + function _baL_(param) + {switch(type_pret[0]) + {case 0:var _baM_=0;break; + case 1:var _baM_=1;break; + case 2:var _baM_=0;break; + case 3:var _baM_=0;break; + default:var _baM_=0} + var + _baN_=0 === anciennete_logement[0]?1:0, + _baO_=caml_call2(Runtime_ocaml_Runtime[83],_baN_,_baM_), + _baP_=caml_call3(Runtime_ocaml_Runtime[57],2010,12,31), + _baQ_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_baP_), + _baR_=caml_call2(Runtime_ocaml_Runtime[83],_baQ_,_baO_), + _baS_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), + _baT_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_baS_), + _baU_=caml_call2(Runtime_ocaml_Runtime[83],_baT_,_baR_), + _baV_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _baW_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_baV_), + _baX_=caml_call2(Runtime_ocaml_Runtime[83],_baW_,_baU_); + return caml_call2(Runtime_ocaml_Runtime[29],_xs_,_baX_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xt_,[0],_baL_,_baK_)} + function _a0e_(param) + {function _bab_(param) + {switch(zone[0]) + {case 0: + var _bap_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$209); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_bap_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28174) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34000); + var + _baq_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$137), + _bar_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baq_), + _bas_=caml_call1(Runtime_ocaml_Runtime[69],_bar_), + _bat_=caml_call1(Runtime_ocaml_Runtime[31],cst_5826), + _bau_=caml_call2(Runtime_ocaml_Runtime[104],_bat_,_bas_), + _bav_=caml_call1(Runtime_ocaml_Runtime[31],cst_39826); + return caml_call2(Runtime_ocaml_Runtime[93],_bav_,_bau_); + case 1: + var _baw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$210); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baw_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25116) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30249); + var + _bax_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$138), + _bay_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_bax_), + _baz_=caml_call1(Runtime_ocaml_Runtime[69],_bay_), + _baA_=caml_call1(Runtime_ocaml_Runtime[31],cst_5133), + _baB_=caml_call2(Runtime_ocaml_Runtime[104],_baA_,_baz_), + _baC_=caml_call1(Runtime_ocaml_Runtime[31],cst_35382); + return caml_call2(Runtime_ocaml_Runtime[93],_baC_,_baB_); + default: + var _baD_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$211); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_baD_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23455) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28138); + var + _baE_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$139), + _baF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_baE_), + _baG_=caml_call1(Runtime_ocaml_Runtime[69],_baF_), + _baH_=caml_call1(Runtime_ocaml_Runtime[31],cst_4684), + _baI_=caml_call2(Runtime_ocaml_Runtime[104],_baH_,_baG_), + _baJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_32823); + return caml_call2(Runtime_ocaml_Runtime[93],_baJ_,_baI_)}} + function _bac_(param) + {switch(type_pret[0]) + {case 0:var _bad_=0;break; + case 1:var _bad_=1;break; + case 2:var _bad_=0;break; + case 3:var _bad_=0;break; + default:var _bad_=0} + var + _bae_=0 === anciennete_logement[0]?0:1, + _baf_=caml_call2(Runtime_ocaml_Runtime[83],_bae_,_bad_), + _bag_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), + _bah_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_bag_), + _bai_=caml_call2(Runtime_ocaml_Runtime[83],_bah_,_baf_), + _baj_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), + _bak_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_baj_), + _bal_=caml_call2(Runtime_ocaml_Runtime[83],_bak_,_bai_), + _bam_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _ban_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_bam_), + _bao_=caml_call2(Runtime_ocaml_Runtime[83],_ban_,_bal_); + return caml_call2(Runtime_ocaml_Runtime[29],_xu_,_bao_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xv_,[0],_bac_,_bab_)} + function _a0f_(param) + {function _a$E_(param) + {switch(zone[0]) + {case 0: + var _a$S_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$212); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$S_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_35002) + :caml_call1(Runtime_ocaml_Runtime[31],cst_42226); + var + _a$T_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$140), + _a$U_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$T_), + _a$V_=caml_call1(Runtime_ocaml_Runtime[69],_a$U_), + _a$W_=caml_call1(Runtime_ocaml_Runtime[31],cst_7223), + _a$X_=caml_call2(Runtime_ocaml_Runtime[104],_a$W_,_a$V_), + _a$Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_49449); + return caml_call2(Runtime_ocaml_Runtime[93],_a$Y_,_a$X_); + case 1: + var _a$Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$213); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$Z_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31236) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37596); + var + _a$0_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$141), + _a$1_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$0_), + _a$2_=caml_call1(Runtime_ocaml_Runtime[69],_a$1_), + _a$3_=caml_call1(Runtime_ocaml_Runtime[31],cst_6360), + _a$4_=caml_call2(Runtime_ocaml_Runtime[104],_a$3_,_a$2_), + _a$5_=caml_call1(Runtime_ocaml_Runtime[31],cst_43957); + return caml_call2(Runtime_ocaml_Runtime[93],_a$5_,_a$4_); + default: + var _a$6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$214); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$6_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29161) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34966); + var + _a$7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$142), + _a$8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$7_), + _a$9_=caml_call1(Runtime_ocaml_Runtime[69],_a$8_), + _a$__=caml_call1(Runtime_ocaml_Runtime[31],cst_5805), + _a$$_=caml_call2(Runtime_ocaml_Runtime[104],_a$__,_a$9_), + _baa_=caml_call1(Runtime_ocaml_Runtime[31],cst_40773); + return caml_call2(Runtime_ocaml_Runtime[93],_baa_,_a$$_)}} + function _a$F_(param) + {switch(type_pret[0]) + {case 0:var _a$G_=0;break; + case 1:var _a$G_=1;break; + case 2:var _a$G_=0;break; + case 3:var _a$G_=0;break; + default:var _a$G_=0} + var + _a$H_=0 === anciennete_logement[0]?1:0, + _a$I_=caml_call2(Runtime_ocaml_Runtime[83],_a$H_,_a$G_), + _a$J_=caml_call3(Runtime_ocaml_Runtime[57],2009,12,31), + _a$K_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a$J_), + _a$L_=caml_call2(Runtime_ocaml_Runtime[83],_a$K_,_a$I_), + _a$M_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), + _a$N_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a$M_), + _a$O_=caml_call2(Runtime_ocaml_Runtime[83],_a$N_,_a$L_), + _a$P_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a$Q_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a$P_), + _a$R_=caml_call2(Runtime_ocaml_Runtime[83],_a$Q_,_a$O_); + return caml_call2(Runtime_ocaml_Runtime[29],_xw_,_a$R_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xx_,[0],_a$F_,_a$E_)} + function _a0g_(param) + {function _a_7_(param) + {switch(zone[0]) + {case 0: + var _a$j_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$215); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$j_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27367) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33026); + var + _a$k_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$143), + _a$l_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$k_), + _a$m_=caml_call1(Runtime_ocaml_Runtime[69],_a$l_), + _a$n_=caml_call1(Runtime_ocaml_Runtime[31],cst_5659), + _a$o_=caml_call2(Runtime_ocaml_Runtime[104],_a$n_,_a$m_), + _a$p_=caml_call1(Runtime_ocaml_Runtime[31],cst_38685); + return caml_call2(Runtime_ocaml_Runtime[93],_a$p_,_a$o_); + case 1: + var _a$q_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$216); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$q_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24396) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29382); + var + _a$r_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$144), + _a$s_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$r_), + _a$t_=caml_call1(Runtime_ocaml_Runtime[69],_a$s_), + _a$u_=caml_call1(Runtime_ocaml_Runtime[31],cst_4986$0), + _a$v_=caml_call2(Runtime_ocaml_Runtime[104],_a$u_,_a$t_), + _a$w_=caml_call1(Runtime_ocaml_Runtime[31],cst_34368); + return caml_call2(Runtime_ocaml_Runtime[93],_a$w_,_a$v_); + default: + var _a$x_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$217); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a$x_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22783) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27332); + var + _a$y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$145), + _a$z_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a$y_), + _a$A_=caml_call1(Runtime_ocaml_Runtime[69],_a$z_), + _a$B_=caml_call1(Runtime_ocaml_Runtime[31],cst_4550), + _a$C_=caml_call2(Runtime_ocaml_Runtime[104],_a$B_,_a$A_), + _a$D_=caml_call1(Runtime_ocaml_Runtime[31],cst_31882); + return caml_call2(Runtime_ocaml_Runtime[93],_a$D_,_a$C_)}} + function _a_8_(param) + {switch(type_pret[0]) + {case 0:var _a_9_=0;break; + case 1:var _a_9_=1;break; + case 2:var _a_9_=0;break; + case 3:var _a_9_=0;break; + default:var _a_9_=0} + var + _a___=0 === anciennete_logement[0]?0:1, + _a_$_=caml_call2(Runtime_ocaml_Runtime[83],_a___,_a_9_), + _a$a_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), + _a$b_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a$a_), + _a$c_=caml_call2(Runtime_ocaml_Runtime[83],_a$b_,_a_$_), + _a$d_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), + _a$e_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a$d_), + _a$f_=caml_call2(Runtime_ocaml_Runtime[83],_a$e_,_a$c_), + _a$g_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a$h_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a$g_), + _a$i_=caml_call2(Runtime_ocaml_Runtime[83],_a$h_,_a$f_); + return caml_call2(Runtime_ocaml_Runtime[29],_xy_,_a$i_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xz_,[0],_a_8_,_a_7_)} + function _a0h_(param) + {function _a_y_(param) + {switch(zone[0]) + {case 0: + var _a_M_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$218); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_M_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_33999) + :caml_call1(Runtime_ocaml_Runtime[31],cst_41016); + var + _a_N_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$146), + _a_O_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_N_), + _a_P_=caml_call1(Runtime_ocaml_Runtime[69],_a_O_), + _a_Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_7016), + _a_R_=caml_call2(Runtime_ocaml_Runtime[104],_a_Q_,_a_P_), + _a_S_=caml_call1(Runtime_ocaml_Runtime[31],cst_48032); + return caml_call2(Runtime_ocaml_Runtime[93],_a_S_,_a_R_); + case 1: + var _a_T_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$219); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_T_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30341) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36519); + var + _a_U_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$147), + _a_V_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_U_), + _a_W_=caml_call1(Runtime_ocaml_Runtime[69],_a_V_), + _a_X_=caml_call1(Runtime_ocaml_Runtime[31],cst_6178), + _a_Y_=caml_call2(Runtime_ocaml_Runtime[104],_a_X_,_a_W_), + _a_Z_=caml_call1(Runtime_ocaml_Runtime[31],cst_42697); + return caml_call2(Runtime_ocaml_Runtime[93],_a_Z_,_a_Y_); + default: + var _a_0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$220); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_0_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28325) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33964); + var + _a_1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$148), + _a_2_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_1_), + _a_3_=caml_call1(Runtime_ocaml_Runtime[69],_a_2_), + _a_4_=caml_call1(Runtime_ocaml_Runtime[31],cst_5639), + _a_5_=caml_call2(Runtime_ocaml_Runtime[104],_a_4_,_a_3_), + _a_6_=caml_call1(Runtime_ocaml_Runtime[31],cst_39605); + return caml_call2(Runtime_ocaml_Runtime[93],_a_6_,_a_5_)}} + function _a_z_(param) + {switch(type_pret[0]) + {case 0:var _a_A_=0;break; + case 1:var _a_A_=1;break; + case 2:var _a_A_=0;break; + case 3:var _a_A_=0;break; + default:var _a_A_=0} + var + _a_B_=0 === anciennete_logement[0]?1:0, + _a_C_=caml_call2(Runtime_ocaml_Runtime[83],_a_B_,_a_A_), + _a_D_=caml_call3(Runtime_ocaml_Runtime[57],2008,12,31), + _a_E_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a_D_), + _a_F_=caml_call2(Runtime_ocaml_Runtime[83],_a_E_,_a_C_), + _a_G_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), + _a_H_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a_G_), + _a_I_=caml_call2(Runtime_ocaml_Runtime[83],_a_H_,_a_F_), + _a_J_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a_K_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a_J_), + _a_L_=caml_call2(Runtime_ocaml_Runtime[83],_a_K_,_a_I_); + return caml_call2(Runtime_ocaml_Runtime[29],_xA_,_a_L_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xB_,[0],_a_z_,_a_y_)} + function _a0i_(param) + {function _a91_(param) + {switch(zone[0]) + {case 0: + var _a_d_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$221); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_d_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26632) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32139); + var + _a_e_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$149), + _a_f_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_e_), + _a_g_=caml_call1(Runtime_ocaml_Runtime[69],_a_f_), + _a_h_=caml_call1(Runtime_ocaml_Runtime[31],cst_5507), + _a_i_=caml_call2(Runtime_ocaml_Runtime[104],_a_h_,_a_g_), + _a_j_=caml_call1(Runtime_ocaml_Runtime[31],cst_37646); + return caml_call2(Runtime_ocaml_Runtime[93],_a_j_,_a_i_); + case 1: + var _a_k_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$222); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_k_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23741) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28593); + var + _a_l_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$150), + _a_m_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_l_), + _a_n_=caml_call1(Runtime_ocaml_Runtime[69],_a_m_), + _a_o_=caml_call1(Runtime_ocaml_Runtime[31],cst_4852), + _a_p_=caml_call2(Runtime_ocaml_Runtime[104],_a_o_,_a_n_), + _a_q_=caml_call1(Runtime_ocaml_Runtime[31],cst_33445); + return caml_call2(Runtime_ocaml_Runtime[93],_a_q_,_a_p_); + default: + var _a_r_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$223); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a_r_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22171) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36598); + var + _a_s_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$151), + _a_t_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a_s_), + _a_u_=caml_call1(Runtime_ocaml_Runtime[69],_a_t_), + _a_v_=caml_call1(Runtime_ocaml_Runtime[31],cst_4428), + _a_w_=caml_call2(Runtime_ocaml_Runtime[104],_a_v_,_a_u_), + _a_x_=caml_call1(Runtime_ocaml_Runtime[31],cst_31026); + return caml_call2(Runtime_ocaml_Runtime[93],_a_x_,_a_w_)}} + function _a92_(param) + {switch(type_pret[0]) + {case 0:var _a93_=0;break; + case 1:var _a93_=1;break; + case 2:var _a93_=0;break; + case 3:var _a93_=0;break; + default:var _a93_=0} + var + _a94_=0 === anciennete_logement[0]?0:1, + _a95_=caml_call2(Runtime_ocaml_Runtime[83],_a94_,_a93_), + _a96_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), + _a97_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a96_), + _a98_=caml_call2(Runtime_ocaml_Runtime[83],_a97_,_a95_), + _a99_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), + _a9__= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a99_), + _a9$_=caml_call2(Runtime_ocaml_Runtime[83],_a9__,_a98_), + _a_a_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a_b_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a_a_), + _a_c_=caml_call2(Runtime_ocaml_Runtime[83],_a_b_,_a9$_); + return caml_call2(Runtime_ocaml_Runtime[29],_xC_,_a_c_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xD_,[0],_a92_,_a91_)} + function _a0j_(param) + {function _a9s_(param) + {switch(zone[0]) + {case 0: + var _a9G_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$224); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9G_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_33086) + :caml_call1(Runtime_ocaml_Runtime[31],cst_39914); + var + _a9H_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$152), + _a9I_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9H_), + _a9J_=caml_call1(Runtime_ocaml_Runtime[69],_a9I_), + _a9K_=caml_call1(Runtime_ocaml_Runtime[31],cst_6828), + _a9L_=caml_call2(Runtime_ocaml_Runtime[104],_a9K_,_a9J_), + _a9M_=caml_call1(Runtime_ocaml_Runtime[31],cst_46742); + return caml_call2(Runtime_ocaml_Runtime[93],_a9M_,_a9L_); + case 1: + var _a9N_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$225); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9N_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29526) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35538); + var + _a9O_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$153), + _a9P_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9O_), + _a9Q_=caml_call1(Runtime_ocaml_Runtime[69],_a9P_), + _a9R_=caml_call1(Runtime_ocaml_Runtime[31],cst_6012), + _a9S_=caml_call2(Runtime_ocaml_Runtime[104],_a9R_,_a9Q_), + _a9T_=caml_call1(Runtime_ocaml_Runtime[31],cst_41550); + return caml_call2(Runtime_ocaml_Runtime[93],_a9T_,_a9S_); + default: + var _a9U_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$226); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9U_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27564) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33052); + var + _a9V_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$154), + _a9W_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9V_), + _a9X_=caml_call1(Runtime_ocaml_Runtime[69],_a9W_), + _a9Y_=caml_call1(Runtime_ocaml_Runtime[31],cst_5488), + _a9Z_=caml_call2(Runtime_ocaml_Runtime[104],_a9Y_,_a9X_), + _a90_=caml_call1(Runtime_ocaml_Runtime[31],cst_38541); + return caml_call2(Runtime_ocaml_Runtime[93],_a90_,_a9Z_)}} + function _a9t_(param) + {switch(type_pret[0]) + {case 0:var _a9u_=0;break; + case 1:var _a9u_=1;break; + case 2:var _a9u_=0;break; + case 3:var _a9u_=0;break; + default:var _a9u_=0} + var + _a9v_=0 === anciennete_logement[0]?1:0, + _a9w_=caml_call2(Runtime_ocaml_Runtime[83],_a9v_,_a9u_), + _a9x_=caml_call3(Runtime_ocaml_Runtime[57],2007,12,31), + _a9y_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a9x_), + _a9z_=caml_call2(Runtime_ocaml_Runtime[83],_a9y_,_a9w_), + _a9A_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), + _a9B_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a9A_), + _a9C_=caml_call2(Runtime_ocaml_Runtime[83],_a9B_,_a9z_), + _a9D_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a9E_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a9D_), + _a9F_=caml_call2(Runtime_ocaml_Runtime[83],_a9E_,_a9C_); + return caml_call2(Runtime_ocaml_Runtime[29],_xE_,_a9F_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xF_,[0],_a9t_,_a9s_)} + function _a0k_(param) + {function _a8V_(param) + {switch(zone[0]) + {case 0: + var _a89_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$227); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a89_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25907) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31264); + var + _a8__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$155), + _a8$_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8__), + _a9a_=caml_call1(Runtime_ocaml_Runtime[69],_a8$_), + _a9b_=caml_call1(Runtime_ocaml_Runtime[31],cst_5357), + _a9c_=caml_call2(Runtime_ocaml_Runtime[104],_a9b_,_a9a_), + _a9d_=caml_call1(Runtime_ocaml_Runtime[31],cst_36621); + return caml_call2(Runtime_ocaml_Runtime[93],_a9d_,_a9c_); + case 1: + var _a9e_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$228); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9e_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23094) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27814); + var + _a9f_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$156), + _a9g_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9f_), + _a9h_=caml_call1(Runtime_ocaml_Runtime[69],_a9g_), + _a9i_=caml_call1(Runtime_ocaml_Runtime[31],cst_4720), + _a9j_=caml_call2(Runtime_ocaml_Runtime[104],_a9i_,_a9h_), + _a9k_=caml_call1(Runtime_ocaml_Runtime[31],cst_32534); + return caml_call2(Runtime_ocaml_Runtime[93],_a9k_,_a9j_); + default: + var _a9l_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$229); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a9l_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21567) + :caml_call1(Runtime_ocaml_Runtime[31],cst_25874); + var + _a9m_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$157), + _a9n_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a9m_), + _a9o_=caml_call1(Runtime_ocaml_Runtime[69],_a9n_), + _a9p_=caml_call1(Runtime_ocaml_Runtime[31],cst_4307), + _a9q_=caml_call2(Runtime_ocaml_Runtime[104],_a9p_,_a9o_), + _a9r_=caml_call1(Runtime_ocaml_Runtime[31],cst_30181); + return caml_call2(Runtime_ocaml_Runtime[93],_a9r_,_a9q_)}} + function _a8W_(param) + {switch(type_pret[0]) + {case 0:var _a8X_=0;break; + case 1:var _a8X_=1;break; + case 2:var _a8X_=0;break; + case 3:var _a8X_=0;break; + default:var _a8X_=0} + var + _a8Y_=0 === anciennete_logement[0]?0:1, + _a8Z_=caml_call2(Runtime_ocaml_Runtime[83],_a8Y_,_a8X_), + _a80_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), + _a81_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a80_), + _a82_=caml_call2(Runtime_ocaml_Runtime[83],_a81_,_a8Z_), + _a83_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), + _a84_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a83_), + _a85_=caml_call2(Runtime_ocaml_Runtime[83],_a84_,_a82_), + _a86_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a87_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a86_), + _a88_=caml_call2(Runtime_ocaml_Runtime[83],_a87_,_a85_); + return caml_call2(Runtime_ocaml_Runtime[29],_xG_,_a88_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xH_,[0],_a8W_,_a8V_)} + function _a0l_(param) + {function _a8m_(param) + {switch(zone[0]) + {case 0: + var _a8A_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$230); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8A_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_32185) + :caml_call1(Runtime_ocaml_Runtime[31],cst_38827); + var + _a8B_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$158), + _a8C_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8B_), + _a8D_=caml_call1(Runtime_ocaml_Runtime[69],_a8C_), + _a8E_=caml_call1(Runtime_ocaml_Runtime[31],cst_6642), + _a8F_=caml_call2(Runtime_ocaml_Runtime[104],_a8E_,_a8D_), + _a8G_=caml_call1(Runtime_ocaml_Runtime[31],cst_45469); + return caml_call2(Runtime_ocaml_Runtime[93],_a8G_,_a8F_); + case 1: + var _a8H_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$231); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8H_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28722) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34570$0); + var + _a8I_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$159), + _a8J_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8I_), + _a8K_=caml_call1(Runtime_ocaml_Runtime[69],_a8J_), + _a8L_=caml_call1(Runtime_ocaml_Runtime[31],cst_5848), + _a8M_=caml_call2(Runtime_ocaml_Runtime[104],_a8L_,_a8K_), + _a8N_=caml_call1(Runtime_ocaml_Runtime[31],cst_40418); + return caml_call2(Runtime_ocaml_Runtime[93],_a8N_,_a8M_); + default: + var _a8O_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$232); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8O_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26813) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32152); + var + _a8P_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$160), + _a8Q_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8P_), + _a8R_=caml_call1(Runtime_ocaml_Runtime[69],_a8Q_), + _a8S_=caml_call1(Runtime_ocaml_Runtime[31],cst_5339), + _a8T_=caml_call2(Runtime_ocaml_Runtime[104],_a8S_,_a8R_), + _a8U_=caml_call1(Runtime_ocaml_Runtime[31],cst_37491); + return caml_call2(Runtime_ocaml_Runtime[93],_a8U_,_a8T_)}} + function _a8n_(param) + {switch(type_pret[0]) + {case 0:var _a8o_=0;break; + case 1:var _a8o_=1;break; + case 2:var _a8o_=0;break; + case 3:var _a8o_=0;break; + default:var _a8o_=0} + var + _a8p_=0 === anciennete_logement[0]?1:0, + _a8q_=caml_call2(Runtime_ocaml_Runtime[83],_a8p_,_a8o_), + _a8r_=caml_call3(Runtime_ocaml_Runtime[57],2006,12,31), + _a8s_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a8r_), + _a8t_=caml_call2(Runtime_ocaml_Runtime[83],_a8s_,_a8q_), + _a8u_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), + _a8v_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a8u_), + _a8w_=caml_call2(Runtime_ocaml_Runtime[83],_a8v_,_a8t_), + _a8x_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a8y_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a8x_), + _a8z_=caml_call2(Runtime_ocaml_Runtime[83],_a8y_,_a8w_); + return caml_call2(Runtime_ocaml_Runtime[29],_xI_,_a8z_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xJ_,[0],_a8n_,_a8m_)} + function _a0m_(param) + {function _a7P_(param) + {switch(zone[0]) + {case 0: + var _a73_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$233); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a73_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25449) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30711); + var + _a74_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$161), + _a75_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a74_), + _a76_=caml_call1(Runtime_ocaml_Runtime[69],_a75_), + _a77_=caml_call1(Runtime_ocaml_Runtime[31],cst_5262), + _a78_=caml_call2(Runtime_ocaml_Runtime[104],_a77_,_a76_), + _a79_=caml_call1(Runtime_ocaml_Runtime[31],cst_35973); + return caml_call2(Runtime_ocaml_Runtime[93],_a79_,_a78_); + case 1: + var _a7__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$234); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7__)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22686) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27323); + var + _a7$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$162), + _a8a_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7$_), + _a8b_=caml_call1(Runtime_ocaml_Runtime[69],_a8a_), + _a8c_=caml_call1(Runtime_ocaml_Runtime[31],cst_4637), + _a8d_=caml_call2(Runtime_ocaml_Runtime[104],_a8c_,_a8b_), + _a8e_=caml_call1(Runtime_ocaml_Runtime[31],cst_31960); + return caml_call2(Runtime_ocaml_Runtime[93],_a8e_,_a8d_); + default: + var _a8f_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$235); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a8f_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21186) + :caml_call1(Runtime_ocaml_Runtime[31],cst_25417); + var + _a8g_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$163), + _a8h_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a8g_), + _a8i_=caml_call1(Runtime_ocaml_Runtime[69],_a8h_), + _a8j_=caml_call1(Runtime_ocaml_Runtime[31],cst_4231), + _a8k_=caml_call2(Runtime_ocaml_Runtime[104],_a8j_,_a8i_), + _a8l_=caml_call1(Runtime_ocaml_Runtime[31],cst_29648); + return caml_call2(Runtime_ocaml_Runtime[93],_a8l_,_a8k_)}} + function _a7Q_(param) + {switch(type_pret[0]) + {case 0:var _a7R_=0;break; + case 1:var _a7R_=1;break; + case 2:var _a7R_=0;break; + case 3:var _a7R_=0;break; + default:var _a7R_=0} + var + _a7S_=0 === anciennete_logement[0]?0:1, + _a7T_=caml_call2(Runtime_ocaml_Runtime[83],_a7S_,_a7R_), + _a7U_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), + _a7V_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a7U_), + _a7W_=caml_call2(Runtime_ocaml_Runtime[83],_a7V_,_a7T_), + _a7X_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), + _a7Y_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a7X_), + _a7Z_=caml_call2(Runtime_ocaml_Runtime[83],_a7Y_,_a7W_), + _a70_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a71_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a70_), + _a72_=caml_call2(Runtime_ocaml_Runtime[83],_a71_,_a7Z_); + return caml_call2(Runtime_ocaml_Runtime[29],_xK_,_a72_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xL_,[0],_a7Q_,_a7P_)} + function _a0n_(param) + {function _a7g_(param) + {switch(zone[0]) + {case 0: + var _a7u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$236); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7u_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31616) + :caml_call1(Runtime_ocaml_Runtime[31],cst_38141); + var + _a7v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$164), + _a7w_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7v_), + _a7x_=caml_call1(Runtime_ocaml_Runtime[69],_a7w_), + _a7y_=caml_call1(Runtime_ocaml_Runtime[31],cst_6525), + _a7z_=caml_call2(Runtime_ocaml_Runtime[104],_a7y_,_a7x_), + _a7A_=caml_call1(Runtime_ocaml_Runtime[31],cst_44666); + return caml_call2(Runtime_ocaml_Runtime[93],_a7A_,_a7z_); + case 1: + var _a7B_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$237); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7B_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28214) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33959); + var + _a7C_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$165), + _a7D_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7C_), + _a7E_=caml_call1(Runtime_ocaml_Runtime[69],_a7D_), + _a7F_=caml_call1(Runtime_ocaml_Runtime[31],cst_5745), + _a7G_=caml_call2(Runtime_ocaml_Runtime[104],_a7F_,_a7E_), + _a7H_=caml_call1(Runtime_ocaml_Runtime[31],cst_39704); + return caml_call2(Runtime_ocaml_Runtime[93],_a7H_,_a7G_); + default: + var _a7I_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$238); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a7I_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26339) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31584); + var + _a7J_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$166), + _a7K_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7J_), + _a7L_=caml_call1(Runtime_ocaml_Runtime[69],_a7K_), + _a7M_=caml_call1(Runtime_ocaml_Runtime[31],cst_5245), + _a7N_=caml_call2(Runtime_ocaml_Runtime[104],_a7M_,_a7L_), + _a7O_=caml_call1(Runtime_ocaml_Runtime[31],cst_36829); + return caml_call2(Runtime_ocaml_Runtime[93],_a7O_,_a7N_)}} + function _a7h_(param) + {switch(type_pret[0]) + {case 0:var _a7i_=0;break; + case 1:var _a7i_=1;break; + case 2:var _a7i_=0;break; + case 3:var _a7i_=0;break; + default:var _a7i_=0} + var + _a7j_=0 === anciennete_logement[0]?1:0, + _a7k_=caml_call2(Runtime_ocaml_Runtime[83],_a7j_,_a7i_), + _a7l_=caml_call3(Runtime_ocaml_Runtime[57],2005,8,31), + _a7m_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a7l_), + _a7n_=caml_call2(Runtime_ocaml_Runtime[83],_a7m_,_a7k_), + _a7o_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), + _a7p_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a7o_), + _a7q_=caml_call2(Runtime_ocaml_Runtime[83],_a7p_,_a7n_), + _a7r_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a7s_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a7r_), + _a7t_=caml_call2(Runtime_ocaml_Runtime[83],_a7s_,_a7q_); + return caml_call2(Runtime_ocaml_Runtime[29],_xM_,_a7t_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xN_,[0],_a7h_,_a7g_)} + function _a0o_(param) + {function _a6J_(param) + {switch(zone[0]) + {case 0: + var _a6X_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$239); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6X_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25147) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30347); + var + _a6Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$167), + _a6Z_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6Y_), + _a60_=caml_call1(Runtime_ocaml_Runtime[69],_a6Z_), + _a61_=caml_call1(Runtime_ocaml_Runtime[31],cst_5200), + _a62_=caml_call2(Runtime_ocaml_Runtime[104],_a61_,_a60_), + _a63_=caml_call1(Runtime_ocaml_Runtime[31],cst_35547); + return caml_call2(Runtime_ocaml_Runtime[93],_a63_,_a62_); + case 1: + var _a64_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$240); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a64_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22417) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26999); + var + _a65_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$168), + _a66_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a65_), + _a67_=caml_call1(Runtime_ocaml_Runtime[69],_a66_), + _a68_=caml_call1(Runtime_ocaml_Runtime[31],cst_4582), + _a69_=caml_call2(Runtime_ocaml_Runtime[104],_a68_,_a67_), + _a6__=caml_call1(Runtime_ocaml_Runtime[31],cst_31581); + return caml_call2(Runtime_ocaml_Runtime[93],_a6__,_a69_); + default: + var _a6$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$241); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6$_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_20935) + :caml_call1(Runtime_ocaml_Runtime[31],cst_25116$0); + var + _a7a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$169), + _a7b_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a7a_), + _a7c_=caml_call1(Runtime_ocaml_Runtime[69],_a7b_), + _a7d_=caml_call1(Runtime_ocaml_Runtime[31],cst_4181), + _a7e_=caml_call2(Runtime_ocaml_Runtime[104],_a7d_,_a7c_), + _a7f_=caml_call1(Runtime_ocaml_Runtime[31],cst_29297); + return caml_call2(Runtime_ocaml_Runtime[93],_a7f_,_a7e_)}} + function _a6K_(param) + {switch(type_pret[0]) + {case 0:var _a6L_=0;break; + case 1:var _a6L_=1;break; + case 2:var _a6L_=0;break; + case 3:var _a6L_=0;break; + default:var _a6L_=0} + var + _a6M_=0 === anciennete_logement[0]?0:1, + _a6N_=caml_call2(Runtime_ocaml_Runtime[83],_a6M_,_a6L_), + _a6O_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), + _a6P_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a6O_), + _a6Q_=caml_call2(Runtime_ocaml_Runtime[83],_a6P_,_a6N_), + _a6R_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), + _a6S_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a6R_), + _a6T_=caml_call2(Runtime_ocaml_Runtime[83],_a6S_,_a6Q_), + _a6U_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a6V_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a6U_), + _a6W_=caml_call2(Runtime_ocaml_Runtime[83],_a6V_,_a6T_); + return caml_call2(Runtime_ocaml_Runtime[29],_xO_,_a6W_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xP_,[0],_a6K_,_a6J_)} + function _a0p_(param) + {function _a6a_(param) + {switch(zone[0]) + {case 0: + var _a6o_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$242); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6o_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31241) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37689); + var + _a6p_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$170), + _a6q_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6p_), + _a6r_=caml_call1(Runtime_ocaml_Runtime[69],_a6q_), + _a6s_=caml_call1(Runtime_ocaml_Runtime[31],cst_6448), + _a6t_=caml_call2(Runtime_ocaml_Runtime[104],_a6s_,_a6r_), + _a6u_=caml_call1(Runtime_ocaml_Runtime[31],cst_44137); + return caml_call2(Runtime_ocaml_Runtime[93],_a6u_,_a6t_); + case 1: + var _a6v_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$243); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6v_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27879) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33556); + var + _a6w_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$171), + _a6x_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6w_), + _a6y_=caml_call1(Runtime_ocaml_Runtime[69],_a6x_), + _a6z_=caml_call1(Runtime_ocaml_Runtime[31],cst_5677), + _a6A_=caml_call2(Runtime_ocaml_Runtime[104],_a6z_,_a6y_), + _a6B_=caml_call1(Runtime_ocaml_Runtime[31],cst_39233); + return caml_call2(Runtime_ocaml_Runtime[93],_a6B_,_a6A_); + default: + var _a6C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$244); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a6C_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26027) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31210); + var + _a6D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$172), + _a6E_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a6D_), + _a6F_=caml_call1(Runtime_ocaml_Runtime[69],_a6E_), + _a6G_=caml_call1(Runtime_ocaml_Runtime[31],cst_5183), + _a6H_=caml_call2(Runtime_ocaml_Runtime[104],_a6G_,_a6F_), + _a6I_=caml_call1(Runtime_ocaml_Runtime[31],cst_36393); + return caml_call2(Runtime_ocaml_Runtime[93],_a6I_,_a6H_)}} + function _a6b_(param) + {switch(type_pret[0]) + {case 0:var _a6c_=0;break; + case 1:var _a6c_=1;break; + case 2:var _a6c_=0;break; + case 3:var _a6c_=0;break; + default:var _a6c_=0} + var + _a6d_=0 === anciennete_logement[0]?1:0, + _a6e_=caml_call2(Runtime_ocaml_Runtime[83],_a6d_,_a6c_), + _a6f_=caml_call3(Runtime_ocaml_Runtime[57],2003,6,30), + _a6g_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a6f_), + _a6h_=caml_call2(Runtime_ocaml_Runtime[83],_a6g_,_a6e_), + _a6i_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), + _a6j_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a6i_), + _a6k_=caml_call2(Runtime_ocaml_Runtime[83],_a6j_,_a6h_), + _a6l_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a6m_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a6l_), + _a6n_=caml_call2(Runtime_ocaml_Runtime[83],_a6m_,_a6k_); + return caml_call2(Runtime_ocaml_Runtime[29],_xQ_,_a6n_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xR_,[0],_a6b_,_a6a_)} + function _a0q_(param) + {function _a5D_(param) + {switch(zone[0]) + {case 0: + var _a5R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$245); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5R_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24849) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29987); + var + _a5S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$173), + _a5T_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5S_), + _a5U_=caml_call1(Runtime_ocaml_Runtime[69],_a5T_), + _a5V_=caml_call1(Runtime_ocaml_Runtime[31],cst_5138), + _a5W_=caml_call2(Runtime_ocaml_Runtime[104],_a5V_,_a5U_), + _a5X_=caml_call1(Runtime_ocaml_Runtime[31],cst_35125); + return caml_call2(Runtime_ocaml_Runtime[93],_a5X_,_a5W_); + case 1: + var _a5Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$246); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5Y_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22151) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26679); + var + _a5Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$174), + _a50_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5Z_), + _a51_=caml_call1(Runtime_ocaml_Runtime[69],_a50_), + _a52_=caml_call1(Runtime_ocaml_Runtime[31],cst_4528), + _a53_=caml_call2(Runtime_ocaml_Runtime[104],_a52_,_a51_), + _a54_=caml_call1(Runtime_ocaml_Runtime[31],cst_31207); + return caml_call2(Runtime_ocaml_Runtime[93],_a54_,_a53_); + default: + var _a55_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$247); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a55_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_20687) + :caml_call1(Runtime_ocaml_Runtime[31],cst_24818); + var + _a56_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$175), + _a57_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a56_), + _a58_=caml_call1(Runtime_ocaml_Runtime[69],_a57_), + _a59_=caml_call1(Runtime_ocaml_Runtime[31],cst_4131), + _a5__=caml_call2(Runtime_ocaml_Runtime[104],_a59_,_a58_), + _a5$_=caml_call1(Runtime_ocaml_Runtime[31],cst_28949); + return caml_call2(Runtime_ocaml_Runtime[93],_a5$_,_a5__)}} + function _a5E_(param) + {switch(type_pret[0]) + {case 0:var _a5F_=0;break; + case 1:var _a5F_=1;break; + case 2:var _a5F_=0;break; + case 3:var _a5F_=0;break; + default:var _a5F_=0} + var + _a5G_=0 === anciennete_logement[0]?0:1, + _a5H_=caml_call2(Runtime_ocaml_Runtime[83],_a5G_,_a5F_), + _a5I_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), + _a5J_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a5I_), + _a5K_=caml_call2(Runtime_ocaml_Runtime[83],_a5J_,_a5H_), + _a5L_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), + _a5M_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a5L_), + _a5N_=caml_call2(Runtime_ocaml_Runtime[83],_a5M_,_a5K_), + _a5O_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a5P_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a5O_), + _a5Q_=caml_call2(Runtime_ocaml_Runtime[83],_a5P_,_a5N_); + return caml_call2(Runtime_ocaml_Runtime[29],_xS_,_a5Q_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xT_,[0],_a5E_,_a5D_)} + function _a0r_(param) + {function _a45_(param) + {switch(zone[0]) + {case 0: + var _a5h_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$248); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5h_)) + var + _a5i_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_163000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_196700); + else + var + _a5j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$176), + _a5k_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5j_), + _a5l_=caml_call1(Runtime_ocaml_Runtime[69],_a5k_), + _a5m_=caml_call1(Runtime_ocaml_Runtime[31],cst_33700), + _a5n_=caml_call2(Runtime_ocaml_Runtime[104],_a5m_,_a5l_), + _a5o_=caml_call1(Runtime_ocaml_Runtime[31],cst_230400), + _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5o_,_a5n_); + break; + case 1: + var _a5p_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$249); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5p_)) + var + _a5i_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_145300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_175000); + else + var + _a5q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$177), + _a5r_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5q_), + _a5s_=caml_call1(Runtime_ocaml_Runtime[69],_a5r_), + _a5t_=caml_call1(Runtime_ocaml_Runtime[31],cst_29700), + _a5u_=caml_call2(Runtime_ocaml_Runtime[104],_a5t_,_a5s_), + _a5v_=caml_call1(Runtime_ocaml_Runtime[31],cst_204700), + _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5v_,_a5u_); + break; + default: + var _a5w_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$250); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a5w_)) + var + _a5i_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_135700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_162800); + else + var + _a5x_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$178), + _a5y_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a5x_), + _a5z_=caml_call1(Runtime_ocaml_Runtime[69],_a5y_), + _a5A_=caml_call1(Runtime_ocaml_Runtime[31],cst_27100), + _a5B_=caml_call2(Runtime_ocaml_Runtime[104],_a5A_,_a5z_), + _a5C_=caml_call1(Runtime_ocaml_Runtime[31],cst_189900), + _a5i_=caml_call2(Runtime_ocaml_Runtime[93],_a5C_,_a5B_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a5i_,taux_francs_vers_euros)} + function _a46_(param) + {switch(type_pret[0]) + {case 0:var _a47_=0;break; + case 1:var _a47_=1;break; + case 2:var _a47_=0;break; + case 3:var _a47_=0;break; + default:var _a47_=0} + var + _a48_=0 === anciennete_logement[0]?0:1, + _a49_=caml_call2(Runtime_ocaml_Runtime[83],_a48_,_a47_), + _a4__=caml_call3(Runtime_ocaml_Runtime[57],2001,12,31), + _a4$_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a4__), + _a5a_=caml_call2(Runtime_ocaml_Runtime[83],_a4$_,_a49_), + _a5b_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), + _a5c_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a5b_), + _a5d_=caml_call2(Runtime_ocaml_Runtime[83],_a5c_,_a5a_), + _a5e_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a5f_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a5e_), + _a5g_=caml_call2(Runtime_ocaml_Runtime[83],_a5f_,_a5d_); + return caml_call2(Runtime_ocaml_Runtime[29],_xU_,_a5g_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xV_,[0],_a46_,_a45_)} + function _a0s_(param) + {function _a4w_(param) + {switch(zone[0]) + {case 0: + var _a4K_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$251); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4K_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30871) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37243); + var + _a4L_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$179), + _a4M_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4L_), + _a4N_=caml_call1(Runtime_ocaml_Runtime[69],_a4M_), + _a4O_=caml_call1(Runtime_ocaml_Runtime[31],cst_6372), + _a4P_=caml_call2(Runtime_ocaml_Runtime[104],_a4O_,_a4N_), + _a4Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_43615); + return caml_call2(Runtime_ocaml_Runtime[93],_a4Q_,_a4P_); + case 1: + var _a4R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$252); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4R_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27548) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33148); + var + _a4S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$180), + _a4T_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4S_), + _a4U_=caml_call1(Runtime_ocaml_Runtime[69],_a4T_), + _a4V_=caml_call1(Runtime_ocaml_Runtime[31],cst_5610), + _a4W_=caml_call2(Runtime_ocaml_Runtime[104],_a4V_,_a4U_), + _a4X_=caml_call1(Runtime_ocaml_Runtime[31],cst_38768); + return caml_call2(Runtime_ocaml_Runtime[93],_a4X_,_a4W_); + default: + var _a4Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$253); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4Y_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25718) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30840); + var + _a4Z_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$181), + _a40_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4Z_), + _a41_=caml_call1(Runtime_ocaml_Runtime[69],_a40_), + _a42_=caml_call1(Runtime_ocaml_Runtime[31],cst_5122), + _a43_=caml_call2(Runtime_ocaml_Runtime[104],_a42_,_a41_), + _a44_=caml_call1(Runtime_ocaml_Runtime[31],cst_35962); + return caml_call2(Runtime_ocaml_Runtime[93],_a44_,_a43_)}} + function _a4x_(param) + {switch(type_pret[0]) + {case 0:var _a4y_=0;break; + case 1:var _a4y_=1;break; + case 2:var _a4y_=0;break; + case 3:var _a4y_=0;break; + default:var _a4y_=0} + var + _a4z_=0 === anciennete_logement[0]?1:0, + _a4A_=caml_call2(Runtime_ocaml_Runtime[83],_a4z_,_a4y_), + _a4B_=caml_call3(Runtime_ocaml_Runtime[57],2002,6,30), + _a4C_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a4B_), + _a4D_=caml_call2(Runtime_ocaml_Runtime[83],_a4C_,_a4A_), + _a4E_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), + _a4F_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a4E_), + _a4G_=caml_call2(Runtime_ocaml_Runtime[83],_a4F_,_a4D_), + _a4H_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a4I_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a4H_), + _a4J_=caml_call2(Runtime_ocaml_Runtime[83],_a4I_,_a4G_); + return caml_call2(Runtime_ocaml_Runtime[29],_xW_,_a4J_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xX_,[0],_a4x_,_a4w_)} + function _a0t_(param) + {function _a3Y_(param) + {switch(zone[0]) + {case 0: + var _a4a_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$254); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4a_)) + var + _a4b_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_202500$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_244300); + else + var + _a4c_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$182), + _a4d_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4c_), + _a4e_=caml_call1(Runtime_ocaml_Runtime[69],_a4d_), + _a4f_=caml_call1(Runtime_ocaml_Runtime[31],cst_41800), + _a4g_=caml_call2(Runtime_ocaml_Runtime[104],_a4f_,_a4e_), + _a4h_=caml_call1(Runtime_ocaml_Runtime[31],cst_286100), + _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4h_,_a4g_); + break; + case 1: + var _a4i_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$255); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4i_)) + var + _a4b_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_180700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_217500); + else + var + _a4j_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$183), + _a4k_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4j_), + _a4l_=caml_call1(Runtime_ocaml_Runtime[69],_a4k_), + _a4m_=caml_call1(Runtime_ocaml_Runtime[31],cst_36800), + _a4n_=caml_call2(Runtime_ocaml_Runtime[104],_a4m_,_a4l_), + _a4o_=caml_call1(Runtime_ocaml_Runtime[31],cst_254300), + _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4o_,_a4n_); + break; + default: + var _a4p_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$256); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a4p_)) + var + _a4b_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_168700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_202300); + else + var + _a4q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$184), + _a4r_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a4q_), + _a4s_=caml_call1(Runtime_ocaml_Runtime[69],_a4r_), + _a4t_=caml_call1(Runtime_ocaml_Runtime[31],cst_33600), + _a4u_=caml_call2(Runtime_ocaml_Runtime[104],_a4t_,_a4s_), + _a4v_=caml_call1(Runtime_ocaml_Runtime[31],cst_235900), + _a4b_=caml_call2(Runtime_ocaml_Runtime[93],_a4v_,_a4u_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a4b_,taux_francs_vers_euros)} + function _a3Z_(param) + {switch(type_pret[0]) + {case 0:var _a30_=0;break; + case 1:var _a30_=1;break; + case 2:var _a30_=0;break; + case 3:var _a30_=0;break; + default:var _a30_=0} + var + _a31_=0 === anciennete_logement[0]?1:0, + _a32_=caml_call2(Runtime_ocaml_Runtime[83],_a31_,_a30_), + _a33_=caml_call3(Runtime_ocaml_Runtime[57],2001,12,31), + _a34_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a33_), + _a35_=caml_call2(Runtime_ocaml_Runtime[83],_a34_,_a32_), + _a36_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), + _a37_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a36_), + _a38_=caml_call2(Runtime_ocaml_Runtime[83],_a37_,_a35_), + _a39_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a3__= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a39_), + _a3$_=caml_call2(Runtime_ocaml_Runtime[83],_a3__,_a38_); + return caml_call2(Runtime_ocaml_Runtime[29],_xY_,_a3$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_xZ_,[0],_a3Z_,_a3Y_)} + function _a0u_(param) + {function _a3o_(param) + {switch(zone[0]) + {case 0: + var _a3C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$257); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3C_)) + var + _a3D_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_161100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_194400); + else + var + _a3E_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$185), + _a3F_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3E_), + _a3G_=caml_call1(Runtime_ocaml_Runtime[69],_a3F_), + _a3H_=caml_call1(Runtime_ocaml_Runtime[31],cst_33300), + _a3I_=caml_call2(Runtime_ocaml_Runtime[104],_a3H_,_a3G_), + _a3J_=caml_call1(Runtime_ocaml_Runtime[31],cst_227700), + _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3J_,_a3I_); + break; + case 1: + var _a3K_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$258); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3K_)) + var + _a3D_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_143600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_172900); + else + var + _a3L_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$186), + _a3M_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3L_), + _a3N_=caml_call1(Runtime_ocaml_Runtime[69],_a3M_), + _a3O_=caml_call1(Runtime_ocaml_Runtime[31],cst_29300), + _a3P_=caml_call2(Runtime_ocaml_Runtime[104],_a3O_,_a3N_), + _a3Q_=caml_call1(Runtime_ocaml_Runtime[31],cst_202200), + _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3Q_,_a3P_); + break; + default: + var _a3R_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$259); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3R_)) + var + _a3D_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_134100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_160900); + else + var + _a3S_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$187), + _a3T_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3S_), + _a3U_=caml_call1(Runtime_ocaml_Runtime[69],_a3T_), + _a3V_=caml_call1(Runtime_ocaml_Runtime[31],cst_26800), + _a3W_=caml_call2(Runtime_ocaml_Runtime[104],_a3V_,_a3U_), + _a3X_=caml_call1(Runtime_ocaml_Runtime[31],cst_187700), + _a3D_=caml_call2(Runtime_ocaml_Runtime[93],_a3X_,_a3W_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a3D_,taux_francs_vers_euros)} + function _a3p_(param) + {switch(type_pret[0]) + {case 0:var _a3q_=0;break; + case 1:var _a3q_=1;break; + case 2:var _a3q_=0;break; + case 3:var _a3q_=0;break; + default:var _a3q_=0} + var + _a3r_=0 === anciennete_logement[0]?0:1, + _a3s_=caml_call2(Runtime_ocaml_Runtime[83],_a3r_,_a3q_), + _a3t_=caml_call3(Runtime_ocaml_Runtime[57],2001,6,30), + _a3u_= + caml_call2 + (Runtime_ocaml_Runtime[120],date_signature_pret,_a3t_), + _a3v_=caml_call2(Runtime_ocaml_Runtime[83],_a3u_,_a3s_), + _a3w_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), + _a3x_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a3w_), + _a3y_=caml_call2(Runtime_ocaml_Runtime[83],_a3x_,_a3v_), + _a3z_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a3A_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a3z_), + _a3B_=caml_call2(Runtime_ocaml_Runtime[83],_a3A_,_a3y_); + return caml_call2(Runtime_ocaml_Runtime[29],_x0_,_a3B_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x1_,[0],_a3p_,_a3o_)} + function _a0v_(param) + {function _a2Q_(param) + {switch(zone[0]) + {case 0: + var _a24_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$260); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a24_)) + var + _a25_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_200100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_141400); + else + var + _a26_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$188), + _a27_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a26_), + _a28_=caml_call1(Runtime_ocaml_Runtime[69],_a27_), + _a29_=caml_call1(Runtime_ocaml_Runtime[31],cst_41300), + _a2__=caml_call2(Runtime_ocaml_Runtime[104],_a29_,_a28_), + _a2$_=caml_call1(Runtime_ocaml_Runtime[31],cst_182700), + _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a2$_,_a2__); + break; + case 1: + var _a3a_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$261); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3a_)) + var + _a25_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_178600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_215000); + else + var + _a3b_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$189), + _a3c_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3b_), + _a3d_=caml_call1(Runtime_ocaml_Runtime[69],_a3c_), + _a3e_=caml_call1(Runtime_ocaml_Runtime[31],cst_36400), + _a3f_=caml_call2(Runtime_ocaml_Runtime[104],_a3e_,_a3d_), + _a3g_=caml_call1(Runtime_ocaml_Runtime[31],cst_251400), + _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a3g_,_a3f_); + break; + default: + var _a3h_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$262); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a3h_)) + var + _a25_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_166700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_199900); + else + var + _a3i_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$190), + _a3j_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a3i_), + _a3k_=caml_call1(Runtime_ocaml_Runtime[69],_a3j_), + _a3l_=caml_call1(Runtime_ocaml_Runtime[31],cst_33200), + _a3m_=caml_call2(Runtime_ocaml_Runtime[104],_a3l_,_a3k_), + _a3n_=caml_call1(Runtime_ocaml_Runtime[31],cst_233100), + _a25_=caml_call2(Runtime_ocaml_Runtime[93],_a3n_,_a3m_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a25_,taux_francs_vers_euros)} + function _a2R_(param) + {switch(type_pret[0]) + {case 0:var _a2S_=0;break; + case 1:var _a2S_=1;break; + case 2:var _a2S_=0;break; + case 3:var _a2S_=0;break; + default:var _a2S_=0} + var + _a2T_=0 === anciennete_logement[0]?1:0, + _a2U_=caml_call2(Runtime_ocaml_Runtime[83],_a2T_,_a2S_), + _a2V_=caml_call3(Runtime_ocaml_Runtime[57],2001,6,30), + _a2W_= + caml_call2 + (Runtime_ocaml_Runtime[120],date_signature_pret,_a2V_), + _a2X_=caml_call2(Runtime_ocaml_Runtime[83],_a2W_,_a2U_), + _a2Y_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), + _a2Z_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a2Y_), + _a20_=caml_call2(Runtime_ocaml_Runtime[83],_a2Z_,_a2X_), + _a21_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a22_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a21_), + _a23_=caml_call2(Runtime_ocaml_Runtime[83],_a22_,_a20_); + return caml_call2(Runtime_ocaml_Runtime[29],_x2_,_a23_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x3_,[0],_a2R_,_a2Q_)} + function _a0w_(param) + {function _a2g_(param) + {switch(zone[0]) + {case 0: + var _a2u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$263); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2u_)) + var + _a2v_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_159500) + :caml_call1(Runtime_ocaml_Runtime[31],cst_192500); + else + var + _a2w_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$191), + _a2x_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2w_), + _a2y_=caml_call1(Runtime_ocaml_Runtime[69],_a2x_), + _a2z_=caml_call1(Runtime_ocaml_Runtime[31],cst_33000), + _a2A_=caml_call2(Runtime_ocaml_Runtime[104],_a2z_,_a2y_), + _a2B_=caml_call1(Runtime_ocaml_Runtime[31],cst_225500), + _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2B_,_a2A_); + break; + case 1: + var _a2C_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$264); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2C_)) + var + _a2v_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_142200) + :caml_call1(Runtime_ocaml_Runtime[31],cst_171200); + else + var + _a2D_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$192), + _a2E_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2D_), + _a2F_=caml_call1(Runtime_ocaml_Runtime[69],_a2E_), + _a2G_=caml_call1(Runtime_ocaml_Runtime[31],cst_29000), + _a2H_=caml_call2(Runtime_ocaml_Runtime[104],_a2G_,_a2F_), + _a2I_=caml_call1(Runtime_ocaml_Runtime[31],cst_200200), + _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2I_,_a2H_); + break; + default: + var _a2J_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$265); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a2J_)) + var + _a2v_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_132800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_159300); + else + var + _a2K_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$193), + _a2L_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2K_), + _a2M_=caml_call1(Runtime_ocaml_Runtime[69],_a2L_), + _a2N_=caml_call1(Runtime_ocaml_Runtime[31],cst_26500), + _a2O_=caml_call2(Runtime_ocaml_Runtime[104],_a2N_,_a2M_), + _a2P_=caml_call1(Runtime_ocaml_Runtime[31],cst_185800$0), + _a2v_=caml_call2(Runtime_ocaml_Runtime[93],_a2P_,_a2O_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a2v_,taux_francs_vers_euros)} + function _a2h_(param) + {switch(type_pret[0]) + {case 0:var _a2i_=0;break; + case 1:var _a2i_=1;break; + case 2:var _a2i_=0;break; + case 3:var _a2i_=0;break; + default:var _a2i_=0} + var + _a2j_=0 === anciennete_logement[0]?0:1, + _a2k_=caml_call2(Runtime_ocaml_Runtime[83],_a2j_,_a2i_), + _a2l_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), + _a2m_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a2l_), + _a2n_=caml_call2(Runtime_ocaml_Runtime[83],_a2m_,_a2k_), + _a2o_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _a2p_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a2o_), + _a2q_=caml_call2(Runtime_ocaml_Runtime[83],_a2p_,_a2n_), + _a2r_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a2s_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a2r_), + _a2t_=caml_call2(Runtime_ocaml_Runtime[83],_a2s_,_a2q_); + return caml_call2(Runtime_ocaml_Runtime[29],_x4_,_a2t_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x5_,[0],_a2h_,_a2g_)} + function _a0x_(param) + {function _a1I_(param) + {switch(zone[0]) + {case 0: + var _a1W_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$266); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1W_)) + var + _a1X_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_198100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_239000); + else + var + _a1Y_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$194), + _a1Z_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1Y_), + _a10_=caml_call1(Runtime_ocaml_Runtime[69],_a1Z_), + _a11_=caml_call1(Runtime_ocaml_Runtime[31],cst_40900), + _a12_=caml_call2(Runtime_ocaml_Runtime[104],_a11_,_a10_), + _a13_=caml_call1(Runtime_ocaml_Runtime[31],cst_279900), + _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a13_,_a12_); + break; + case 1: + var _a14_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$267); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a14_)) + var + _a1X_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_176800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_212800); + else + var + _a15_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$195), + _a16_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a15_), + _a17_=caml_call1(Runtime_ocaml_Runtime[69],_a16_), + _a18_=caml_call1(Runtime_ocaml_Runtime[31],cst_36000), + _a19_=caml_call2(Runtime_ocaml_Runtime[104],_a18_,_a17_), + _a1__=caml_call1(Runtime_ocaml_Runtime[31],cst_248800), + _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a1__,_a19_); + break; + default: + var _a1$_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$268); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1$_)) + var + _a1X_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_165000) + :caml_call1(Runtime_ocaml_Runtime[31],cst_197900); + else + var + _a2a_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$196), + _a2b_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a2a_), + _a2c_=caml_call1(Runtime_ocaml_Runtime[69],_a2b_), + _a2d_=caml_call1(Runtime_ocaml_Runtime[31],cst_32900), + _a2e_=caml_call2(Runtime_ocaml_Runtime[104],_a2d_,_a2c_), + _a2f_=caml_call1(Runtime_ocaml_Runtime[31],cst_230800), + _a1X_=caml_call2(Runtime_ocaml_Runtime[93],_a2f_,_a2e_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a1X_,taux_francs_vers_euros)} + function _a1J_(param) + {switch(type_pret[0]) + {case 0:var _a1K_=0;break; + case 1:var _a1K_=1;break; + case 2:var _a1K_=0;break; + case 3:var _a1K_=0;break; + default:var _a1K_=0} + var + _a1L_=0 === anciennete_logement[0]?1:0, + _a1M_=caml_call2(Runtime_ocaml_Runtime[83],_a1L_,_a1K_), + _a1N_=caml_call3(Runtime_ocaml_Runtime[57],2000,6,30), + _a1O_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a1N_), + _a1P_=caml_call2(Runtime_ocaml_Runtime[83],_a1O_,_a1M_), + _a1Q_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _a1R_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a1Q_), + _a1S_=caml_call2(Runtime_ocaml_Runtime[83],_a1R_,_a1P_), + _a1T_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a1U_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a1T_), + _a1V_=caml_call2(Runtime_ocaml_Runtime[83],_a1U_,_a1S_); + return caml_call2(Runtime_ocaml_Runtime[29],_x6_,_a1V_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x7_,[0],_a1J_,_a1I_)} + function _a0y_(param) + {function _a0__(param) + {switch(zone[0]) + {case 0: + var _a1m_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$269); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1m_)) + var + _a1n_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_167800$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_202500$1); + else + var + _a1o_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$197), + _a1p_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1o_), + _a1q_=caml_call1(Runtime_ocaml_Runtime[69],_a1p_), + _a1r_=caml_call1(Runtime_ocaml_Runtime[31],cst_34700$0), + _a1s_=caml_call2(Runtime_ocaml_Runtime[104],_a1r_,_a1q_), + _a1t_=caml_call1(Runtime_ocaml_Runtime[31],cst_237200$0), + _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1t_,_a1s_); + break; + case 1: + var _a1u_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$270); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1u_)) + var + _a1n_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_149600$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_180100$0); + else + var + _a1v_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$198), + _a1w_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1v_), + _a1x_=caml_call1(Runtime_ocaml_Runtime[69],_a1w_), + _a1y_=caml_call1(Runtime_ocaml_Runtime[31],cst_30500$2), + _a1z_=caml_call2(Runtime_ocaml_Runtime[104],_a1y_,_a1x_), + _a1A_=caml_call1(Runtime_ocaml_Runtime[31],cst_210600$0), + _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1A_,_a1z_); + break; + default: + var _a1B_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$271); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a1B_)) + var + _a1n_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_139700$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_167600$0); + else + var + _a1C_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$199), + _a1D_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a1C_), + _a1E_=caml_call1(Runtime_ocaml_Runtime[69],_a1D_), + _a1F_=caml_call1(Runtime_ocaml_Runtime[31],cst_27900$0), + _a1G_=caml_call2(Runtime_ocaml_Runtime[104],_a1F_,_a1E_), + _a1H_=caml_call1(Runtime_ocaml_Runtime[31],cst_195500$0), + _a1n_=caml_call2(Runtime_ocaml_Runtime[93],_a1H_,_a1G_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a1n_,taux_francs_vers_euros)} + function _a0$_(param) + {switch(type_pret[0]) + {case 0:var _a1a_=0;break; + case 1:var _a1a_=1;break; + case 2:var _a1a_=0;break; + case 3:var _a1a_=0;break; + default:var _a1a_=0} + var + _a1b_=0 === anciennete_logement[0]?0:1, + _a1c_=caml_call2(Runtime_ocaml_Runtime[83],_a1b_,_a1a_), + _a1d_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _a1e_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a1d_), + _a1f_=caml_call2(Runtime_ocaml_Runtime[83],_a1e_,_a1c_), + _a1g_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _a1h_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a1g_), + _a1i_=caml_call2(Runtime_ocaml_Runtime[83],_a1h_,_a1f_), + _a1j_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a1k_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a1j_), + _a1l_=caml_call2(Runtime_ocaml_Runtime[83],_a1k_,_a1i_); + return caml_call2(Runtime_ocaml_Runtime[29],_x8_,_a1l_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x9_,[0],_a0$_,_a0__)} + var + _a0z_= + [0, + function(param) + {function _a0A_(param) + {switch(zone[0]) + {case 0: + var _a0O_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$272); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a0O_)) + var + _a0P_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_208500$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_251500$0); + else + var + _a0Q_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$200), + _a0R_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a0Q_), + _a0S_=caml_call1(Runtime_ocaml_Runtime[69],_a0R_), + _a0T_=caml_call1(Runtime_ocaml_Runtime[31],cst_43000$0), + _a0U_=caml_call2(Runtime_ocaml_Runtime[104],_a0T_,_a0S_), + _a0V_=caml_call1(Runtime_ocaml_Runtime[31],cst_294500$0), + _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a0V_,_a0U_); + break; + case 1: + var _a0W_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$273); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a0W_)) + var + _a0P_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_186000$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_223900$0); + else + var + _a0X_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$201), + _a0Y_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a0X_), + _a0Z_=caml_call1(Runtime_ocaml_Runtime[69],_a0Y_), + _a00_=caml_call1(Runtime_ocaml_Runtime[31],cst_37900$0), + _a01_=caml_call2(Runtime_ocaml_Runtime[104],_a00_,_a0Z_), + _a02_=caml_call1(Runtime_ocaml_Runtime[31],cst_261800$0), + _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a02_,_a01_); + break; + default: + var _a03_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$274); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_a03_)) + var + _a0P_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_173600$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_208200$0); + else + var + _a04_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$202), + _a05_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_a04_), + _a06_=caml_call1(Runtime_ocaml_Runtime[69],_a05_), + _a07_=caml_call1(Runtime_ocaml_Runtime[31],cst_34600), + _a08_=caml_call2(Runtime_ocaml_Runtime[104],_a07_,_a06_), + _a09_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$0), + _a0P_=caml_call2(Runtime_ocaml_Runtime[93],_a09_,_a08_)} + return caml_call2 + (Runtime_ocaml_Runtime[104],_a0P_,taux_francs_vers_euros)} + function _a0B_(param) + {switch(type_pret[0]) + {case 0:var _a0C_=0;break; + case 1:var _a0C_=1;break; + case 2:var _a0C_=0;break; + case 3:var _a0C_=0;break; + default:var _a0C_=0} + var + _a0D_=0 === anciennete_logement[0]?1:0, + _a0E_=caml_call2(Runtime_ocaml_Runtime[83],_a0D_,_a0C_), + _a0F_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _a0G_= + caml_call2 + (Runtime_ocaml_Runtime[115],date_signature_pret,_a0F_), + _a0H_=caml_call2(Runtime_ocaml_Runtime[83],_a0G_,_a0E_), + _a0I_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _a0J_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_a0I_), + _a0K_=caml_call2(Runtime_ocaml_Runtime[83],_a0J_,_a0H_), + _a0L_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _a0M_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_a0L_), + _a0N_=caml_call2(Runtime_ocaml_Runtime[83],_a0M_,_a0K_); + return caml_call2(Runtime_ocaml_Runtime[29],_x__,_a0N_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_x$_,[0],_a0B_,_a0A_)}, + _a0y_, + _a0x_, + _a0w_, + _a0v_, + _a0u_, + _a0t_, + _a0s_, + _a0r_, + _a0q_, + _a0p_, + _a0o_, + _a0n_, + _a0m_, + _a0l_, + _a0k_, + _a0j_, + _a0i_, + _a0h_, + _a0g_, + _a0f_, + _a0e_, + _a0d_, + _a0c_, + _a0b_, + _a0a_, + _aZ$_, + _aZ__, + _aZ9_, + _aZ8_, + _aZ7_, + _aZ6_, + _aZ5_, + _aZ4_, + _aZ3_, + _aZ2_, + _aZ1_, + _aZ0_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ya_,_a0z_,_aZZ_,_aZY_)} + function _aZz_(param){return 1} + var + _aZA_= + [0, + function(param) + {function _aZB_(param) + {var _aZQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$275); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aZQ_)) + var + _aZR_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_86900) + :caml_call1(Runtime_ocaml_Runtime[31],cst_97100); + else + var + _aZS_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$203), + _aZT_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aZS_), + _aZU_=caml_call1(Runtime_ocaml_Runtime[69],_aZT_), + _aZV_=caml_call1(Runtime_ocaml_Runtime[31],cst_10200), + _aZW_=caml_call2(Runtime_ocaml_Runtime[104],_aZV_,_aZU_), + _aZX_=caml_call1(Runtime_ocaml_Runtime[31],cst_107300), + _aZR_=caml_call2(Runtime_ocaml_Runtime[93],_aZX_,_aZW_); + return caml_call2 + (Runtime_ocaml_Runtime[104],_aZR_,taux_francs_vers_euros)} + function _aZC_(param) + {switch(type_pret[0]) + {case 0:var _aZD_=0;break; + case 1:var _aZD_=1;break; + case 2:var _aZD_=0;break; + case 3:var _aZD_=0;break; + default:var _aZD_=0} + if(0 === anciennete_logement[0]) + var _aZE_=0; + else + var + ameliore_par_occupant=anciennete_logement[1], + _aZP_=0 === ameliore_par_occupant[0]?1:0, + _aZE_=_aZP_; + var + _aZF_=caml_call2(Runtime_ocaml_Runtime[83],_aZE_,_aZD_), + _aZG_=caml_call3(Runtime_ocaml_Runtime[57],1994,11,27), + _aZH_= + caml_call2 + (Runtime_ocaml_Runtime[120],date_signature_pret,_aZG_), + _aZI_=caml_call2(Runtime_ocaml_Runtime[83],_aZH_,_aZF_), + _aZJ_=caml_call3(Runtime_ocaml_Runtime[57],1992,6,30), + _aZK_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_aZJ_), + _aZL_=caml_call2(Runtime_ocaml_Runtime[83],_aZK_,_aZI_), + _aZM_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _aZN_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aZM_), + _aZO_=caml_call2(Runtime_ocaml_Runtime[83],_aZN_,_aZL_); + return caml_call2(Runtime_ocaml_Runtime[29],_yb_,_aZO_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_yc_,[0],_aZC_,_aZB_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_yd_,_aZA_,_aZz_,_aZy_)}, + _aZu_], + _aZw_=caml_call4(Runtime_ocaml_Runtime[63],_ye_,_aZv_,_aZt_,_aZs_); + return _aZw_} + catch(_aZx_) + {_aZx_ = caml_wrap_exception(_aZx_); + if(_aZx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_wP_]; + throw _aZx_}} + var + calcul_plafond_mensualite_d832= + caml_call3 + (Runtime_ocaml_Runtime[28],_yf_,Runtime_ocaml_Runtime[10],_aWH_); + try + {var + _aWI_=function(param){return calcul_nombre_parts_dot_n_nomb}, + _aWJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yh_,1)}, + _aWK_=caml_call4(Runtime_ocaml_Runtime[63],_yi_,[0],_aWJ_,_aWI_)} + catch(_aZr_) + {_aZr_ = caml_wrap_exception(_aZr_); + if(_aZr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yg_]; + throw _aZr_} + var + n_nombre_parts_d832_11= + caml_call3 + (Runtime_ocaml_Runtime[28],_yj_,Runtime_ocaml_Runtime[15],_aWK_); + function _aWL_(allocation_mensuelle) + {try + {var + _aZh_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[98], + mensualite_principale, + allocation_mensuelle)}, + _aZi_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_yl_,1)}, + _aZj_= + [0, + function(param) + {function _aZm_(param) + {var + _aZq_= + caml_call2 + (Runtime_ocaml_Runtime[93], + mensualite_principale, + montant_forfaitaire_charges_d8); + return caml_call2 + (Runtime_ocaml_Runtime[98],_aZq_,allocation_mensuelle)} + function _aZn_(param) + {var + _aZo_=caml_call3(Runtime_ocaml_Runtime[57],1999,6,30), + _aZp_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_aZo_); + return caml_call2(Runtime_ocaml_Runtime[29],_ym_,_aZp_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_yn_,[0],_aZn_,_aZm_)}], + _aZk_=caml_call4(Runtime_ocaml_Runtime[63],_yo_,_aZj_,_aZi_,_aZh_); + return _aZk_} + catch(_aZl_) + {_aZl_ = caml_wrap_exception(_aZl_); + if(_aZl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yk_]; + throw _aZl_}} + var + depense_nette_minimale_d832_10= + caml_call3 + (Runtime_ocaml_Runtime[28],_yp_,Runtime_ocaml_Runtime[10],_aWL_); + try + {var + _aWM_= + function(param) + {var + _aZe_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yr_, + Runtime_ocaml_Runtime[16], + date_signature_pret), + _aZf_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _ys_, + calcul_plafond_mensualite_d832), + _aZe_), + _aZg_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yt_, + Runtime_ocaml_Runtime[13], + _aZf_); + return caml_call2(Runtime_ocaml_Runtime[27],_yu_,_aZg_)}, + _aWN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yv_,1)}, + _aWO_= + [0, + function(param) + {function _aY8_(param) + {var + _aY__= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yw_, + Runtime_ocaml_Runtime[16], + date_signature_pret), + _aY$_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _yx_, + calcul_plafond_mensualite_d832), + _aY__), + _aZa_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yy_, + Runtime_ocaml_Runtime[13], + _aY$_), + plafond_signature= + caml_call2(Runtime_ocaml_Runtime[27],_yz_,_aZa_), + _aZb_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yA_, + Runtime_ocaml_Runtime[16], + date_entree_logement), + _aZc_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _yB_, + calcul_plafond_mensualite_d832), + _aZb_), + _aZd_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _yC_, + Runtime_ocaml_Runtime[13], + _aZc_), + plafond_entree= + caml_call2(Runtime_ocaml_Runtime[27],_yD_,_aZd_); + return caml_call2 + (Runtime_ocaml_Runtime[113], + plafond_signature, + plafond_entree) + ?plafond_entree + :plafond_signature} + function _aY9_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _yE_, + local_habite_premiere_fois_ben)} + return caml_call4(Runtime_ocaml_Runtime[63],_yF_,[0],_aY9_,_aY8_)}], + _aWP_=caml_call4(Runtime_ocaml_Runtime[63],_yG_,_aWO_,_aWN_,_aWM_)} + catch(_aY7_) + {_aY7_ = caml_wrap_exception(_aY7_); + if(_aY7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yq_]; + throw _aY7_} + var + plafond_mensualite_d832_10_3_b= + caml_call3 + (Runtime_ocaml_Runtime[28],_yH_,Runtime_ocaml_Runtime[13],_aWP_); + try + {var + _aWQ_=function(param){return ressources_menage_arrondies}, + _aWR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yJ_,1)}, + _aWS_=caml_call4(Runtime_ocaml_Runtime[63],_yK_,[0],_aWR_,_aWQ_), + calcul_equivalence_loyer_minim$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_yL_,Runtime_ocaml_Runtime[13],_aWS_)} + catch(_aY6_) + {_aY6_ = caml_wrap_exception(_aY6_); + if(_aY6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yI_]; + throw _aY6_} + try + {var + _aWT_=function(param){return 0}, + _aWU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yN_,1)}, + _aWV_=caml_call4(Runtime_ocaml_Runtime[63],_yO_,[0],_aWU_,_aWT_), + calcul_equivalence_loyer_minim$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_yP_,Runtime_ocaml_Runtime[12],_aWV_)} + catch(_aY5_) + {_aY5_ = caml_wrap_exception(_aY5_); + if(_aY5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yM_]; + throw _aY5_} + try + {var + _aWW_=function(param){return n_nombre_parts_d832_11}, + _aWX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yR_,1)}, + _aWY_=caml_call4(Runtime_ocaml_Runtime[63],_yS_,[0],_aWX_,_aWW_), + calcul_equivalence_loyer_minim$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_yT_,Runtime_ocaml_Runtime[15],_aWY_)} + catch(_aY4_) + {_aY4_ = caml_wrap_exception(_aY4_); + if(_aY4_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yQ_]; + throw _aY4_} + var + _aWZ_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_yU_,calcul_equivalence_loyer_minim), + [0, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_equivalence_loyer_minim$2]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_yV_,_aWZ_), + calcul_equivalence_loyer_minim$3=result$1[1]; + try + {var + _aW0_= + function(param) + {var + _aY1_= + caml_call2 + (Runtime_ocaml_Runtime[104], + coefficient_multiplicateur_d83, + n_nombre_parts_d832_11), + _aY2_= + caml_call2 + (Runtime_ocaml_Runtime[108],ressources_menage_arrondies,_aY1_), + _aY3_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$2); + return caml_call2(Runtime_ocaml_Runtime[97],_aY3_,_aY2_)}, + _aW1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_yX_,1)}, + _aW2_=caml_call4(Runtime_ocaml_Runtime[63],_yY_,[0],_aW1_,_aW0_)} + catch(_aY0_) + {_aY0_ = caml_wrap_exception(_aY0_); + if(_aY0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_yW_]; + throw _aY0_} + var + coefficient_prise_en_charge_d8= + caml_call3 + (Runtime_ocaml_Runtime[28],_yZ_,Runtime_ocaml_Runtime[15],_aW2_); + function _aW3_(allocation_mensuelle) + {try + {var + _aYR_= + function(param) + {var + _aYV_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _y1_, + Runtime_ocaml_Runtime[13], + allocation_mensuelle), + _aYW_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _y2_, + depense_nette_minimale_d832_10), + _aYV_), + _aYX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _y3_, + Runtime_ocaml_Runtime[13], + _aYW_), + depense_nette_minimale= + caml_call2(Runtime_ocaml_Runtime[27],_y4_,_aYX_), + _aYY_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_avec_d832_18, + coefficient_multiplicateur_d83$1); + if + (caml_call2 + (Runtime_ocaml_Runtime[118],depense_nette_minimale,_aYY_)) + {var + _aYZ_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_avec_d832_18, + coefficient_multiplicateur_d83$1); + return caml_call2 + (Runtime_ocaml_Runtime[98],_aYZ_,depense_nette_minimale)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$276)}, + _aYS_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_y5_,1)}, + _aYT_=caml_call4(Runtime_ocaml_Runtime[63],_y6_,[0],_aYS_,_aYR_); + return _aYT_} + catch(_aYU_) + {_aYU_ = caml_wrap_exception(_aYU_); + if(_aYU_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_y0_]; + throw _aYU_}} + var + abattement_depense_nette_minim= + caml_call3 + (Runtime_ocaml_Runtime[28],_y7_,Runtime_ocaml_Runtime[10],_aW3_); + try + {var + _aW4_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aW5_=function(param){return 0}, + _aW6_= + [0, + function(param) + {function _aYu_(param) + {if(copropriete) + {var _aYQ_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$8); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aYQ_)} + return plafond_mensualite_d832_10_3_b} + function _aYv_(param) + {var + _aYO_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aYP_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aYO_); + return caml_call2(Runtime_ocaml_Runtime[29],_y9_,_aYP_)} + var + _aYw_= + [0, + function(param) + {function _aYx_(param) + {if(copropriete) + {var _aYN_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$9); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aYN_)} + return plafond_mensualite_d832_10_3_b} + function _aYy_(param) + {var + _aYI_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aYJ_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aYI_), + _aYK_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aYL_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aYK_), + _aYM_=caml_call2(Runtime_ocaml_Runtime[83],_aYL_,_aYJ_); + return caml_call2(Runtime_ocaml_Runtime[29],_y__,_aYM_)} + var + _aYz_= + [0, + function(param) + {function _aYA_(param) + {if(copropriete) + {var + _aYH_= + caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$10); + return caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_mensualite_d832_10_3_b, + _aYH_)} + return plafond_mensualite_d832_10_3_b} + function _aYB_(param) + {var + _aYC_=caml_call3(Runtime_ocaml_Runtime[57],2020,10,1), + _aYD_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aYC_), + _aYE_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aYF_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aYE_), + _aYG_=caml_call2(Runtime_ocaml_Runtime[83],_aYF_,_aYD_); + return caml_call2(Runtime_ocaml_Runtime[29],_y$_,_aYG_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_za_,[0],_aYB_,_aYA_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_zb_,_aYz_,_aYy_,_aYx_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_zc_,_aYw_,_aYv_,_aYu_)}], + _aW7_=caml_call4(Runtime_ocaml_Runtime[63],_zd_,_aW6_,_aW5_,_aW4_)} + catch(_aYt_) + {_aYt_ = caml_wrap_exception(_aYt_); + if(_aYt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_y8_]; + throw _aYt_} + var + plafond_mensualite_d832_10_3_c= + caml_call3 + (Runtime_ocaml_Runtime[28],_ze_,Runtime_ocaml_Runtime[13],_aW7_); + try + {var + _aW8_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aW9_=function(param){return 0}, + _aW__= + function(param) + {function _aYq_(param){return calcul_equivalence_loyer_minim$3} + function _aYr_(param) + {switch(type_travaux_logement[0]) + {case 0:var _aYs_=0;break; + case 1:var _aYs_=1;break; + default:var _aYs_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_zg_,_aYs_)} + return caml_call4(Runtime_ocaml_Runtime[63],_zh_,[0],_aYr_,_aYq_)}, + _aW$_= + [0, + function(param) + {function _aYb_(param) + {var + ressources_menage_arrondies$0= + caml_call1 + (Runtime_ocaml_Runtime[70],ressources_menage_arrondies), + montant_limite_tranches_d832_1$0= + caml_call1 + (Runtime_ocaml_Runtime[70],montant_limite_tranches_d832_1), + _aYg_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$14), + _aYh_= + caml_call2 + (Runtime_ocaml_Runtime[103], + montant_limite_tranches_d832_1$0, + n_nombre_parts_d832_11); + if + (caml_call2 + (Runtime_ocaml_Runtime[117], + ressources_menage_arrondies$0, + _aYh_)) + var + _aYi_= + caml_call2 + (Runtime_ocaml_Runtime[103], + ressources_menage_arrondies$0, + taux_tranche_inferieure_d832_1); + else + var + _aYp_= + caml_call2 + (Runtime_ocaml_Runtime[103], + montant_limite_tranches_d832_1$0, + n_nombre_parts_d832_11), + _aYi_= + caml_call2 + (Runtime_ocaml_Runtime[103], + _aYp_, + taux_tranche_inferieure_d832_1); + var + _aYj_= + caml_call2 + (Runtime_ocaml_Runtime[103], + montant_limite_tranches_d832_1$0, + n_nombre_parts_d832_11); + if + (caml_call2 + (Runtime_ocaml_Runtime[127], + ressources_menage_arrondies$0, + _aYj_)) + var + _aYk_= + caml_call2 + (Runtime_ocaml_Runtime[103], + montant_limite_tranches_d832_1$0, + n_nombre_parts_d832_11), + _aYl_= + caml_call2 + (Runtime_ocaml_Runtime[97], + ressources_menage_arrondies$0, + _aYk_), + _aYm_= + caml_call2 + (Runtime_ocaml_Runtime[103], + _aYl_, + taux_tranche_superieure_d832_1); + else + var _aYm_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$277); + var + _aYn_=caml_call2(Runtime_ocaml_Runtime[92],_aYm_,_aYi_), + _aYo_=caml_call2(Runtime_ocaml_Runtime[107],_aYn_,_aYg_); + return caml_call1(Runtime_ocaml_Runtime[71],_aYo_)} + function _aYc_(param) + {switch(type_travaux_logement[0]) + {case 0:var _aYd_=0;break; + case 1:var _aYd_=0;break; + default:var _aYd_=1} + switch(type_travaux_logement[0]) + {case 0:var _aYe_=1;break; + case 1:var _aYe_=0;break; + default:var _aYe_=0} + var _aYf_=caml_call2(Runtime_ocaml_Runtime[84],_aYe_,_aYd_); + return caml_call2(Runtime_ocaml_Runtime[29],_zi_,_aYf_)} + return caml_call4(Runtime_ocaml_Runtime[63],_zj_,[0],_aYc_,_aYb_)}, + _aW__], + _aXa_=caml_call4(Runtime_ocaml_Runtime[63],_zk_,_aW$_,_aW9_,_aW8_)} + catch(_aYa_) + {_aYa_ = caml_wrap_exception(_aYa_); + if(_aYa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zf_]; + throw _aYa_} + var + mensualite_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_zl_,Runtime_ocaml_Runtime[13],_aXa_); + try + {var + _aXb_= + function(param) + {var + _aX6_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$9), + _aX7_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$10), + _aX8_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_005$2), + _aX9_= + caml_call2 + (Runtime_ocaml_Runtime[97], + coefficient_prise_en_charge_d8, + _aX8_), + _aX__=caml_call2(Runtime_ocaml_Runtime[103],_aX9_,_aX7_), + _aX$_=caml_call1(Runtime_ocaml_Runtime[78],_aX__); + return caml_call2(Runtime_ocaml_Runtime[107],_aX$_,_aX6_)}, + _aXc_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zn_,1)}, + _aXd_=caml_call4(Runtime_ocaml_Runtime[63],_zo_,[0],_aXc_,_aXb_)} + catch(_aX5_) + {_aX5_ = caml_wrap_exception(_aX5_); + if(_aX5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zm_]; + throw _aX5_} + var + coefficient_prise_en_charge_d8$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_zp_,Runtime_ocaml_Runtime[15],_aXd_); + function _aXe_(aide_finale) + {try + {var + _aXT_= + function(param) + {var + _aXX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zr_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aXY_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _zs_, + traitement_aide_finale_minorat), + _aXX_), + _aXZ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zt_, + Runtime_ocaml_Runtime[13], + _aXY_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_zu_,_aXZ_), + _aX0_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zv_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _aX1_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _zw_, + abattement_depense_nette_minim), + _aX0_), + _aX2_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zx_, + Runtime_ocaml_Runtime[13], + _aX1_), + _aX3_=caml_call2(Runtime_ocaml_Runtime[27],_zy_,_aX2_), + aide_finale$1= + caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,_aX3_), + _aX4_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$278); + return caml_call2 + (Runtime_ocaml_Runtime[128],aide_finale$1,_aX4_) + ?aide_finale$1 + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$279)}, + _aXU_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_zz_,1)}, + _aXV_=caml_call4(Runtime_ocaml_Runtime[63],_zA_,[0],_aXU_,_aXT_); + return _aXV_} + catch(_aXW_) + {_aXW_ = caml_wrap_exception(_aXW_); + if(_aXW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zq_]; + throw _aXW_}} + var + traitement_aide_finale_abattem= + caml_call3 + (Runtime_ocaml_Runtime[28],_zB_,Runtime_ocaml_Runtime[10],_aXe_); + try + {var + _aXf_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[123], + mensualite_principale, + plafond_mensualite_d832_10_3_c) + ?plafond_mensualite_d832_10_3_c + :mensualite_principale}, + _aXg_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zD_,1)}, + _aXh_=caml_call4(Runtime_ocaml_Runtime[63],_zE_,[0],_aXg_,_aXf_)} + catch(_aXS_) + {_aXS_ = caml_wrap_exception(_aXS_); + if(_aXS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zC_]; + throw _aXS_} + var + mensualite_eligible= + caml_call3 + (Runtime_ocaml_Runtime[28],_zF_,Runtime_ocaml_Runtime[13],_aXh_); + try + {var + _aXi_= + function(param) + {var _aXR_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$3); + return caml_call2 + (Runtime_ocaml_Runtime[127], + coefficient_prise_en_charge_d8$0, + _aXR_) + ?caml_call1(Runtime_ocaml_Runtime[39],cst_0_95$4) + :coefficient_prise_en_charge_d8$0}, + _aXj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zH_,1)}, + _aXk_=caml_call4(Runtime_ocaml_Runtime[63],_zI_,[0],_aXj_,_aXi_)} + catch(_aXQ_) + {_aXQ_ = caml_wrap_exception(_aXQ_); + if(_aXQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zG_]; + throw _aXQ_} + var + coefficient_prise_en_charge_d8$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_zJ_,Runtime_ocaml_Runtime[15],_aXk_); + function _aXl_(aide_finale) + {try + {var + _aXB_= + function(param) + {var + _aXF_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zL_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aXG_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _zM_, + traitement_aide_finale_abattem), + _aXF_), + _aXH_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zN_, + Runtime_ocaml_Runtime[13], + _aXG_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_zO_,_aXH_), + _aXI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zP_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _aXJ_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _zQ_, + contributions_sociales_dot_mon), + _aXI_), + _aXK_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _zR_, + Runtime_ocaml_Runtime[13], + _aXJ_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_zS_,_aXK_), + _aXL_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$1), + _aXM_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,crds), + _aXN_=caml_call2(Runtime_ocaml_Runtime[98],_aXM_,_aXL_), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_aXN_), + _aXO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$280), + _aXP_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[128],_aXP_,_aXO_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$281)}, + _aXC_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_zT_,1)}, + _aXD_=caml_call4(Runtime_ocaml_Runtime[63],_zU_,[0],_aXC_,_aXB_); + return _aXD_} + catch(_aXE_) + {_aXE_ = caml_wrap_exception(_aXE_); + if(_aXE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zK_]; + throw _aXE_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_zV_,Runtime_ocaml_Runtime[10],_aXl_); + try + {var + _aXm_= + function(param) + {var + _aXy_= + caml_call2 + (Runtime_ocaml_Runtime[93], + mensualite_eligible, + montant_forfaitaire_charges_d8), + _aXz_= + caml_call2(Runtime_ocaml_Runtime[98],_aXy_,mensualite_minimale), + aide_finale= + caml_call2 + (Runtime_ocaml_Runtime[104], + _aXz_, + coefficient_prise_en_charge_d8$1), + _aXA_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$282); + return caml_call2(Runtime_ocaml_Runtime[113],aide_finale,_aXA_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$283) + :aide_finale}, + _aXn_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_zX_,1)}, + _aXo_=caml_call4(Runtime_ocaml_Runtime[63],_zY_,[0],_aXn_,_aXm_)} + catch(_aXx_) + {_aXx_ = caml_wrap_exception(_aXx_); + if(_aXx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_zW_]; + throw _aXx_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_zZ_,Runtime_ocaml_Runtime[13],_aXo_); + function _aXp_(aide_finale) + {try + {var + _aXq_= + function(param) + {var + _aXu_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _z1_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aXv_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _z2_, + traitement_aide_finale_contrib), + _aXu_), + _aXw_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _z3_, + Runtime_ocaml_Runtime[13], + _aXv_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_z4_,_aXw_); + return caml_call2 + (Runtime_ocaml_Runtime[113], + aide_finale$0, + montant_minimal_aide_d832_10) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$284) + :aide_finale$0}, + _aXr_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_z5_,1)}, + _aXs_=caml_call4(Runtime_ocaml_Runtime[63],_z6_,[0],_aXr_,_aXq_); + return _aXs_} + catch(_aXt_) + {_aXt_ = caml_wrap_exception(_aXt_); + if(_aXt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_z0_]; + throw _aXt_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_z7_,Runtime_ocaml_Runtime[10],_aXp_); + return [0, + mensualite_eligible, + mensualite_minimale, + coefficient_prise_en_charge_d8$1, + aide_finale_formule, + traitement_aide_finale_montant]} + function eligibilite_aides_personnelle_(eligibilite_aides_personnelle_) + {var + menage=eligibilite_aides_personnelle_[1], + demandeur=eligibilite_aides_personnelle_[2], + date_courante=eligibilite_aides_personnelle_[3], + condition_logement_residence_p=eligibilite_aides_personnelle_[4], + condition_logement_surface=eligibilite_aides_personnelle_[5]; + function _aQU_(pret) + {try + {var + _aVU_=function(param){return 0}, + _aVV_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_z9_,1)}, + _aVW_=caml_call4(Runtime_ocaml_Runtime[63],_z__,[0],_aVV_,_aVU_); + return _aVW_} + catch(_aVX_) + {_aVX_ = caml_wrap_exception(_aVX_); + if(_aVX_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_z8_]; + throw _aVX_}} + caml_call3 + (Runtime_ocaml_Runtime[28],_z$_,Runtime_ocaml_Runtime[10],_aQU_); + try + {var + _aQV_=function(param){return 0}, + _aQW_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ab_,1)}, + _aQX_=caml_call4(Runtime_ocaml_Runtime[63],_Ac_,[0],_aQW_,_aQV_)} + catch(_aVT_) + {_aVT_ = caml_wrap_exception(_aVT_); + if(_aVT_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Aa_]; + throw _aVT_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Ad_,Runtime_ocaml_Runtime[12],_aQX_); + try + {var + _aQY_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1)}, + _aQZ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Af_,1)}, + _aQ0_=caml_call4(Runtime_ocaml_Runtime[63],_Ag_,[0],_aQZ_,_aQY_)} + catch(_aVS_) + {_aVS_ = caml_wrap_exception(_aVS_); + if(_aVS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ae_]; + throw _aVS_} + var + seuil_l822_3_parts_propriete= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ah_,Runtime_ocaml_Runtime[15],_aQ0_); + try + {var + _aQ1_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_1$0)}, + _aQ2_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Aj_,1)}, + _aQ3_=caml_call4(Runtime_ocaml_Runtime[63],_Ak_,[0],_aQ2_,_aQ1_)} + catch(_aVR_) + {_aVR_ = caml_wrap_exception(_aVR_); + if(_aVR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ai_]; + throw _aVR_} + var + seuil_l822_3_parts_usufruit= + caml_call3 + (Runtime_ocaml_Runtime[28],_Al_,Runtime_ocaml_Runtime[15],_aQ3_); + try + {var + _aQ4_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_3000000)}, + _aQ5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_An_,1)}, + _aQ6_=caml_call4(Runtime_ocaml_Runtime[63],_Ao_,[0],_aQ5_,_aQ4_)} + catch(_aVQ_) + {_aVQ_ = caml_wrap_exception(_aVQ_); + if(_aVQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Am_]; + throw _aVQ_} + var + seuil_l822_5_patrimoine= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ap_,Runtime_ocaml_Runtime[13],_aQ6_); + try + {var + _aQ7_= + function(param) + {var + _aVO_=0 === menage[2][6][0]?1:0, + _aVP_=0 === menage[2][4][0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[84],_aVP_,_aVO_)}, + _aQ8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ar_,1)}, + _aQ9_=caml_call4(Runtime_ocaml_Runtime[63],_As_,[0],_aQ8_,_aQ7_)} + catch(_aVN_) + {_aVN_ = caml_wrap_exception(_aVN_); + if(_aVN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Aq_]; + throw _aVN_} + var + usufruit_ou_propriete_famille= + caml_call3 + (Runtime_ocaml_Runtime[28],_At_,Runtime_ocaml_Runtime[12],_aQ9_); + try + {var + _aQ__=function(param){return 0}, + _aQ$_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Av_,1)}, + _aRa_= + [0, + function(param) + {function _aVK_(param){return 1} + function _aVL_(param) + {var _aVM_=caml_call1(Runtime_ocaml_Runtime[67],menage[2][7]); + return caml_call2(Runtime_ocaml_Runtime[29],_Aw_,_aVM_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Ax_,[0],_aVL_,_aVK_)}], + _aRb_=caml_call4(Runtime_ocaml_Runtime[63],_Ay_,_aRa_,_aQ$_,_aQ__)} + catch(_aVJ_) + {_aVJ_ = caml_wrap_exception(_aVJ_); + if(_aVJ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Au_]; + throw _aVJ_} + var + condition_non_ouverture_l822_9= + caml_call3 + (Runtime_ocaml_Runtime[28],_Az_,Runtime_ocaml_Runtime[12],_aRb_); + try + {var + _aRc_=function(param){return 0}, + _aRd_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_AB_,1)}, + _aRe_= + [0, + function(param) + {function _aVH_(param){return 1} + function _aVI_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_AC_,menage[6])} + return caml_call4(Runtime_ocaml_Runtime[63],_AD_,[0],_aVI_,_aVH_)}], + _aRf_=caml_call4(Runtime_ocaml_Runtime[63],_AE_,_aRe_,_aRd_,_aRc_)} + catch(_aVG_) + {_aVG_ = caml_wrap_exception(_aVG_); + if(_aVG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_AA_]; + throw _aVG_} + var + condition_non_ouverture_l822_8= + caml_call3 + (Runtime_ocaml_Runtime[28],_AF_,Runtime_ocaml_Runtime[12],_aRf_); + try + {var + _aRg_= + function(param) + {function _aVm_(param){return 0} + function _aVn_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_AH_,1)} + var + _aVo_= + [0, + function(param) + {function _aVp_(param){return 1} + function _aVq_(param) + {var + _aVr_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), + _aVs_=menage[4]; + switch(menage[5][0]) + {case 0: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$204); + break; + case 1: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$41); + break; + case 2: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$42); + break; + case 3: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$43); + break; + case 4: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$205); + break; + default: + var _aVt_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$44)} + var + _aVu_=caml_call2(Runtime_ocaml_Runtime[91],_aVt_,_aVs_), + nombre_personnes_logement= + caml_call2(Runtime_ocaml_Runtime[91],_aVu_,_aVr_), + _aVv_=caml_call1(Runtime_ocaml_Runtime[46],cst_9), + _aVw_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), + _aVx_=caml_call2(Runtime_ocaml_Runtime[91],menage[4],_aVw_), + _aVy_=caml_call2(Runtime_ocaml_Runtime[102],_aVx_,_aVv_); + switch(menage[5][0]) + {case 0: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$0); + break; + case 1: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16); + break; + case 2: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$0); + break; + case 3: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$1); + break; + case 4: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_9$1); + break; + default: + var _aVz_=caml_call1(Runtime_ocaml_Runtime[46],cst_16$2)} + var + condition_logement_surface_min= + caml_call2(Runtime_ocaml_Runtime[91],_aVz_,_aVy_), + _aVA_=caml_call1(Runtime_ocaml_Runtime[46],cst_8), + _aVB_= + caml_call2 + (Runtime_ocaml_Runtime[126],nombre_personnes_logement,_aVA_), + _aVC_=caml_call1(Runtime_ocaml_Runtime[46],cst_70), + _aVD_= + caml_call2 + (Runtime_ocaml_Runtime[126], + condition_logement_surface_min, + _aVC_); + if(caml_call2(Runtime_ocaml_Runtime[83],_aVD_,_aVB_)) + var + _aVE_=caml_call1(Runtime_ocaml_Runtime[46],cst_70$0), + _aVF_= + caml_call2(Runtime_ocaml_Runtime[126],menage[2][8],_aVE_); + else + var + _aVF_= + caml_call2 + (Runtime_ocaml_Runtime[126], + menage[2][8], + condition_logement_surface_min); + return caml_call2(Runtime_ocaml_Runtime[29],_AI_,_aVF_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_AJ_,[0],_aVq_,_aVp_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_AK_,_aVo_,_aVn_,_aVm_)}, + _aRh_=function(param){return 1}, + _aRi_= + [0,function(param){return caml_call1(condition_logement_surface,0)}], + _aRj_=caml_call4(Runtime_ocaml_Runtime[63],_AL_,_aRi_,_aRh_,_aRg_)} + catch(_aVl_) + {_aVl_ = caml_wrap_exception(_aVl_); + if(_aVl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_AG_]; + throw _aVl_} + var + condition_logement_surface$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_AM_,Runtime_ocaml_Runtime[12],_aRj_); + try + {var + _aRk_= + function(param) + {function _aVg_(param){return 0} + function _aVh_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_AO_,1)} + var + _aVi_= + [0, + function(param) + {function _aVj_(param){return 1} + function _aVk_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_AP_,menage[2][1])} + return caml_call4 + (Runtime_ocaml_Runtime[63],_AQ_,[0],_aVk_,_aVj_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_AR_,_aVi_,_aVh_,_aVg_)}, + _aRl_=function(param){return 1}, + _aRm_= + [0, + function(param) + {return caml_call1(condition_logement_residence_p,0)}], + _aRn_=caml_call4(Runtime_ocaml_Runtime[63],_AS_,_aRm_,_aRl_,_aRk_)} + catch(_aVf_) + {_aVf_ = caml_wrap_exception(_aVf_); + if(_aVf_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_AN_]; + throw _aVf_} + var + condition_logement_residence_p$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_AT_,Runtime_ocaml_Runtime[12],_aRn_); + try + {var + _aRo_=function(param){return demandeur[1]}, + _aRp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_AV_,1)}, + _aRq_=caml_call4(Runtime_ocaml_Runtime[63],_AW_,[0],_aRp_,_aRo_), + ouverture_droits_retraite_dot_= + caml_call3 + (Runtime_ocaml_Runtime[28],_AX_,Runtime_ocaml_Runtime[16],_aRq_)} + catch(_aVe_) + {_aVe_ = caml_wrap_exception(_aVe_); + if(_aVe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_AU_]; + throw _aVe_} + var + _aRr_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_AY_,ouverture_droits_retraite), + [0,ouverture_droits_retraite_dot_]), + result=caml_call2(Runtime_ocaml_Runtime[27],_AZ_,_aRr_), + ouverture_droits_retraite_dot_$0=result[1]; + try + {var + _aRs_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[93],demandeur[3][1],demandeur[3][2])}, + _aRt_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_A1_,1)}, + _aRu_=caml_call4(Runtime_ocaml_Runtime[63],_A2_,[0],_aRt_,_aRs_)} + catch(_aVd_) + {_aVd_ = caml_wrap_exception(_aVd_); + if(_aVd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_A0_]; + throw _aVd_} + var + patrimoine_total_demandeur= + caml_call3 + (Runtime_ocaml_Runtime[28],_A3_,Runtime_ocaml_Runtime[13],_aRu_); + try + {var + _aRv_=function(param){return 0}, + _aRw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_A5_,1)}, + _aRx_= + [0, + function(param) + {function _aU$_(param){return 1} + function _aVa_(param) + {var _aVb_=demandeur[2]; + if(0 === _aVb_[0]) + var _aVc_=1; + else + var conditions=_aVb_[1],_aVc_=conditions[1]; + return caml_call2(Runtime_ocaml_Runtime[29],_A6_,_aVc_)} + return caml_call4(Runtime_ocaml_Runtime[63],_A7_,[0],_aVa_,_aU$_)}], + _aRy_=caml_call4(Runtime_ocaml_Runtime[63],_A8_,_aRx_,_aRw_,_aRv_)} + catch(_aU__) + {_aU__ = caml_wrap_exception(_aU__); + if(_aU__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_A4_]; + throw _aU__} + var + condition_nationalite= + caml_call3 + (Runtime_ocaml_Runtime[28],_A9_,Runtime_ocaml_Runtime[12],_aRy_); + try + {var + _aRz_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aRA_=function(param){return 0}, + _aRB_= + function(param) + {function _aU3_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1088175)} + function _aU4_(param) + {var + _aU5_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _aU6_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aU5_), + _aU7_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _aU8_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aU7_), + _aU9_=caml_call2(Runtime_ocaml_Runtime[83],_aU8_,_aU6_); + return caml_call2(Runtime_ocaml_Runtime[29],_A$_,_aU9_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Ba_,[0],_aU4_,_aU3_)}, + _aRC_= + function(param) + {function _aUW_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1100144)} + function _aUX_(param) + {var + _aUY_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _aUZ_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aUY_), + _aU0_=caml_call3(Runtime_ocaml_Runtime[57],2022,1,1), + _aU1_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aU0_), + _aU2_=caml_call2(Runtime_ocaml_Runtime[83],_aU1_,_aUZ_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bb_,_aU2_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Bc_,[0],_aUX_,_aUW_)}, + _aRD_= + function(param) + {function _aUP_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1153302)} + function _aUQ_(param) + {var + _aUR_=caml_call3(Runtime_ocaml_Runtime[57],2024,1,1), + _aUS_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aUR_), + _aUT_=caml_call3(Runtime_ocaml_Runtime[57],2023,1,1), + _aUU_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aUT_), + _aUV_=caml_call2(Runtime_ocaml_Runtime[83],_aUU_,_aUS_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bd_,_aUV_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Be_,[0],_aUQ_,_aUP_)}, + _aRE_= + function(param) + {function _aUI_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1083840)} + function _aUJ_(param) + {var + _aUK_=caml_call3(Runtime_ocaml_Runtime[57],2021,1,1), + _aUL_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aUK_), + _aUM_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,4), + _aUN_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aUM_), + _aUO_=caml_call2(Runtime_ocaml_Runtime[83],_aUN_,_aUL_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bf_,_aUO_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Bg_,[0],_aUJ_,_aUI_)}, + _aRF_= + function(param) + {function _aUB_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1041840)} + function _aUC_(param) + {var + _aUD_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aUE_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aUD_), + _aUF_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _aUG_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aUF_), + _aUH_=caml_call2(Runtime_ocaml_Runtime[83],_aUG_,_aUE_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bh_,_aUH_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Bi_,[0],_aUC_,_aUB_)}, + _aRG_= + [0, + function(param) + {function _aUu_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_999840)} + function _aUv_(param) + {var + _aUw_=caml_call3(Runtime_ocaml_Runtime[57],2019,1,1), + _aUx_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aUw_), + _aUy_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,4), + _aUz_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aUy_), + _aUA_=caml_call2(Runtime_ocaml_Runtime[83],_aUz_,_aUx_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bj_,_aUA_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Bk_,[0],_aUv_,_aUu_)}, + _aRF_, + _aRE_, + _aRD_, + _aRC_, + _aRB_], + _aRH_=caml_call4(Runtime_ocaml_Runtime[63],_Bl_,_aRG_,_aRA_,_aRz_)} + catch(_aUt_) + {_aUt_ = caml_wrap_exception(_aUt_); + if(_aUt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_A__]; + throw _aUt_} + var + plafond_individuel_l815_9_secu= + caml_call3 + (Runtime_ocaml_Runtime[28],_Bm_,Runtime_ocaml_Runtime[13],_aRH_); + try + {var + _aRI_=function(param){return 0}, + _aRJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bo_,1)}, + _aRK_= + [0, + function(param) + {function _aUh_(param){return 0} + function _aUi_(param) + {var _aUs_=0 === menage[2][5][0]?1:0; + return caml_call2(Runtime_ocaml_Runtime[29],_Bp_,_aUs_)} + var + _aUj_= + [0, + function(param) + {function _aUk_(param){return 1} + function _aUl_(param) + {var _aUm_=menage[2][5]; + if(0 === _aUm_[0]) + var _aUn_=1; + else + var + personne=_aUm_[1], + _aUo_=personne[2], + _aUp_=caml_call3(Runtime_ocaml_Runtime[60],30,0,0), + _aUq_= + caml_call2(Runtime_ocaml_Runtime[94],personne[1],_aUp_), + _aUr_= + caml_call2(Runtime_ocaml_Runtime[125],_aUq_,date_courante), + _aUn_=caml_call2(Runtime_ocaml_Runtime[84],_aUr_,_aUo_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bq_,_aUn_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Br_,[0],_aUl_,_aUk_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Bs_,_aUj_,_aUi_,_aUh_)}], + _aRL_=caml_call4(Runtime_ocaml_Runtime[63],_Bt_,_aRK_,_aRJ_,_aRI_)} + catch(_aUg_) + {_aUg_ = caml_wrap_exception(_aUg_); + if(_aUg_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Bn_]; + throw _aUg_} + var + condition_logement_location_ti= + caml_call3 + (Runtime_ocaml_Runtime[28],_Bu_,Runtime_ocaml_Runtime[12],_aRL_); + try + {var + _aRM_=function(param){return 0}, + _aRN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Bw_,1)}, + _aRO_= + [0, + function(param) + {function _aT3_(param){return 1} + function _aT4_(param) + {switch(menage[2][3][0]) + {case 0:var _aUf_=1;break; + case 1:var _aUf_=1;break; + case 2:var _aUf_=menage[2][1];break; + case 3:var _aUf_=1;break; + default:var _aUf_=1} + return caml_call2(Runtime_ocaml_Runtime[29],_Bx_,_aUf_)} + var + _aT5_= + [0, + function(param) + {function _aT6_(param){return 0} + function _aT7_(param) + {switch(menage[2][3][0]) + {case 0: + var + usufruit_ou_propriete_famille$0= + usufruit_ou_propriete_famille; + break; + case 1:var usufruit_ou_propriete_famille$0=0;break; + case 2:var usufruit_ou_propriete_famille$0=0;break; + case 3:var usufruit_ou_propriete_famille$0=0;break; + default:var usufruit_ou_propriete_famille$0=0} + return caml_call2 + (Runtime_ocaml_Runtime[29], + _By_, + usufruit_ou_propriete_famille$0)} + var + _aT8_= + [0, + function(param) + {function _aT9_(param){return 1} + function _aT__(param) + {var _aT$_=menage[2][6]; + if(0 === _aT$_[0]) + var parts=_aT$_[1],parts$0=parts; + else + var parts$0=caml_call1(Runtime_ocaml_Runtime[39],cst_0$286); + var + _aUa_= + caml_call2 + (Runtime_ocaml_Runtime[112], + parts$0, + seuil_l822_3_parts_usufruit), + _aUb_=menage[2][4]; + if(0 === _aUb_[0]) + var parts$1=_aUb_[1],parts$2=parts$1; + else + var parts$2=caml_call1(Runtime_ocaml_Runtime[39],cst_0$285); + var + _aUc_= + caml_call2 + (Runtime_ocaml_Runtime[112], + parts$2, + seuil_l822_3_parts_propriete), + _aUd_=caml_call2(Runtime_ocaml_Runtime[83],_aUc_,_aUa_), + _aUe_= + caml_call2 + (Runtime_ocaml_Runtime[83], + usufruit_ou_propriete_famille, + _aUd_); + return caml_call2(Runtime_ocaml_Runtime[29],_Bz_,_aUe_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_BA_,[0],_aT__,_aT9_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_BB_,_aT8_,_aT7_,_aT6_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_BC_,_aT5_,_aT4_,_aT3_)}], + _aRP_=caml_call4(Runtime_ocaml_Runtime[63],_BD_,_aRO_,_aRN_,_aRM_)} + catch(_aT2_) + {_aT2_ = caml_wrap_exception(_aT2_); + if(_aT2_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Bv_]; + throw _aT2_} + var + condition_logement_mode_occupa= + caml_call3 + (Runtime_ocaml_Runtime[28],_BE_,Runtime_ocaml_Runtime[12],_aRP_); + try + {var + _aRQ_=function(param){return 0}, + _aRR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BG_,1)}, + _aRS_= + [0, + function(param) + {function _aT0_(param){return 1} + function _aT1_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _BH_, + condition_logement_surface$0)} + return caml_call4(Runtime_ocaml_Runtime[63],_BI_,[0],_aT1_,_aT0_)}], + _aRT_=caml_call4(Runtime_ocaml_Runtime[63],_BJ_,_aRS_,_aRR_,_aRQ_)} + catch(_aTZ_) + {_aTZ_ = caml_wrap_exception(_aTZ_); + if(_aTZ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_BF_]; + throw _aTZ_} + var + condition_ouverture_l822_10_pe= + caml_call3 + (Runtime_ocaml_Runtime[28],_BK_,Runtime_ocaml_Runtime[12],_aRT_); + try + {var + _aRU_=function(param){return ouverture_droits_retraite_dot_$0}, + _aRV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BM_,1)}, + _aRW_=caml_call4(Runtime_ocaml_Runtime[63],_BN_,[0],_aRV_,_aRU_)} + catch(_aTY_) + {_aTY_ = caml_wrap_exception(_aTY_); + if(_aTY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_BL_]; + throw _aTY_} + var + age_l161_17_2_secu= + caml_call3 + (Runtime_ocaml_Runtime[28],_BO_,Runtime_ocaml_Runtime[17],_aRW_); + try + {var + _aRX_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[123], + patrimoine_total_demandeur, + seuil_l822_5_patrimoine) + ?patrimoine_total_demandeur + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$287)}, + _aRY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_BQ_,1)}, + _aRZ_= + [0, + function(param) + {function _aTI_(param){return demandeur[3][2]} + function _aTJ_(param) + {var + _aTX_= + caml_call2 + (Runtime_ocaml_Runtime[128], + patrimoine_total_demandeur, + seuil_l822_5_patrimoine); + return caml_call2(Runtime_ocaml_Runtime[29],_BR_,_aTX_)} + var + _aTK_= + [0, + function(param) + {function _aTL_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$288)} + function _aTM_(param) + {var _aTQ_=menage[1],_aTR_=0; + function _aTS_(acc,prestation) + {var + _aTU_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_BS_), + _aTV_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_BT_), + _aTW_=caml_call2(Runtime_ocaml_Runtime[84],_aTV_,_aTU_); + return caml_call2(Runtime_ocaml_Runtime[84],acc,_aTW_)} + var + _aTT_= + caml_call3(Runtime_ocaml_Runtime[136],_aTS_,_aTR_,_aTQ_); + return caml_call2(Runtime_ocaml_Runtime[29],_BU_,_aTT_)} + var + _aTN_= + [0, + function(param) + {function _aTO_(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$289)} + function _aTP_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_BV_,menage[2][2])} + return caml_call4 + (Runtime_ocaml_Runtime[63],_BW_,[0],_aTP_,_aTO_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_BX_,_aTN_,_aTM_,_aTL_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_BY_,_aTK_,_aTJ_,_aTI_)}], + _aR0_=caml_call4(Runtime_ocaml_Runtime[63],_BZ_,_aRZ_,_aRY_,_aRX_)} + catch(_aTH_) + {_aTH_ = caml_wrap_exception(_aTH_); + if(_aTH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_BP_]; + throw _aTH_} + caml_call3 + (Runtime_ocaml_Runtime[28],_B0_,Runtime_ocaml_Runtime[13],_aR0_); + try + {var + _aR1_=function(param){return 0}, + _aR2_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B2_,1)}, + _aR3_= + [0, + function(param) + {function _aTy_(param){return 1} + function _aTz_(param) + {var + _aTE_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_location_ti, + condition_ouverture_l822_10_pe), + _aTF_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_mode_occupa, + _aTE_), + _aTG_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_residence_p$0, + _aTF_); + return caml_call2(Runtime_ocaml_Runtime[29],_B3_,_aTG_)} + var + _aTA_= + [0, + function(param) + {function _aTB_(param){return 0} + function _aTC_(param) + {var + _aTD_= + caml_call2 + (Runtime_ocaml_Runtime[84], + condition_non_ouverture_l822_8, + condition_non_ouverture_l822_9); + return caml_call2(Runtime_ocaml_Runtime[29],_B4_,_aTD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_B5_,[0],_aTC_,_aTB_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_B6_,_aTA_,_aTz_,_aTy_)}], + _aR4_=caml_call4(Runtime_ocaml_Runtime[63],_B7_,_aR3_,_aR2_,_aR1_)} + catch(_aTx_) + {_aTx_ = caml_wrap_exception(_aTx_); + if(_aTx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_B1_]; + throw _aTx_} + var + eligibilite_logement= + caml_call3 + (Runtime_ocaml_Runtime[28],_B8_,Runtime_ocaml_Runtime[12],_aR4_); + try + {var + _aR5_= + function(param) + {var _aTw_=caml_call3(Runtime_ocaml_Runtime[60],5,0,0); + return caml_call2 + (Runtime_ocaml_Runtime[95],age_l161_17_2_secu,_aTw_)}, + _aR6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_B__,1)}, + _aR7_=caml_call4(Runtime_ocaml_Runtime[63],_B$_,[0],_aR6_,_aR5_)} + catch(_aTv_) + {_aTv_ = caml_wrap_exception(_aTv_); + if(_aTv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_B9_]; + throw _aTv_} + var + age_l351_8_1_secu= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ca_,Runtime_ocaml_Runtime[17],_aR7_); + try + {var + _aR8_=function(param){return 0}, + _aR9_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Cc_,1)}, + _aR__= + [0, + function(param) + {function _aTr_(param){return 1} + function _aTs_(param) + {var + _aTt_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_mode_occupa, + eligibilite_logement), + _aTu_= + caml_call2 + (Runtime_ocaml_Runtime[83],condition_nationalite,_aTt_); + return caml_call2(Runtime_ocaml_Runtime[29],_Cd_,_aTu_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Ce_,[0],_aTs_,_aTr_)}], + _aR$_=caml_call4(Runtime_ocaml_Runtime[63],_Cf_,_aR__,_aR9_,_aR8_)} + catch(_aTq_) + {_aTq_ = caml_wrap_exception(_aTq_); + if(_aTq_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Cb_]; + throw _aTq_} + var + eligibilite= + caml_call3 + (Runtime_ocaml_Runtime[28],_Cg_,Runtime_ocaml_Runtime[12],_aR$_); + function _aSa_(personne_a_charge) + {try + {var + _aS3_=function(param){return 0}, + _aS4_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Ci_,1)}, + _aS5_= + [0, + function(param) + {function _aS8_(param){return 1} + function _aS9_(param) + {if(0 === personne_a_charge[0]) + var _aS__=0; + else + var + parent=personne_a_charge[1], + _aS$_=parent[6], + _aTa_= + caml_call2 + (Runtime_ocaml_Runtime[94],parent[1],age_l161_17_2_secu), + _aTb_= + caml_call2(Runtime_ocaml_Runtime[120],_aTa_,date_courante), + _aTc_=caml_call2(Runtime_ocaml_Runtime[83],_aTb_,_aS$_), + _aTd_=caml_call3(Runtime_ocaml_Runtime[60],65,0,0), + _aTe_=caml_call2(Runtime_ocaml_Runtime[94],parent[1],_aTd_), + _aTf_= + caml_call2(Runtime_ocaml_Runtime[120],_aTe_,date_courante), + _aTg_=caml_call2(Runtime_ocaml_Runtime[83],parent[7],_aTf_), + _aTh_= + caml_call2 + (Runtime_ocaml_Runtime[94],parent[1],age_l351_8_1_secu), + _aTi_= + caml_call2(Runtime_ocaml_Runtime[120],_aTh_,date_courante), + _aTj_=caml_call2(Runtime_ocaml_Runtime[84],_aTi_,_aTg_), + _aTk_=caml_call2(Runtime_ocaml_Runtime[84],_aTj_,_aTc_), + _aTl_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25), + _aTm_= + caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_individuel_l815_9_secu, + _aTl_), + _aTn_=caml_call2(Runtime_ocaml_Runtime[118],parent[2],_aTm_), + _aTo_=caml_call2(Runtime_ocaml_Runtime[83],_aTn_,_aTk_), + _aTp_=caml_call2(Runtime_ocaml_Runtime[86],parent[4],_Ck_), + _aS__=caml_call2(Runtime_ocaml_Runtime[83],_aTp_,_aTo_); + return caml_call2(Runtime_ocaml_Runtime[29],_Cj_,_aS__)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Cl_,[0],_aS9_,_aS8_)}], + _aS6_=caml_call4(Runtime_ocaml_Runtime[63],_Cm_,_aS5_,_aS4_,_aS3_); + return _aS6_} + catch(_aS7_) + {_aS7_ = caml_wrap_exception(_aS7_); + if(_aS7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ch_]; + throw _aS7_}} + var + condition_2_r823_4= + caml_call3 + (Runtime_ocaml_Runtime[28],_Cn_,Runtime_ocaml_Runtime[10],_aSa_); + function _aSb_(personne_a_charge) + {try + {var + _aSF_=function(param){return 0}, + _aSG_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Cp_,1)}, + _aSH_= + function(param) + {function _aSY_(param){return 1} + function _aSZ_(param) + {if(0 === personne_a_charge[0]) + var + enfant=personne_a_charge[1], + _aS0_=caml_call3(Runtime_ocaml_Runtime[60],21,0,0), + _aS1_=caml_call2(Runtime_ocaml_Runtime[94],enfant[4],_aS0_), + _aS2_= + caml_call2(Runtime_ocaml_Runtime[125],_aS1_,date_courante); + else + var _aS2_=0; + return caml_call2(Runtime_ocaml_Runtime[29],_Cq_,_aS2_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Cr_,[0],_aSZ_,_aSY_)}, + _aSI_= + [0, + function(param) + {function _aSL_(param){return 1} + function _aSM_(param) + {var + _aSU_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Cs_, + embed_personne_a_charge, + personne_a_charge), + _aSV_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Ct_,condition_2_r823_4), + _aSU_), + _aSW_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Cu_, + Runtime_ocaml_Runtime[12], + _aSV_), + _aSX_=caml_call2(Runtime_ocaml_Runtime[27],_Cv_,_aSW_); + return caml_call2(Runtime_ocaml_Runtime[29],_Cw_,_aSX_)} + var + _aSN_= + [0, + function(param) + {function _aSO_(param){return 1} + function _aSP_(param) + {if(0 === personne_a_charge[0]) + var _aSQ_=0; + else + var + parent=personne_a_charge[1], + _aSR_=caml_call1(Runtime_ocaml_Runtime[39],cst_1_25$0), + _aSS_= + caml_call2 + (Runtime_ocaml_Runtime[104], + plafond_individuel_l815_9_secu, + _aSR_), + _aST_=caml_call2(Runtime_ocaml_Runtime[118],parent[2],_aSS_), + _aSQ_=caml_call2(Runtime_ocaml_Runtime[83],parent[5],_aST_); + return caml_call2(Runtime_ocaml_Runtime[29],_Cx_,_aSQ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Cy_,[0],_aSP_,_aSO_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Cz_,_aSN_,_aSM_,_aSL_)}, + _aSH_], + _aSJ_=caml_call4(Runtime_ocaml_Runtime[63],_CA_,_aSI_,_aSG_,_aSF_); + return _aSJ_} + catch(_aSK_) + {_aSK_ = caml_wrap_exception(_aSK_); + if(_aSK_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Co_]; + throw _aSK_}} + var + prise_en_compte_personne_a_cha= + caml_call3 + (Runtime_ocaml_Runtime[28],_CB_,Runtime_ocaml_Runtime[10],_aSb_); + try + {var + _aSc_= + function(param) + {var _aSA_=menage[3]; + function _aSB_(personne_a_charge) + {var + _aSC_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _CD_, + embed_personne_a_charge, + personne_a_charge), + _aSD_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _CE_, + prise_en_compte_personne_a_cha), + _aSC_), + _aSE_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _CF_, + Runtime_ocaml_Runtime[12], + _aSD_); + return caml_call2(Runtime_ocaml_Runtime[27],_CG_,_aSE_)} + return caml_call2(Runtime_ocaml_Runtime[90],_aSB_,_aSA_)}, + _aSd_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CH_,1)}, + _aSe_=caml_call4(Runtime_ocaml_Runtime[63],_CI_,[0],_aSd_,_aSc_)} + catch(_aSz_) + {_aSz_ = caml_wrap_exception(_aSz_); + if(_aSz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CC_]; + throw _aSz_} + var + _aSf_=caml_call1(Runtime_ocaml_Runtime[18],embed_personne_a_charge), + personnes_a_charge_prises_en_c= + caml_call3(Runtime_ocaml_Runtime[28],_CJ_,_aSf_,_aSe_); + try + {var + _aSg_= + function(param) + {function _aSv_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var enfant=personne_a_charge[1];return 0 === enfant[7][0]?0:1} + return 0} + var + _aSw_= + caml_call2 + (Runtime_ocaml_Runtime[90], + _aSv_, + personnes_a_charge_prises_en_c); + function _aSx_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var enfant=personne_a_charge[1],_aSy_=enfant[7]; + if(0 === _aSy_[0]) + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$290); + var coeff=_aSy_[1]; + return coeff} + return caml_call1(Runtime_ocaml_Runtime[39],cst_0$291)} + return caml_call2(Runtime_ocaml_Runtime[87],_aSx_,_aSw_)}, + _aSh_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CL_,1)}, + _aSi_=caml_call4(Runtime_ocaml_Runtime[63],_CM_,[0],_aSh_,_aSg_)} + catch(_aSu_) + {_aSu_ = caml_wrap_exception(_aSu_); + if(_aSu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CK_]; + throw _aSu_} + var + _aSj_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_CN_,_aSj_,_aSi_); + try + {var + _aSk_= + function(param) + {return caml_call1 + (Runtime_ocaml_Runtime[68],personnes_a_charge_prises_en_c)}, + _aSl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CP_,1)}, + _aSm_=caml_call4(Runtime_ocaml_Runtime[63],_CQ_,[0],_aSl_,_aSk_)} + catch(_aSt_) + {_aSt_ = caml_wrap_exception(_aSt_); + if(_aSt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CO_]; + throw _aSt_} + var + nombre_personnes_a_charge_pris= + caml_call3 + (Runtime_ocaml_Runtime[28],_CR_,Runtime_ocaml_Runtime[14],_aSm_); + try + {var + _aSn_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2), + _aSo_= + caml_call2 + (Runtime_ocaml_Runtime[112],seuil_l822_3_parts_usufruit,_aSn_)} + catch(_aSs_) + {_aSs_ = caml_wrap_exception(_aSs_); + if(_aSs_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CS_]; + throw _aSs_} + if(_aSo_) + {try + {var + _aSp_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$0), + _aSq_= + caml_call2 + (Runtime_ocaml_Runtime[112],seuil_l822_3_parts_propriete,_aSp_)} + catch(_aSr_) + {_aSr_ = caml_wrap_exception(_aSr_); + if(_aSr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CT_]; + throw _aSr_} + if(_aSq_) + return [0, + date_courante, + eligibilite, + nombre_personnes_a_charge_pris, + coefficents_enfants_garde_alte, + condition_2_r823_4]; + throw [0,Runtime_ocaml_Runtime[3],_CU_]} + throw [0,Runtime_ocaml_Runtime[3],_CV_]} + function ressources_aides_personnelle_l(ressources_aides_personnelle_l) + {var + ressources_demandeur=ressources_aides_personnelle_l[1], + ressources_conjoint=ressources_aides_personnelle_l[2], + personnes_vivant_habituellemen=ressources_aides_personnelle_l[3], + demandeur_exerce_activite_remu=ressources_aides_personnelle_l[4], + conjoint_exerce_activite_remun=ressources_aides_personnelle_l[5], + personnes_a_charge=ressources_aides_personnelle_l[6], + situation_familiale=ressources_aides_personnelle_l[7], + mode_occupation=ressources_aides_personnelle_l[8], + condition_age_bourse_enseignem=ressources_aides_personnelle_l[9], + demandeur_poursuit_des_etudes=ressources_aides_personnelle_l[10], + date_demande_ou_reexamen_droit=ressources_aides_personnelle_l[11], + paiement_logement_distinct_pro=ressources_aides_personnelle_l[12]; + try + {var + _aPR_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aPS_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_CX_,0)}, + _aPT_=caml_call4(Runtime_ocaml_Runtime[63],_CY_,[0],_aPS_,_aPR_)} + catch(_aQT_) + {_aQT_ = caml_wrap_exception(_aQT_); + if(_aQT_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_CW_]; + throw _aQT_} + caml_call3 + (Runtime_ocaml_Runtime[28],_CZ_,Runtime_ocaml_Runtime[13],_aPT_); + try + {var + _aPU_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_258900)}, + _aPV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C1_,1)}, + _aPW_=caml_call4(Runtime_ocaml_Runtime[63],_C2_,[0],_aPV_,_aPU_)} + catch(_aQS_) + {_aQS_ = caml_wrap_exception(_aQS_); + if(_aQS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_C0_]; + throw _aQS_} + var + montant_forfaitaire_r_822_8= + caml_call3 + (Runtime_ocaml_Runtime[28],_C3_,Runtime_ocaml_Runtime[13],_aPW_); + try + {var + _aPX_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_9500)}, + _aPY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C5_,1)}, + _aPZ_=caml_call4(Runtime_ocaml_Runtime[63],_C6_,[0],_aPY_,_aPX_)} + catch(_aQR_) + {_aQR_ = caml_wrap_exception(_aQR_); + if(_aQR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_C4_]; + throw _aQR_} + var + montant_forfaitaire_r_822_7= + caml_call3 + (Runtime_ocaml_Runtime[28],_C7_,Runtime_ocaml_Runtime[13],_aPZ_); + try + {var + _aP0_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aP1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_C9_,0)}, + _aP2_=caml_call4(Runtime_ocaml_Runtime[63],_C__,[0],_aP1_,_aP0_)} + catch(_aQQ_) + {_aQQ_ = caml_wrap_exception(_aQQ_); + if(_aQQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_C8_]; + throw _aQQ_} + var + ressources_forfaitaires_r822_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_C$_,Runtime_ocaml_Runtime[13],_aP2_); + try + {var + _aP3_= + function(param) + {function _aQM_(personne){return personne[2]} + var + _aQN_= + caml_call2 + (Runtime_ocaml_Runtime[87], + _aQM_, + personnes_vivant_habituellemen), + _aQO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$292); + function _aQP_(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[93],sum1,sum2)} + return caml_call3(Runtime_ocaml_Runtime[88],_aQP_,_aQO_,_aQN_)}, + _aP4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Db_,1)}, + _aP5_=caml_call4(Runtime_ocaml_Runtime[63],_Dc_,[0],_aP4_,_aP3_)} + catch(_aQL_) + {_aQL_ = caml_wrap_exception(_aQL_); + if(_aQL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Da_]; + throw _aQL_} + var + ressources_personnes_vivant_ha= + caml_call3 + (Runtime_ocaml_Runtime[28],_Dd_,Runtime_ocaml_Runtime[13],_aP5_); + try + {var + _aP6_= + function(param) + {var + _aQH_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$293), + _aQI_=caml_call1(Runtime_ocaml_Runtime[68],personnes_a_charge); + if(caml_call2(Runtime_ocaml_Runtime[86],_aQI_,_aQH_)) + var abattement=caml_call1(Runtime_ocaml_Runtime[31],cst_0$294); + else + var + _aQJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$45), + _aQK_=caml_call1(Runtime_ocaml_Runtime[68],personnes_a_charge), + abattement= + caml_call2(Runtime_ocaml_Runtime[116],_aQK_,_aQJ_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_90100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_135000); + switch(situation_familiale[0]) + {case 0:return abattement; + case 1:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$295); + case 2:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$296); + case 3:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$297); + case 4:return abattement; + default:return caml_call1(Runtime_ocaml_Runtime[31],cst_0$298)}}, + _aP7_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Df_,1)}, + _aP8_=caml_call4(Runtime_ocaml_Runtime[63],_Dg_,[0],_aP7_,_aP6_)} + catch(_aQG_) + {_aQG_ = caml_wrap_exception(_aQG_); + if(_aQG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_De_]; + throw _aQG_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Dh_,Runtime_ocaml_Runtime[13],_aP8_); + try + {var + _aP9_=function(param){return date_demande_ou_reexamen_droit}, + _aP__= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dj_,1)}, + _aP$_=caml_call4(Runtime_ocaml_Runtime[63],_Dk_,[0],_aP__,_aP9_), + base_mensuelle_allocations_fam= + caml_call3 + (Runtime_ocaml_Runtime[28],_Dl_,Runtime_ocaml_Runtime[16],_aP$_)} + catch(_aQF_) + {_aQF_ = caml_wrap_exception(_aQF_); + if(_aQF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Di_]; + throw _aQF_} + var + _aQa_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Dm_,base_mensuelle_allocations_fam$5), + [0,base_mensuelle_allocations_fam]), + result=caml_call2(Runtime_ocaml_Runtime[27],_Dn_,_aQa_), + base_mensuelle_allocations_fam$0=result[1]; + try + {var + _aQb_= + function(param) + {return 0 === paiement_logement_distinct_pro[0] + ?montant_forfaitaire_r_822_8 + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$299)}, + _aQc_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dp_,1)}, + _aQd_=caml_call4(Runtime_ocaml_Runtime[63],_Dq_,[0],_aQc_,_aQb_)} + catch(_aQE_) + {_aQE_ = caml_wrap_exception(_aQE_); + if(_aQE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Do_]; + throw _aQE_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Dr_,Runtime_ocaml_Runtime[13],_aQd_); + try + {var + _aQe_= + function(param) + {var + _aQD_= + caml_call2 + (Runtime_ocaml_Runtime[93], + ressources_demandeur, + ressources_conjoint); + return caml_call2 + (Runtime_ocaml_Runtime[93], + _aQD_, + ressources_personnes_vivant_ha)}, + _aQf_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dt_,1)}, + _aQg_= + [0, + function(param) + {function _aQw_(param){return ressources_forfaitaires_r822_2} + function _aQx_(param) + {var + _aQy_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_age_bourse_enseignem, + demandeur_poursuit_des_etudes); + switch(mode_occupation[0]) + {case 0:var _aQz_=0;break; + case 1:var _aQz_=1;break; + case 2:var _aQz_=0;break; + case 3:var _aQz_=0;break; + default:var _aQz_=0} + switch(mode_occupation[0]) + {case 0:var _aQA_=1;break; + case 1:var _aQA_=0;break; + case 2:var _aQA_=0;break; + case 3:var _aQA_=0;break; + default:var _aQA_=0} + var + _aQB_=caml_call2(Runtime_ocaml_Runtime[84],_aQA_,_aQz_), + _aQC_=caml_call2(Runtime_ocaml_Runtime[83],_aQB_,_aQy_); + return caml_call2(Runtime_ocaml_Runtime[29],_Du_,_aQC_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Dv_,[0],_aQx_,_aQw_)}], + _aQh_=caml_call4(Runtime_ocaml_Runtime[63],_Dw_,_aQg_,_aQf_,_aQe_)} + catch(_aQv_) + {_aQv_ = caml_wrap_exception(_aQv_); + if(_aQv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ds_]; + throw _aQv_} + var + ressources_prises_en_compte= + caml_call3 + (Runtime_ocaml_Runtime[28],_Dx_,Runtime_ocaml_Runtime[13],_aQh_); + try + {var + _aQi_= + function(param) + {var + _aQq_=caml_call1(Runtime_ocaml_Runtime[39],cst_12$15), + _aQr_= + caml_call2 + (Runtime_ocaml_Runtime[104], + base_mensuelle_allocations_fam$0, + _aQq_), + _aQs_= + caml_call2 + (Runtime_ocaml_Runtime[93], + ressources_demandeur, + ressources_conjoint), + _aQt_=caml_call2(Runtime_ocaml_Runtime[128],_aQs_,_aQr_), + _aQu_= + caml_call2 + (Runtime_ocaml_Runtime[83], + conjoint_exerce_activite_remun, + _aQt_); + return caml_call2 + (Runtime_ocaml_Runtime[83], + demandeur_exerce_activite_remu, + _aQu_) + ?montant_forfaitaire_r_822_7 + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$300)}, + _aQj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Dz_,1)}, + _aQk_=caml_call4(Runtime_ocaml_Runtime[63],_DA_,[0],_aQj_,_aQi_)} + catch(_aQp_) + {_aQp_ = caml_wrap_exception(_aQp_); + if(_aQp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Dy_]; + throw _aQp_} + caml_call3 + (Runtime_ocaml_Runtime[28],_DB_,Runtime_ocaml_Runtime[13],_aQk_); + try + {var + _aQl_=1, + _aQm_= + function(acc,personne) + {return caml_call2(Runtime_ocaml_Runtime[83],acc,personne[1])}, + _aQn_= + caml_call3 + (Runtime_ocaml_Runtime[136], + _aQm_, + _aQl_, + personnes_vivant_habituellemen)} + catch(_aQo_) + {_aQo_ = caml_wrap_exception(_aQo_); + if(_aQo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DC_]; + throw _aQo_} + if(_aQn_)return [0,ressources_prises_en_compte]; + throw [0,Runtime_ocaml_Runtime[3],_DD_]} + function eligibilite_prestations_famili(eligibilite_prestations_famili) + {var + date_courante=eligibilite_prestations_famili[1], + residence=eligibilite_prestations_famili[3]; + try + {var + _aOz_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],20,0,0)}, + _aOA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DF_,1)}, + _aOB_=caml_call4(Runtime_ocaml_Runtime[63],_DG_,[0],_aOA_,_aOz_)} + catch(_aPQ_) + {_aPQ_ = caml_wrap_exception(_aPQ_); + if(_aPQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DE_]; + throw _aPQ_} + var + age_l512_3_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_DH_,Runtime_ocaml_Runtime[17],_aOB_); + try + {var + _aOC_=function(param){return date_courante}, + _aOD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DJ_,1)}, + _aOE_=caml_call4(Runtime_ocaml_Runtime[63],_DK_,[0],_aOD_,_aOC_), + smic_dot_date_courante= + caml_call3 + (Runtime_ocaml_Runtime[28],_DL_,Runtime_ocaml_Runtime[16],_aOE_)} + catch(_aPP_) + {_aPP_ = caml_wrap_exception(_aPP_); + if(_aPP_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DI_]; + throw _aPP_} + try + {var + _aOF_=function(param){return residence}, + _aOG_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DN_,1)}, + _aOH_=caml_call4(Runtime_ocaml_Runtime[63],_DO_,[0],_aOG_,_aOF_), + smic_dot_residence= + caml_call3 + (Runtime_ocaml_Runtime[28],_DP_,embed_collectivite$0,_aOH_)} + catch(_aPO_) + {_aPO_ = caml_wrap_exception(_aPO_); + if(_aPO_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DM_]; + throw _aPO_} + var + _aOI_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_DQ_,smic$1), + [0,smic_dot_date_courante,smic_dot_residence]), + result=caml_call2(Runtime_ocaml_Runtime[27],_DR_,_aOI_), + smic_dot_brut_horaire=result[1]; + try + {var + _aOJ_=function(param){return 0}, + _aOK_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_DT_,1)}, + _aOL_= + [0, + function(param) + {function _aPB_(param){return 1} + function _aPC_(param) + {var + _aPD_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DU_), + _aPE_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DV_), + _aPF_=caml_call2(Runtime_ocaml_Runtime[84],_aPE_,_aPD_), + _aPG_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DW_), + _aPH_=caml_call2(Runtime_ocaml_Runtime[84],_aPG_,_aPF_), + _aPI_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DX_), + _aPJ_=caml_call2(Runtime_ocaml_Runtime[84],_aPI_,_aPH_), + _aPK_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DY_), + _aPL_=caml_call2(Runtime_ocaml_Runtime[84],_aPK_,_aPJ_), + _aPM_=caml_call2(Runtime_ocaml_Runtime[86],residence,_DZ_), + _aPN_=caml_call2(Runtime_ocaml_Runtime[84],_aPM_,_aPL_); + return caml_call2(Runtime_ocaml_Runtime[29],_D0_,_aPN_)} + return caml_call4(Runtime_ocaml_Runtime[63],_D1_,[0],_aPC_,_aPB_)}], + _aOM_=caml_call4(Runtime_ocaml_Runtime[63],_D2_,_aOL_,_aOK_,_aOJ_)} + catch(_aPA_) + {_aPA_ = caml_wrap_exception(_aPA_); + if(_aPA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_DS_]; + throw _aPA_} + var + regime_outre_mer_l751_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_D3_,Runtime_ocaml_Runtime[12],_aOM_); + try + {var + _aON_= + function(param) + {var + _aPx_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$1), + _aPy_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$1), + _aPz_= + caml_call2 + (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_aPy_); + return caml_call2(Runtime_ocaml_Runtime[104],_aPz_,_aPx_)}, + _aOO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_D5_,1)}, + _aOP_= + [0, + function(param) + {function _aPs_(param) + {var + _aPu_=caml_call1(Runtime_ocaml_Runtime[39],cst_169$2), + _aPv_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_55$2), + _aPw_= + caml_call2 + (Runtime_ocaml_Runtime[104],smic_dot_brut_horaire,_aPv_); + return caml_call2(Runtime_ocaml_Runtime[104],_aPw_,_aPu_)} + function _aPt_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_D6_,regime_outre_mer_l751_1)} + return caml_call4(Runtime_ocaml_Runtime[63],_D7_,[0],_aPt_,_aPs_)}], + _aOQ_=caml_call4(Runtime_ocaml_Runtime[63],_D8_,_aOP_,_aOO_,_aON_)} + catch(_aPr_) + {_aPr_ = caml_wrap_exception(_aPr_); + if(_aPr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_D4_]; + throw _aPr_} + var + plafond_l512_3_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_D9_,Runtime_ocaml_Runtime[13],_aOQ_); + function _aOR_(enfant) + {try + {var + _aPd_=function(param){return 0}, + _aPe_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_D$_,1)}, + _aPf_= + [0, + function(param) + {function _aPi_(param){return 1} + function _aPj_(param) + {var + _aPk_= + caml_call2 + (Runtime_ocaml_Runtime[118],enfant[3],plafond_l512_3_2); + switch(enfant[2][0]) + {case 0:var _aPl_=0;break; + case 1:var _aPl_=0;break; + default:var _aPl_=1} + switch(enfant[2][0]) + {case 0:var _aPm_=0;break; + case 1:var _aPm_=1;break; + default:var _aPm_=0} + var _aPn_=caml_call2(Runtime_ocaml_Runtime[84],_aPm_,_aPl_); + switch(enfant[2][0]) + {case 0:var _aPo_=1;break; + case 1:var _aPo_=0;break; + default:var _aPo_=0} + var + _aPp_=caml_call2(Runtime_ocaml_Runtime[84],_aPo_,_aPn_), + _aPq_=caml_call2(Runtime_ocaml_Runtime[83],_aPp_,_aPk_); + return caml_call2(Runtime_ocaml_Runtime[29],_Ea_,_aPq_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Eb_,[0],_aPj_,_aPi_)}], + _aPg_=caml_call4(Runtime_ocaml_Runtime[63],_Ec_,_aPf_,_aPe_,_aPd_); + return _aPg_} + catch(_aPh_) + {_aPh_ = caml_wrap_exception(_aPh_); + if(_aPh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_D__]; + throw _aPh_}} + var + conditions_hors_age= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ed_,Runtime_ocaml_Runtime[10],_aOR_); + function _aOS_(enfant) + {try + {var + _aOT_=function(param){return 0}, + _aOU_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Ef_,1)}, + _aOV_= + [0, + function(param) + {function _aOY_(param){throw Runtime_ocaml_Runtime[2]} + function _aOZ_(param){return 0} + var + _aO0_= + [0, + function(param) + {function _aO1_(param){return 1} + function _aO2_(param) + {switch(enfant[2][0]) + {case 0:var _aPa_=0;break; + case 1:var _aPa_=1;break; + default:var _aPa_=0} + switch(enfant[2][0]) + {case 0:var _aPb_=1;break; + case 1:var _aPb_=0;break; + default:var _aPb_=0} + var _aPc_=caml_call2(Runtime_ocaml_Runtime[84],_aPb_,_aPa_); + return caml_call2(Runtime_ocaml_Runtime[29],_Eg_,_aPc_)} + var + _aO3_= + [0, + function(param) + {function _aO4_(param){return 1} + function _aO5_(param) + {var + _aO6_= + caml_call2(Runtime_ocaml_Runtime[94],enfant[4],age_l512_3_2), + _aO7_= + caml_call2(Runtime_ocaml_Runtime[125],_aO6_,date_courante), + _aO8_= + caml_call2 + (Runtime_ocaml_Runtime[118],enfant[3],plafond_l512_3_2), + _aO9_=caml_call2(Runtime_ocaml_Runtime[83],_aO8_,_aO7_); + switch(enfant[2][0]) + {case 0:var _aO__=0;break; + case 1:var _aO__=0;break; + default:var _aO__=1} + var _aO$_=caml_call2(Runtime_ocaml_Runtime[83],_aO__,_aO9_); + return caml_call2(Runtime_ocaml_Runtime[29],_Eh_,_aO$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ei_,[0],_aO5_,_aO4_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ej_,_aO3_,_aO2_,_aO1_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ek_,_aO0_,_aOZ_,_aOY_)}], + _aOW_=caml_call4(Runtime_ocaml_Runtime[63],_El_,_aOV_,_aOU_,_aOT_); + return _aOW_} + catch(_aOX_) + {_aOX_ = caml_wrap_exception(_aOX_); + if(_aOX_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ee_]; + throw _aOX_}} + var + droit_ouvert= + caml_call3 + (Runtime_ocaml_Runtime[28],_Em_,Runtime_ocaml_Runtime[10],_aOS_); + return [0, + droit_ouvert, + conditions_hors_age, + age_l512_3_2, + regime_outre_mer_l751_1]} + function calcul_allocation_logement_loc(calcul_allocation_logement_loc) + {var + loyer_principal=calcul_allocation_logement_loc[1], + ressources_menage_arrondies=calcul_allocation_logement_loc[2], + beneficiaire_aide_adulte_ou_en=calcul_allocation_logement_loc[3], + date_courante=calcul_allocation_logement_loc[4], + nombre_personnes_a_charge=calcul_allocation_logement_loc[5], + situation_familiale_calcul_apl=calcul_allocation_logement_loc[6], + zone=calcul_allocation_logement_loc[7], + logement_est_chambre=calcul_allocation_logement_loc[8], + agees_ou_handicap_adultes_hebe=calcul_allocation_logement_loc[9], + type_aide=calcul_allocation_logement_loc[10], + colocation=calcul_allocation_logement_loc[11], + reduction_loyer_solidarite=calcul_allocation_logement_loc[12], + logement_meuble_d842_2=calcul_allocation_logement_loc[13], + changement_logement_d842_4=calcul_allocation_logement_loc[14]; + try + {var + _aNp_=function(param){return loyer_principal}, + _aNq_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Eo_,1)}, + _aNr_=caml_call4(Runtime_ocaml_Runtime[63],_Ep_,[0],_aNq_,_aNp_), + calcul_apl_locatif_dot_loyer_p= + caml_call3 + (Runtime_ocaml_Runtime[28],_Eq_,Runtime_ocaml_Runtime[13],_aNr_)} + catch(_aOy_) + {_aOy_ = caml_wrap_exception(_aOy_); + if(_aOy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_En_]; + throw _aOy_} + try + {var + _aNs_=function(param){return ressources_menage_arrondies}, + _aNt_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Es_,1)}, + _aNu_=caml_call4(Runtime_ocaml_Runtime[63],_Et_,[0],_aNt_,_aNs_), + calcul_apl_locatif_dot_ressour= + caml_call3 + (Runtime_ocaml_Runtime[28],_Eu_,Runtime_ocaml_Runtime[13],_aNu_)} + catch(_aOx_) + {_aOx_ = caml_wrap_exception(_aOx_); + if(_aOx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Er_]; + throw _aOx_} + try + {var + _aNv_=function(param){return beneficiaire_aide_adulte_ou_en}, + _aNw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ew_,1)}, + _aNx_=caml_call4(Runtime_ocaml_Runtime[63],_Ex_,[0],_aNw_,_aNv_), + calcul_apl_locatif_dot_benefic= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ey_,Runtime_ocaml_Runtime[12],_aNx_)} + catch(_aOw_) + {_aOw_ = caml_wrap_exception(_aOw_); + if(_aOw_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ev_]; + throw _aOw_} + try + {var + _aNy_=function(param){return date_courante}, + _aNz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EA_,1)}, + _aNA_=caml_call4(Runtime_ocaml_Runtime[63],_EB_,[0],_aNz_,_aNy_), + calcul_apl_locatif_dot_date_co= + caml_call3 + (Runtime_ocaml_Runtime[28],_EC_,Runtime_ocaml_Runtime[16],_aNA_)} + catch(_aOv_) + {_aOv_ = caml_wrap_exception(_aOv_); + if(_aOv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ez_]; + throw _aOv_} + try + {var + _aNB_=function(param){return nombre_personnes_a_charge}, + _aNC_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EE_,1)}, + _aND_=caml_call4(Runtime_ocaml_Runtime[63],_EF_,[0],_aNC_,_aNB_), + calcul_apl_locatif_dot_nombre_= + caml_call3 + (Runtime_ocaml_Runtime[28],_EG_,Runtime_ocaml_Runtime[14],_aND_)} + catch(_aOu_) + {_aOu_ = caml_wrap_exception(_aOu_); + if(_aOu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ED_]; + throw _aOu_} + try + {var + _aNE_=function(param){return situation_familiale_calcul_apl}, + _aNF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EI_,1)}, + _aNG_=caml_call4(Runtime_ocaml_Runtime[63],_EJ_,[0],_aNF_,_aNE_), + calcul_apl_locatif_dot_situati= + caml_call3 + (Runtime_ocaml_Runtime[28], + _EK_, + embed_situation_familiale_calc, + _aNG_)} + catch(_aOt_) + {_aOt_ = caml_wrap_exception(_aOt_); + if(_aOt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_EH_]; + throw _aOt_} + try + {var + _aNH_=function(param){return zone}, + _aNI_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EM_,1)}, + _aNJ_=caml_call4(Runtime_ocaml_Runtime[63],_EN_,[0],_aNI_,_aNH_), + calcul_apl_locatif_dot_zone= + caml_call3 + (Runtime_ocaml_Runtime[28],_EO_,embed_zone_d_habitation,_aNJ_)} + catch(_aOs_) + {_aOs_ = caml_wrap_exception(_aOs_); + if(_aOs_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_EL_]; + throw _aOs_} + try + {var + _aNK_=function(param){return logement_est_chambre}, + _aNL_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EQ_,1)}, + _aNM_=caml_call4(Runtime_ocaml_Runtime[63],_ER_,[0],_aNL_,_aNK_), + calcul_apl_locatif_dot_logemen= + caml_call3 + (Runtime_ocaml_Runtime[28],_ES_,Runtime_ocaml_Runtime[12],_aNM_)} + catch(_aOr_) + {_aOr_ = caml_wrap_exception(_aOr_); + if(_aOr_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_EP_]; + throw _aOr_} + try + {var + _aNN_=function(param){return agees_ou_handicap_adultes_hebe}, + _aNO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EU_,1)}, + _aNP_=caml_call4(Runtime_ocaml_Runtime[63],_EV_,[0],_aNO_,_aNN_), + calcul_apl_locatif_dot_agees_o= + caml_call3 + (Runtime_ocaml_Runtime[28],_EW_,Runtime_ocaml_Runtime[12],_aNP_)} + catch(_aOq_) + {_aOq_ = caml_wrap_exception(_aOq_); + if(_aOq_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_ET_]; + throw _aOq_} + try + {var + _aNQ_=function(param){return type_aide}, + _aNR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_EY_,1)}, + _aNS_=caml_call4(Runtime_ocaml_Runtime[63],_EZ_,[0],_aNR_,_aNQ_), + calcul_apl_locatif_dot_type_ai= + caml_call3 + (Runtime_ocaml_Runtime[28], + _E0_, + embed_type_aides_personnelle_l, + _aNS_)} + catch(_aOp_) + {_aOp_ = caml_wrap_exception(_aOp_); + if(_aOp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_EX_]; + throw _aOp_} + try + {var + _aNT_=function(param){return colocation}, + _aNU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E2_,1)}, + _aNV_=caml_call4(Runtime_ocaml_Runtime[63],_E3_,[0],_aNU_,_aNT_), + calcul_apl_locatif_dot_colocat= + caml_call3 + (Runtime_ocaml_Runtime[28],_E4_,Runtime_ocaml_Runtime[12],_aNV_)} + catch(_aOo_) + {_aOo_ = caml_wrap_exception(_aOo_); + if(_aOo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_E1_]; + throw _aOo_} + try + {var + _aNW_=function(param){return reduction_loyer_solidarite}, + _aNX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E6_,1)}, + _aNY_=caml_call4(Runtime_ocaml_Runtime[63],_E7_,[0],_aNX_,_aNW_), + calcul_apl_locatif_dot_reducti= + caml_call3 + (Runtime_ocaml_Runtime[28],_E8_,Runtime_ocaml_Runtime[13],_aNY_)} + catch(_aOn_) + {_aOn_ = caml_wrap_exception(_aOn_); + if(_aOn_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_E5_]; + throw _aOn_} + try + {var + _aNZ_=function(param){return logement_meuble_d842_2}, + _aN0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_E__,1)}, + _aN1_=caml_call4(Runtime_ocaml_Runtime[63],_E$_,[0],_aN0_,_aNZ_), + calcul_apl_locatif_dot_logemen$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_Fa_,Runtime_ocaml_Runtime[12],_aN1_)} + catch(_aOm_) + {_aOm_ = caml_wrap_exception(_aOm_); + if(_aOm_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_E9_]; + throw _aOm_} + var + _aN2_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Fb_,calcul_aide_personnalisee_loge), + [0, + calcul_apl_locatif_dot_loyer_p, + calcul_apl_locatif_dot_ressour, + calcul_apl_locatif_dot_benefic, + calcul_apl_locatif_dot_date_co, + calcul_apl_locatif_dot_nombre_, + calcul_apl_locatif_dot_situati, + calcul_apl_locatif_dot_zone, + calcul_apl_locatif_dot_logemen, + calcul_apl_locatif_dot_agees_o, + calcul_apl_locatif_dot_type_ai, + calcul_apl_locatif_dot_colocat, + calcul_apl_locatif_dot_reducti, + calcul_apl_locatif_dot_logemen$0]), + result=caml_call2(Runtime_ocaml_Runtime[27],_Fc_,_aN2_), + calcul_apl_locatif_dot_aide_fi=result[6], + calcul_apl_locatif_dot_traitem=result[7]; + function _aN3_(aide_finale) + {try + {var + _aOb_= + function(param) + {var + _aOj_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Fe_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aOk_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ff_, + calcul_apl_locatif_dot_traitem), + _aOj_), + _aOl_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Fg_, + Runtime_ocaml_Runtime[13], + _aOk_); + return caml_call2(Runtime_ocaml_Runtime[27],_Fh_,_aOl_)}, + _aOc_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Fi_,1)}, + _aOd_= + [0, + function(param) + {function _aOg_(param){return aide_finale} + function _aOh_(param) + {if(0 === changement_logement_d842_4[0]) + var + infos=changement_logement_d842_4[1], + _aOi_= + caml_call2 + (Runtime_ocaml_Runtime[128],loyer_principal,infos[1]); + else + var _aOi_=0; + return caml_call2(Runtime_ocaml_Runtime[29],_Fj_,_aOi_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Fk_,[0],_aOh_,_aOg_)}], + _aOe_=caml_call4(Runtime_ocaml_Runtime[63],_Fl_,_aOd_,_aOc_,_aOb_); + return _aOe_} + catch(_aOf_) + {_aOf_ = caml_wrap_exception(_aOf_); + if(_aOf_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Fd_]; + throw _aOf_}} + var + traitement_aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_Fm_,Runtime_ocaml_Runtime[10],_aN3_); + try + {var + _aN4_=function(param){return calcul_apl_locatif_dot_aide_fi}, + _aN5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fo_,1)}, + _aN6_= + [0, + function(param) + {function _aN9_(param) + {if(0 === changement_logement_d842_4[0]) + {var + infos=changement_logement_d842_4[1], + _aOa_= + caml_call2(Runtime_ocaml_Runtime[98],infos[1],infos[2]); + return caml_call2 + (Runtime_ocaml_Runtime[98],loyer_principal,_aOa_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$301)} + function _aN__(param) + {if(0 === changement_logement_d842_4[0]) + var + infos=changement_logement_d842_4[1], + _aN$_= + caml_call2 + (Runtime_ocaml_Runtime[128],loyer_principal,infos[1]); + else + var _aN$_=0; + return caml_call2(Runtime_ocaml_Runtime[29],_Fp_,_aN$_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Fq_,[0],_aN__,_aN9_)}], + _aN7_=caml_call4(Runtime_ocaml_Runtime[63],_Fr_,_aN6_,_aN5_,_aN4_)} + catch(_aN8_) + {_aN8_ = caml_wrap_exception(_aN8_); + if(_aN8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Fn_]; + throw _aN8_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_Fs_,Runtime_ocaml_Runtime[13],_aN7_); + return [0,aide_finale_formule,traitement_aide_finale]} + function calcul_allocation_logement_foy(calcul_allocation_logement_foy) + {var + type_logement_foyer=calcul_allocation_logement_foy[1], + date_conventionnement=calcul_allocation_logement_foy[2], + redevance=calcul_allocation_logement_foy[3], + ressources_menage_arrondies=calcul_allocation_logement_foy[4], + nombre_personnes_a_charge=calcul_allocation_logement_foy[5], + situation_familiale_calcul_apl=calcul_allocation_logement_foy[6], + zone=calcul_allocation_logement_foy[7], + date_courante=calcul_allocation_logement_foy[8], + categorie_equivalence_loyer_d8=calcul_allocation_logement_foy[9]; + try + {var + _aJi_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$3)}, + _aJj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fu_,1)}, + _aJk_=caml_call4(Runtime_ocaml_Runtime[63],_Fv_,[0],_aJj_,_aJi_)} + catch(_aNo_) + {_aNo_ = caml_wrap_exception(_aNo_); + if(_aNo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ft_]; + throw _aNo_} + var + montant_minimal_aide_d842_15= + caml_call3 + (Runtime_ocaml_Runtime[28],_Fw_,Runtime_ocaml_Runtime[13],_aJk_); + try + {var + _aJl_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$2)}, + _aJm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Fy_,1)}, + _aJn_=caml_call4(Runtime_ocaml_Runtime[63],_Fz_,[0],_aJm_,_aJl_)} + catch(_aNn_) + {_aNn_ = caml_wrap_exception(_aNn_); + if(_aNn_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Fx_]; + throw _aNn_} + var + montant_forfaitaire_d842_15= + caml_call3 + (Runtime_ocaml_Runtime[28],_FA_,Runtime_ocaml_Runtime[13],_aJn_); + try + {var + _aJo_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$0)}, + _aJp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FC_,1)}, + _aJq_=caml_call4(Runtime_ocaml_Runtime[63],_FD_,[0],_aJp_,_aJo_)} + catch(_aNm_) + {_aNm_ = caml_wrap_exception(_aNm_); + if(_aNm_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FB_]; + throw _aNm_} + var + montant_minimal_depense_nette_= + caml_call3 + (Runtime_ocaml_Runtime[28],_FE_,Runtime_ocaml_Runtime[13],_aJq_); + try + {var + _aJr_=function(param){return 1}, + _aJs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FG_,1)}, + _aJt_=caml_call4(Runtime_ocaml_Runtime[63],_FH_,[0],_aJs_,_aJr_), + calcul_nombre_parts_dot_condit= + caml_call3 + (Runtime_ocaml_Runtime[28],_FI_,Runtime_ocaml_Runtime[12],_aJt_)} + catch(_aNl_) + {_aNl_ = caml_wrap_exception(_aNl_); + if(_aNl_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FF_]; + throw _aNl_} + try + {var + _aJu_=function(param){return nombre_personnes_a_charge}, + _aJv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FK_,1)}, + _aJw_=caml_call4(Runtime_ocaml_Runtime[63],_FL_,[0],_aJv_,_aJu_), + calcul_nombre_parts_dot_nombre= + caml_call3 + (Runtime_ocaml_Runtime[28],_FM_,Runtime_ocaml_Runtime[14],_aJw_)} + catch(_aNk_) + {_aNk_ = caml_wrap_exception(_aNk_); + if(_aNk_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FJ_]; + throw _aNk_} + try + {var + _aJx_=function(param){return situation_familiale_calcul_apl}, + _aJy_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FO_,1)}, + _aJz_=caml_call4(Runtime_ocaml_Runtime[63],_FP_,[0],_aJy_,_aJx_), + calcul_nombre_parts_dot_situat= + caml_call3 + (Runtime_ocaml_Runtime[28], + _FQ_, + embed_situation_familiale_calc, + _aJz_)} + catch(_aNj_) + {_aNj_ = caml_wrap_exception(_aNj_); + if(_aNj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FN_]; + throw _aNj_} + var + _aJA_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_FR_,calcul_nombre_part_logement_fo), + [0, + calcul_nombre_parts_dot_condit, + calcul_nombre_parts_dot_nombre, + calcul_nombre_parts_dot_situat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_FS_,_aJA_), + calcul_nombre_parts_dot_n_nomb=result[1]; + try + {var + _aJB_=function(param){return date_courante}, + _aJC_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_FU_,1)}, + _aJD_=caml_call4(Runtime_ocaml_Runtime[63],_FV_,[0],_aJC_,_aJB_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_FW_,Runtime_ocaml_Runtime[16],_aJD_)} + catch(_aNi_) + {_aNi_ = caml_wrap_exception(_aNi_); + if(_aNi_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FT_]; + throw _aNi_} + var + _aJE_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_FX_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_FY_,_aJE_), + contributions_sociales_dot_mon=result$0[1]; + try + {var + _aJF_=function(param){return type_logement_foyer}, + _aJG_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F0_,1)}, + _aJH_=caml_call4(Runtime_ocaml_Runtime[63],_F1_,[0],_aJG_,_aJF_), + calcul_apl_logement_foyer_dot_= + caml_call3 + (Runtime_ocaml_Runtime[28],_F2_,embed_type_logement_foyer,_aJH_)} + catch(_aNh_) + {_aNh_ = caml_wrap_exception(_aNh_); + if(_aNh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_FZ_]; + throw _aNh_} + try + {var + _aJI_=function(param){return date_conventionnement}, + _aJJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F4_,1)}, + _aJK_=caml_call4(Runtime_ocaml_Runtime[63],_F5_,[0],_aJJ_,_aJI_), + calcul_apl_logement_foyer_dot_$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_F6_,Runtime_ocaml_Runtime[16],_aJK_)} + catch(_aNg_) + {_aNg_ = caml_wrap_exception(_aNg_); + if(_aNg_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_F3_]; + throw _aNg_} + try + {var + _aJL_=function(param){return ressources_menage_arrondies}, + _aJM_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_F8_,1)}, + _aJN_=caml_call4(Runtime_ocaml_Runtime[63],_F9_,[0],_aJM_,_aJL_), + calcul_apl_logement_foyer_dot_$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_F__,Runtime_ocaml_Runtime[13],_aJN_)} + catch(_aNf_) + {_aNf_ = caml_wrap_exception(_aNf_); + if(_aNf_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_F7_]; + throw _aNf_} + try + {var + _aJO_=function(param){return nombre_personnes_a_charge}, + _aJP_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ga_,1)}, + _aJQ_=caml_call4(Runtime_ocaml_Runtime[63],_Gb_,[0],_aJP_,_aJO_), + calcul_apl_logement_foyer_dot_$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Gc_,Runtime_ocaml_Runtime[14],_aJQ_)} + catch(_aNe_) + {_aNe_ = caml_wrap_exception(_aNe_); + if(_aNe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_F$_]; + throw _aNe_} + try + {var + _aJR_=function(param){return situation_familiale_calcul_apl}, + _aJS_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ge_,1)}, + _aJT_=caml_call4(Runtime_ocaml_Runtime[63],_Gf_,[0],_aJS_,_aJR_), + calcul_apl_logement_foyer_dot_$3= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Gg_, + embed_situation_familiale_calc, + _aJT_)} + catch(_aNd_) + {_aNd_ = caml_wrap_exception(_aNd_); + if(_aNd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gd_]; + throw _aNd_} + try + {var + _aJU_=function(param){return zone}, + _aJV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gi_,1)}, + _aJW_=caml_call4(Runtime_ocaml_Runtime[63],_Gj_,[0],_aJV_,_aJU_), + calcul_apl_logement_foyer_dot_$4= + caml_call3 + (Runtime_ocaml_Runtime[28],_Gk_,embed_zone_d_habitation,_aJW_)} + catch(_aNc_) + {_aNc_ = caml_wrap_exception(_aNc_); + if(_aNc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gh_]; + throw _aNc_} + try + {var + _aJX_=function(param){return date_courante}, + _aJY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gm_,1)}, + _aJZ_=caml_call4(Runtime_ocaml_Runtime[63],_Gn_,[0],_aJY_,_aJX_), + calcul_apl_logement_foyer_dot_$5= + caml_call3 + (Runtime_ocaml_Runtime[28],_Go_,Runtime_ocaml_Runtime[16],_aJZ_)} + catch(_aNb_) + {_aNb_ = caml_wrap_exception(_aNb_); + if(_aNb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gl_]; + throw _aNb_} + try + {var + _aJ0_=function(param){return redevance}, + _aJ1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Gq_,1)}, + _aJ2_=caml_call4(Runtime_ocaml_Runtime[63],_Gr_,[0],_aJ1_,_aJ0_), + calcul_apl_logement_foyer_dot_$6= + caml_call3 + (Runtime_ocaml_Runtime[28],_Gs_,Runtime_ocaml_Runtime[13],_aJ2_)} + catch(_aNa_) + {_aNa_ = caml_wrap_exception(_aNa_); + if(_aNa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gp_]; + throw _aNa_} + function calcul_apl_logement_foyer_dot_$7(param) + {function _aM9_(param){return 1} + function _aM__(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Gt_,1)} + var _aM$_=caml_call4(Runtime_ocaml_Runtime[63],_Gu_,[0],_aM__,_aM9_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _Gv_, + Runtime_ocaml_Runtime[12], + _aM$_)} + function calcul_apl_logement_foyer_dot_$8(param) + {throw Runtime_ocaml_Runtime[2]} + var + _aJ3_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Gw_,calcul_aide_personnalisee_loge$0), + [0, + calcul_apl_logement_foyer_dot_, + calcul_apl_logement_foyer_dot_$0, + calcul_apl_logement_foyer_dot_$1, + calcul_apl_logement_foyer_dot_$2, + calcul_apl_logement_foyer_dot_$3, + calcul_apl_logement_foyer_dot_$4, + calcul_apl_logement_foyer_dot_$5, + calcul_apl_logement_foyer_dot_$6, + calcul_apl_logement_foyer_dot_$7, + calcul_apl_logement_foyer_dot_$8]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_Gx_,_aJ3_), + calcul_apl_logement_foyer_dot_$9=result$1[7]; + try + {var + _aJ4_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aJ5_=function(param){return 0}, + _aJ6_= + function(param) + {function _aMX_(param) + {var _aM4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$302); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aM4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$3); + var + _aM5_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aM6_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$3), + _aM7_=caml_call2(Runtime_ocaml_Runtime[104],_aM6_,_aM5_), + _aM8_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$4); + return caml_call2(Runtime_ocaml_Runtime[93],_aM8_,_aM7_)} + function _aMY_(param) + {var + _aMZ_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aM0_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aMZ_), + _aM1_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aM2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aM1_), + _aM3_=caml_call2(Runtime_ocaml_Runtime[83],_aM2_,_aM0_); + return caml_call2(Runtime_ocaml_Runtime[29],_Gz_,_aM3_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GA_,[0],_aMY_,_aMX_)}, + _aJ7_= + [0, + function(param) + {function _aMO_(param) + {var _aMS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$303); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aMS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_5612$3); + var + _aMT_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aMU_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$3), + _aMV_=caml_call2(Runtime_ocaml_Runtime[104],_aMU_,_aMT_), + _aMW_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$4); + return caml_call2(Runtime_ocaml_Runtime[93],_aMW_,_aMV_)} + function _aMP_(param) + {var + _aMQ_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMR_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aMQ_); + return caml_call2(Runtime_ocaml_Runtime[29],_GB_,_aMR_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GC_,[0],_aMP_,_aMO_)}, + _aJ6_], + _aJ8_=caml_call4(Runtime_ocaml_Runtime[63],_GD_,_aJ7_,_aJ5_,_aJ4_)} + catch(_aMN_) + {_aMN_ = caml_wrap_exception(_aMN_); + if(_aMN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Gy_]; + throw _aMN_} + var + montant_forfaitaire_charges= + caml_call3 + (Runtime_ocaml_Runtime[28],_GE_,Runtime_ocaml_Runtime[13],_aJ8_); + try + {var + _aJ9_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aJ__=function(param){return 0}, + _aJ$_= + function(param) + {function _aMu_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26440)} + function _aMv_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aMG_=0;break; + case 1:var _aMG_=1;break; + case 2:var _aMG_=0;break; + default:var _aMG_=0} + var + _aMH_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMI_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aMH_), + _aMJ_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aMK_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aMJ_), + _aML_=caml_call2(Runtime_ocaml_Runtime[83],_aMK_,_aMI_), + _aMM_=caml_call2(Runtime_ocaml_Runtime[83],_aML_,_aMG_); + return caml_call2(Runtime_ocaml_Runtime[29],_GG_,_aMM_)} + var + _aMw_= + [0, + function(param) + {function _aMx_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_17012$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26440$0)} + function _aMy_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aMz_=0;break; + case 1:var _aMz_=0;break; + case 2:var _aMz_=0;break; + default:var _aMz_=1} + var + _aMA_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMB_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aMA_), + _aMC_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aMD_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aMC_), + _aME_=caml_call2(Runtime_ocaml_Runtime[83],_aMD_,_aMB_), + _aMF_=caml_call2(Runtime_ocaml_Runtime[83],_aME_,_aMz_); + return caml_call2(Runtime_ocaml_Runtime[29],_GH_,_aMF_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_GI_,[0],_aMy_,_aMx_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_GJ_,_aMw_,_aMv_,_aMu_)}, + _aKa_= + function(param) + {function _aMl_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_20640) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32073)} + function _aMm_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aMn_=0;break; + case 1:var _aMn_=0;break; + case 2:var _aMn_=1;break; + default:var _aMn_=0} + var + _aMo_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMp_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aMo_), + _aMq_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aMr_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aMq_), + _aMs_=caml_call2(Runtime_ocaml_Runtime[83],_aMr_,_aMp_), + _aMt_=caml_call2(Runtime_ocaml_Runtime[83],_aMs_,_aMn_); + return caml_call2(Runtime_ocaml_Runtime[29],_GK_,_aMt_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GL_,[0],_aMm_,_aMl_)}, + _aKb_= + function(param) + {function _aMc_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_8414) + :caml_call1(Runtime_ocaml_Runtime[31],cst_13100)} + function _aMd_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aMe_=1;break; + case 1:var _aMe_=0;break; + case 2:var _aMe_=0;break; + default:var _aMe_=0} + var + _aMf_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMg_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aMf_), + _aMh_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aMi_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aMh_), + _aMj_=caml_call2(Runtime_ocaml_Runtime[83],_aMi_,_aMg_), + _aMk_=caml_call2(Runtime_ocaml_Runtime[83],_aMj_,_aMe_); + return caml_call2(Runtime_ocaml_Runtime[29],_GM_,_aMk_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GN_,[0],_aMd_,_aMc_)}, + _aKc_= + function(param) + {function _aL1_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_17607) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27365)} + function _aL2_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aL__=0;break; + case 1:var _aL__=1;break; + case 2:var _aL__=0;break; + default:var _aL__=0} + var + _aL$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aMa_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aL$_), + _aMb_=caml_call2(Runtime_ocaml_Runtime[83],_aMa_,_aL__); + return caml_call2(Runtime_ocaml_Runtime[29],_GO_,_aMb_)} + var + _aL3_= + [0, + function(param) + {function _aL4_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_17607$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27365$0)} + function _aL5_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aL6_=0;break; + case 1:var _aL6_=0;break; + case 2:var _aL6_=0;break; + default:var _aL6_=1} + var + _aL7_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aL8_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aL7_), + _aL9_=caml_call2(Runtime_ocaml_Runtime[83],_aL8_,_aL6_); + return caml_call2(Runtime_ocaml_Runtime[29],_GP_,_aL9_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_GQ_,[0],_aL5_,_aL4_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_GR_,_aL3_,_aL2_,_aL1_)}, + _aKd_= + function(param) + {function _aLV_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21362) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33196)} + function _aLW_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aLX_=0;break; + case 1:var _aLX_=0;break; + case 2:var _aLX_=1;break; + default:var _aLX_=0} + var + _aLY_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aLZ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aLY_), + _aL0_=caml_call2(Runtime_ocaml_Runtime[83],_aLZ_,_aLX_); + return caml_call2(Runtime_ocaml_Runtime[29],_GS_,_aL0_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GT_,[0],_aLW_,_aLV_)}, + _aKe_= + [0, + function(param) + {function _aLP_(param) + {return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_8708) + :caml_call1(Runtime_ocaml_Runtime[31],cst_13559)} + function _aLQ_(param) + {switch(categorie_equivalence_loyer_d8[0]) + {case 0:var _aLR_=1;break; + case 1:var _aLR_=0;break; + case 2:var _aLR_=0;break; + default:var _aLR_=0} + var + _aLS_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aLT_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aLS_), + _aLU_=caml_call2(Runtime_ocaml_Runtime[83],_aLT_,_aLR_); + return caml_call2(Runtime_ocaml_Runtime[29],_GU_,_aLU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_GV_,[0],_aLQ_,_aLP_)}, + _aKd_, + _aKc_, + _aKb_, + _aKa_, + _aJ$_], + _aKf_=caml_call4(Runtime_ocaml_Runtime[63],_GW_,_aKe_,_aJ__,_aJ9_)} + catch(_aLO_) + {_aLO_ = caml_wrap_exception(_aLO_); + if(_aLO_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_GF_]; + throw _aLO_} + var + equivalence_loyer= + caml_call3 + (Runtime_ocaml_Runtime[28],_GX_,Runtime_ocaml_Runtime[13],_aKf_); + function _aKg_(aide_finale) + {try + {var + _aLI_= + function(param) + {var + _aLM_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$304), + _aLN_= + caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d842_15); + return caml_call2(Runtime_ocaml_Runtime[113],_aLN_,_aLM_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$305) + :caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d842_15)}, + _aLJ_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_GZ_,1)}, + _aLK_=caml_call4(Runtime_ocaml_Runtime[63],_G0_,[0],_aLJ_,_aLI_); + return _aLK_} + catch(_aLL_) + {_aLL_ = caml_wrap_exception(_aLL_); + if(_aLL_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_GY_]; + throw _aLL_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_G1_,Runtime_ocaml_Runtime[10],_aKg_); + try + {var + _aKh_=function(param){return ressources_menage_arrondies}, + _aKi_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G3_,1)}, + _aKj_=caml_call4(Runtime_ocaml_Runtime[63],_G4_,[0],_aKi_,_aKh_), + calcul_equivalence_loyer_minim$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_G5_,Runtime_ocaml_Runtime[13],_aKj_)} + catch(_aLH_) + {_aLH_ = caml_wrap_exception(_aLH_); + if(_aLH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_G2_]; + throw _aLH_} + try + {var + _aKk_=function(param){return 1}, + _aKl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G7_,1)}, + _aKm_=caml_call4(Runtime_ocaml_Runtime[63],_G8_,[0],_aKl_,_aKk_), + calcul_equivalence_loyer_minim$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_G9_,Runtime_ocaml_Runtime[12],_aKm_)} + catch(_aLG_) + {_aLG_ = caml_wrap_exception(_aLG_); + if(_aLG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_G6_]; + throw _aLG_} + try + {var + _aKn_=function(param){return calcul_nombre_parts_dot_n_nomb}, + _aKo_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_G$_,1)}, + _aKp_=caml_call4(Runtime_ocaml_Runtime[63],_Ha_,[0],_aKo_,_aKn_), + calcul_equivalence_loyer_minim$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Hb_,Runtime_ocaml_Runtime[15],_aKp_)} + catch(_aLF_) + {_aLF_ = caml_wrap_exception(_aLF_); + if(_aLF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_G__]; + throw _aLF_} + var + _aKq_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Hc_,calcul_equivalence_loyer_minim), + [0, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_equivalence_loyer_minim$2]), + result$2=caml_call2(Runtime_ocaml_Runtime[27],_Hd_,_aKq_), + calcul_equivalence_loyer_minim$3=result$2[1]; + try + {var + _aKr_=function(param){return calcul_apl_logement_foyer_dot_$9}, + _aKs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hf_,1)}, + _aKt_=caml_call4(Runtime_ocaml_Runtime[63],_Hg_,[0],_aKs_,_aKr_)} + catch(_aLE_) + {_aLE_ = caml_wrap_exception(_aLE_); + if(_aLE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_He_]; + throw _aLE_} + var + coefficient_prise_en_charge= + caml_call3 + (Runtime_ocaml_Runtime[28],_Hh_,Runtime_ocaml_Runtime[15],_aKt_); + function _aKu_(allocation_mensuelle) + {try + {var + _aLz_= + function(param) + {var + _aLD_= + caml_call2 + (Runtime_ocaml_Runtime[93], + equivalence_loyer, + montant_forfaitaire_charges); + return caml_call2 + (Runtime_ocaml_Runtime[98],_aLD_,allocation_mensuelle)}, + _aLA_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Hj_,1)}, + _aLB_=caml_call4(Runtime_ocaml_Runtime[63],_Hk_,[0],_aLA_,_aLz_); + return _aLB_} + catch(_aLC_) + {_aLC_ = caml_wrap_exception(_aLC_); + if(_aLC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Hi_]; + throw _aLC_}} + var + depense_nette_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_Hl_,Runtime_ocaml_Runtime[10],_aKu_); + try + {var + _aKv_=function(param){return calcul_equivalence_loyer_minim$3}, + _aKw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Hn_,1)}, + _aKx_=caml_call4(Runtime_ocaml_Runtime[63],_Ho_,[0],_aKw_,_aKv_)} + catch(_aLy_) + {_aLy_ = caml_wrap_exception(_aLy_); + if(_aLy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Hm_]; + throw _aLy_} + var + loyer_minimal= + caml_call3 + (Runtime_ocaml_Runtime[28],_Hp_,Runtime_ocaml_Runtime[13],_aKx_); + function _aKy_(allocation_mensuelle) + {try + {var + _aLm_= + function(param) + {var + _aLq_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Hr_, + Runtime_ocaml_Runtime[13], + allocation_mensuelle), + _aLr_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Hs_,depense_nette_minimale), + _aLq_), + _aLs_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ht_, + Runtime_ocaml_Runtime[13], + _aLr_), + _aLt_=caml_call2(Runtime_ocaml_Runtime[27],_Hu_,_aLs_); + if + (caml_call2 + (Runtime_ocaml_Runtime[113], + _aLt_, + montant_minimal_depense_nette_)) + {var + _aLu_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Hv_, + Runtime_ocaml_Runtime[13], + allocation_mensuelle), + _aLv_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Hw_,depense_nette_minimale), + _aLu_), + _aLw_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Hx_, + Runtime_ocaml_Runtime[13], + _aLv_), + _aLx_=caml_call2(Runtime_ocaml_Runtime[27],_Hy_,_aLw_); + return caml_call2 + (Runtime_ocaml_Runtime[98], + montant_minimal_depense_nette_, + _aLx_)} + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$306)}, + _aLn_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Hz_,1)}, + _aLo_=caml_call4(Runtime_ocaml_Runtime[63],_HA_,[0],_aLn_,_aLm_); + return _aLo_} + catch(_aLp_) + {_aLp_ = caml_wrap_exception(_aLp_); + if(_aLp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Hq_]; + throw _aLp_}} + var + abattement_depense_nette_minim= + caml_call3 + (Runtime_ocaml_Runtime[28],_HB_,Runtime_ocaml_Runtime[10],_aKy_); + try + {var + _aKz_= + function(param) + {var + _aLk_= + caml_call2 + (Runtime_ocaml_Runtime[93], + equivalence_loyer, + montant_forfaitaire_charges), + _aLl_=caml_call2(Runtime_ocaml_Runtime[98],_aLk_,loyer_minimal); + return caml_call2 + (Runtime_ocaml_Runtime[104], + _aLl_, + coefficient_prise_en_charge)}, + _aKA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_HD_,1)}, + _aKB_=caml_call4(Runtime_ocaml_Runtime[63],_HE_,[0],_aKA_,_aKz_)} + catch(_aLj_) + {_aLj_ = caml_wrap_exception(_aLj_); + if(_aLj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_HC_]; + throw _aLj_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_HF_,Runtime_ocaml_Runtime[13],_aKB_); + function _aKC_(aide_finale) + {try + {var + _aK9_= + function(param) + {var + _aLb_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HH_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aLc_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _HI_, + traitement_aide_finale_minorat), + _aLb_), + _aLd_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HJ_, + Runtime_ocaml_Runtime[13], + _aLc_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_HK_,_aLd_), + _aLe_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HL_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _aLf_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _HM_, + abattement_depense_nette_minim), + _aLe_), + _aLg_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HN_, + Runtime_ocaml_Runtime[13], + _aLf_), + abattement=caml_call2(Runtime_ocaml_Runtime[27],_HO_,_aLg_), + _aLh_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$307), + _aLi_= + caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,abattement); + return caml_call2(Runtime_ocaml_Runtime[113],_aLi_,_aLh_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$308) + :caml_call2 + (Runtime_ocaml_Runtime[98],aide_finale$0,abattement)}, + _aK__= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_HP_,1)}, + _aK$_=caml_call4(Runtime_ocaml_Runtime[63],_HQ_,[0],_aK__,_aK9_); + return _aK$_} + catch(_aLa_) + {_aLa_ = caml_wrap_exception(_aLa_); + if(_aLa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_HG_]; + throw _aLa_}} + var + traitement_aide_finale_depense= + caml_call3 + (Runtime_ocaml_Runtime[28],_HR_,Runtime_ocaml_Runtime[10],_aKC_); + function _aKD_(aide_finale) + {try + {var + _aK2_= + function(param) + {var + _aK6_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HT_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aK7_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _HU_, + traitement_aide_finale_depense), + _aK6_), + _aK8_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _HV_, + Runtime_ocaml_Runtime[13], + _aK7_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_HW_,_aK8_); + return caml_call2 + (Runtime_ocaml_Runtime[123],aide_finale$0,redevance) + ?redevance + :aide_finale$0}, + _aK3_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_HX_,1)}, + _aK4_=caml_call4(Runtime_ocaml_Runtime[63],_HY_,[0],_aK3_,_aK2_); + return _aK4_} + catch(_aK5_) + {_aK5_ = caml_wrap_exception(_aK5_); + if(_aK5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_HS_]; + throw _aK5_}} + var + traitement_aide_finale_redevan= + caml_call3 + (Runtime_ocaml_Runtime[28],_HZ_,Runtime_ocaml_Runtime[10],_aKD_); + function _aKE_(aide_finale) + {try + {var + _aKN_= + function(param) + {var + _aKR_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H1_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aKS_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _H2_, + traitement_aide_finale_redevan), + _aKR_), + _aKT_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H3_, + Runtime_ocaml_Runtime[13], + _aKS_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_H4_,_aKT_), + _aKU_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H5_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _aKV_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _H6_, + contributions_sociales_dot_mon), + _aKU_), + _aKW_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _H7_, + Runtime_ocaml_Runtime[13], + _aKV_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_H8_,_aKW_), + _aKX_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$2), + _aKY_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,crds), + _aKZ_=caml_call2(Runtime_ocaml_Runtime[98],_aKY_,_aKX_), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_aKZ_), + _aK0_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$309), + _aK1_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[128],_aK1_,_aK0_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$310)}, + _aKO_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_H9_,1)}, + _aKP_=caml_call4(Runtime_ocaml_Runtime[63],_H__,[0],_aKO_,_aKN_); + return _aKP_} + catch(_aKQ_) + {_aKQ_ = caml_wrap_exception(_aKQ_); + if(_aKQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_H0_]; + throw _aKQ_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_H$_,Runtime_ocaml_Runtime[10],_aKE_); + function _aKF_(aide_finale) + {try + {var + _aKG_= + function(param) + {var + _aKK_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ib_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aKL_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ic_, + traitement_aide_finale_contrib), + _aKK_), + _aKM_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Id_, + Runtime_ocaml_Runtime[13], + _aKL_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_Ie_,_aKM_); + return caml_call2 + (Runtime_ocaml_Runtime[113], + aide_finale$0, + montant_minimal_aide_d842_15) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$311) + :aide_finale$0}, + _aKH_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_If_,1)}, + _aKI_=caml_call4(Runtime_ocaml_Runtime[63],_Ig_,[0],_aKH_,_aKG_); + return _aKI_} + catch(_aKJ_) + {_aKJ_ = caml_wrap_exception(_aKJ_); + if(_aKJ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ia_]; + throw _aKJ_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ih_,Runtime_ocaml_Runtime[10],_aKF_); + return [0, + coefficient_prise_en_charge, + equivalence_loyer, + montant_forfaitaire_charges, + loyer_minimal, + aide_finale_formule, + traitement_aide_finale_montant]} + function calcul_allocation_logement_acc(calcul_allocation_logement_acc) + {var + ressources_menage_arrondies_ba=calcul_allocation_logement_acc[1], + nombre_personnes_a_charge=calcul_allocation_logement_acc[2], + situation_familiale_calcul_apl=calcul_allocation_logement_acc[3], + zone=calcul_allocation_logement_acc[4], + date_courante=calcul_allocation_logement_acc[5], + mensualite_principale=calcul_allocation_logement_acc[6], + situation_r822_11_13_17=calcul_allocation_logement_acc[7], + date_signature_pret=calcul_allocation_logement_acc[8], + type_travaux_logement=calcul_allocation_logement_acc[9], + local_habite_premiere_fois_ben=calcul_allocation_logement_acc[10], + date_entree_logement=calcul_allocation_logement_acc[11], + charges_mensuelles_pret=calcul_allocation_logement_acc[12], + copropriete=calcul_allocation_logement_acc[13]; + try + {var + _anN_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_500$3)}, + _anO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ij_,1)}, + _anP_=caml_call4(Runtime_ocaml_Runtime[63],_Ik_,[0],_anO_,_anN_)} + catch(_aJh_) + {_aJh_ = caml_wrap_exception(_aJh_); + if(_aJh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ii_]; + throw _aJh_} + var + montant_forfaitaire_d842_6= + caml_call3 + (Runtime_ocaml_Runtime[28],_Il_,Runtime_ocaml_Runtime[13],_anP_); + try + {var + _anQ_= + function(param) + {var + _aJf_=caml_call1(Runtime_ocaml_Runtime[39],cst_6_55957$0), + _aJg_=caml_call1(Runtime_ocaml_Runtime[39],cst_1$206); + return caml_call2(Runtime_ocaml_Runtime[107],_aJg_,_aJf_)}, + _anR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_In_,1)}, + _anS_=caml_call4(Runtime_ocaml_Runtime[63],_Io_,[0],_anR_,_anQ_)} + catch(_aJe_) + {_aJe_ = caml_wrap_exception(_aJe_); + if(_aJe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Im_]; + throw _aJe_} + var + taux_francs_vers_euros= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ip_,Runtime_ocaml_Runtime[15],_anS_); + try + {var + _anT_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1000$4)}, + _anU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ir_,1)}, + _anV_=caml_call4(Runtime_ocaml_Runtime[63],_Is_,[0],_anU_,_anT_)} + catch(_aJd_) + {_aJd_ = caml_wrap_exception(_aJd_); + if(_aJd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Iq_]; + throw _aJd_} + var + montant_minimal_aide_d842_6= + caml_call3 + (Runtime_ocaml_Runtime[28],_It_,Runtime_ocaml_Runtime[13],_anV_); + try + {var + _anW_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_1500$1)}, + _anX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Iv_,1)}, + _anY_=caml_call4(Runtime_ocaml_Runtime[63],_Iw_,[0],_anX_,_anW_)} + catch(_aJc_) + {_aJc_ = caml_wrap_exception(_aJc_); + if(_aJc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Iu_]; + throw _aJc_} + var + montant_forfaitaire_d842_11= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ix_,Runtime_ocaml_Runtime[13],_anY_); + try + {var + _anZ_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_390000)}, + _an0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Iz_,1)}, + _an1_=caml_call4(Runtime_ocaml_Runtime[63],_IA_,[0],_an0_,_anZ_)} + catch(_aJb_) + {_aJb_ = caml_wrap_exception(_aJb_); + if(_aJb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Iy_]; + throw _aJb_} + var + montant_forfaitaire_d842_12= + caml_call3 + (Runtime_ocaml_Runtime[28],_IB_,Runtime_ocaml_Runtime[13],_an1_); + try + {var + _an2_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_0_0234$1)}, + _an3_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_ID_,1)}, + _an4_=caml_call4(Runtime_ocaml_Runtime[63],_IE_,[0],_an3_,_an2_)} + catch(_aJa_) + {_aJa_ = caml_wrap_exception(_aJa_); + if(_aJa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IC_]; + throw _aJa_} + var + coefficient_d842_11= + caml_call3 + (Runtime_ocaml_Runtime[28],_IF_,Runtime_ocaml_Runtime[15],_an4_); + try + {var + _an5_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[39],cst_16_25$0)}, + _an6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IH_,1)}, + _an7_=caml_call4(Runtime_ocaml_Runtime[63],_II_,[0],_an6_,_an5_)} + catch(_aI$_) + {_aI$_ = caml_wrap_exception(_aI$_); + if(_aI$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IG_]; + throw _aI$_} + var + coefficient_d842_12= + caml_call3 + (Runtime_ocaml_Runtime[28],_IJ_,Runtime_ocaml_Runtime[15],_an7_); + try + {var + _an8_=function(param){return nombre_personnes_a_charge}, + _an9_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IL_,1)}, + _an__=caml_call4(Runtime_ocaml_Runtime[63],_IM_,[0],_an9_,_an8_), + calcul_nombre_parts_dot_nombre= + caml_call3 + (Runtime_ocaml_Runtime[28],_IN_,Runtime_ocaml_Runtime[14],_an__)} + catch(_aI__) + {_aI__ = caml_wrap_exception(_aI__); + if(_aI__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IK_]; + throw _aI__} + try + {var + _an$_=function(param){return situation_familiale_calcul_apl}, + _aoa_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IP_,1)}, + _aob_=caml_call4(Runtime_ocaml_Runtime[63],_IQ_,[0],_aoa_,_an$_), + calcul_nombre_parts_dot_situat= + caml_call3 + (Runtime_ocaml_Runtime[28], + _IR_, + embed_situation_familiale_calc, + _aob_)} + catch(_aI9_) + {_aI9_ = caml_wrap_exception(_aI9_); + if(_aI9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IO_]; + throw _aI9_} + var + _aoc_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_IS_,calcul_nombre_parts_accession_), + [0,calcul_nombre_parts_dot_nombre,calcul_nombre_parts_dot_situat]), + result=caml_call2(Runtime_ocaml_Runtime[27],_IT_,_aoc_), + calcul_nombre_parts_dot_n_nomb=result[1]; + try + {var + _aod_=function(param){return date_courante}, + _aoe_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_IV_,1)}, + _aof_=caml_call4(Runtime_ocaml_Runtime[63],_IW_,[0],_aoe_,_aod_), + contributions_sociales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_IX_,Runtime_ocaml_Runtime[16],_aof_)} + catch(_aI8_) + {_aI8_ = caml_wrap_exception(_aI8_); + if(_aI8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_IU_]; + throw _aI8_} + var + _aog_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_IY_,contributions_sociales_aides_p), + [0,contributions_sociales_dot_dat]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_IZ_,_aog_), + contributions_sociales_dot_mon=result$0[1]; + try + {var + _aoh_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aoi_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_I1_,0)}, + _aoj_= + function(param) + {function _aIP_(param) + {var _aI3_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$312); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aI3_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_5612$5); + var + _aI4_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aI5_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$4), + _aI6_=caml_call2(Runtime_ocaml_Runtime[104],_aI5_,_aI4_), + _aI7_=caml_call1(Runtime_ocaml_Runtime[31],cst_5612$6); + return caml_call2(Runtime_ocaml_Runtime[93],_aI7_,_aI6_)} + function _aIQ_(param) + {var + _aI1_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aI2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aI1_); + return caml_call2(Runtime_ocaml_Runtime[29],_I2_,_aI2_)} + var + _aIR_= + [0, + function(param) + {function _aIS_(param) + {var + _aIX_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aIY_=caml_call1(Runtime_ocaml_Runtime[31],cst_1272$5), + _aIZ_=caml_call2(Runtime_ocaml_Runtime[104],_aIY_,_aIX_), + _aI0_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2805$1) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5612$7); + return caml_call2(Runtime_ocaml_Runtime[93],_aI0_,_aIZ_)} + function _aIT_(param) + {var + _aIU_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aIV_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aIU_), + _aIW_= + caml_call2(Runtime_ocaml_Runtime[83],_aIV_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_I3_,_aIW_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_I4_,[0],_aIT_,_aIS_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_I5_,_aIR_,_aIQ_,_aIP_)}, + _aok_= + [0, + function(param) + {function _aIq_(param) + {var _aIK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$313); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIK_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_5422$5); + var + _aIL_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aIM_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$4), + _aIN_=caml_call2(Runtime_ocaml_Runtime[104],_aIM_,_aIL_), + _aIO_=caml_call1(Runtime_ocaml_Runtime[31],cst_5422$6); + return caml_call2(Runtime_ocaml_Runtime[93],_aIO_,_aIN_)} + function _aIr_(param) + {var + _aIF_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aIG_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aIF_), + _aIH_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aII_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aIH_), + _aIJ_=caml_call2(Runtime_ocaml_Runtime[83],_aII_,_aIG_); + return caml_call2(Runtime_ocaml_Runtime[29],_I6_,_aIJ_)} + var + _aIs_= + [0, + function(param) + {function _aIt_(param) + {var + _aIB_= + caml_call1 + (Runtime_ocaml_Runtime[69],nombre_personnes_a_charge), + _aIC_=caml_call1(Runtime_ocaml_Runtime[31],cst_1229$5), + _aID_=caml_call2(Runtime_ocaml_Runtime[104],_aIC_,_aIB_), + _aIE_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_2710$1) + :caml_call1(Runtime_ocaml_Runtime[31],cst_5422$7); + return caml_call2(Runtime_ocaml_Runtime[93],_aIE_,_aID_)} + function _aIu_(param) + {var + _aIv_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _aIw_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aIv_), + _aIx_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _aIy_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aIx_), + _aIz_=caml_call2(Runtime_ocaml_Runtime[83],_aIy_,_aIw_), + _aIA_= + caml_call2(Runtime_ocaml_Runtime[83],_aIz_,copropriete); + return caml_call2(Runtime_ocaml_Runtime[29],_I7_,_aIA_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_I8_,[0],_aIu_,_aIt_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_I9_,_aIs_,_aIr_,_aIq_)}, + _aoj_], + _aol_=caml_call4(Runtime_ocaml_Runtime[63],_I__,_aok_,_aoi_,_aoh_)} + catch(_aIp_) + {_aIp_ = caml_wrap_exception(_aIp_); + if(_aIp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_I0_]; + throw _aIp_} + var + montant_forfaitaire_charges= + caml_call3 + (Runtime_ocaml_Runtime[28],_I$_,Runtime_ocaml_Runtime[13],_aol_); + function _aom_(aide_finale) + {try + {var + _aIj_= + function(param) + {var + _aIn_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$314), + _aIo_= + caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d842_6); + return caml_call2(Runtime_ocaml_Runtime[113],_aIo_,_aIn_) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$315) + :caml_call2 + (Runtime_ocaml_Runtime[98], + aide_finale, + montant_forfaitaire_d842_6)}, + _aIk_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Jb_,1)}, + _aIl_=caml_call4(Runtime_ocaml_Runtime[63],_Jc_,[0],_aIk_,_aIj_); + return _aIl_} + catch(_aIm_) + {_aIm_ = caml_wrap_exception(_aIm_); + if(_aIm_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ja_]; + throw _aIm_}} + var + traitement_aide_finale_minorat= + caml_call3 + (Runtime_ocaml_Runtime[28],_Jd_,Runtime_ocaml_Runtime[10],_aom_); + function _aon_(date_calcul) + {try + {var + _ar3_=function(param){throw Runtime_ocaml_Runtime[2]}, + _ar4_=function(param){return 0}, + _ar5_= + function(param) + {function _aHE_(param) + {switch(zone[0]) + {case 0: + var _aHL_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$316); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHL_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31476) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37933); + var _aHM_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$207); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHM_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40787); + var _aHN_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$46); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41927); + var _aHO_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$26); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43106); + var _aHP_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$22); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44262); + var _aHQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$6); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHQ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_45200); + var + _aHR_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$7), + _aHS_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHR_), + _aHT_=caml_call1(Runtime_ocaml_Runtime[69],_aHS_), + _aHU_=caml_call1(Runtime_ocaml_Runtime[31],cst_3936), + _aHV_=caml_call2(Runtime_ocaml_Runtime[104],_aHU_,_aHT_), + _aHW_=caml_call1(Runtime_ocaml_Runtime[31],cst_45200$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aHW_,_aHV_); + case 1: + var _aHX_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$317); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHX_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27614) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33853); + var _aHY_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$208); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHY_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36646); + var _aHZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$47); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37915); + var _aH0_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$27); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH0_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39222); + var _aH1_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$23); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40510); + var _aH2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$8); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH2_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43378); + var + _aH3_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$9), + _aH4_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aH3_), + _aH5_=caml_call1(Runtime_ocaml_Runtime[69],_aH4_), + _aH6_=caml_call1(Runtime_ocaml_Runtime[31],cst_3771), + _aH7_=caml_call2(Runtime_ocaml_Runtime[104],_aH6_,_aH5_), + _aH8_=caml_call1(Runtime_ocaml_Runtime[31],cst_43378$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aH8_,_aH7_); + default: + var _aH9_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$318); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH9_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25904) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31419); + var _aH__=caml_call1(Runtime_ocaml_Runtime[46],cst_1$209); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34255); + var _aH$_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$48); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aH$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35670); + var _aIa_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIa_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37107); + var _aIb_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$24); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38521); + var _aIc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$10); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aIc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41392); + var + _aId_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$11), + _aIe_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aId_), + _aIf_=caml_call1(Runtime_ocaml_Runtime[69],_aIe_), + _aIg_=caml_call1(Runtime_ocaml_Runtime[31],cst_3588), + _aIh_=caml_call2(Runtime_ocaml_Runtime[104],_aIg_,_aIf_), + _aIi_=caml_call1(Runtime_ocaml_Runtime[31],cst_41392$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aIi_,_aIh_)}} + function _aHF_(param) + {var + _aHG_=caml_call3(Runtime_ocaml_Runtime[57],2019,10,1), + _aHH_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aHG_), + _aHI_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aHJ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aHI_), + _aHK_=caml_call2(Runtime_ocaml_Runtime[83],_aHJ_,_aHH_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jf_,_aHK_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jg_,[0],_aHF_,_aHE_)}, + _ar6_= + function(param) + {function _aGW_(param) + {switch(zone[0]) + {case 0: + var _aG6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$319); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG6_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31382) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37820); + var _aG7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$210); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40665); + var _aG8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$49); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG8_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41801); + var _aG9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$29); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42977); + var _aG__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$25); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44130); + var _aG$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$12); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aG$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_45064); + var + _aHa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$13), + _aHb_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHa_), + _aHc_=caml_call1(Runtime_ocaml_Runtime[69],_aHb_), + _aHd_=caml_call1(Runtime_ocaml_Runtime[31],cst_3924), + _aHe_=caml_call2(Runtime_ocaml_Runtime[104],_aHd_,_aHc_), + _aHf_=caml_call1(Runtime_ocaml_Runtime[31],cst_45064$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aHf_,_aHe_); + case 1: + var _aHg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$320); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHg_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27531) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33751); + var _aHh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$211); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHh_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36536); + var _aHi_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$50); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHi_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37801); + var _aHj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHj_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39105); + var _aHk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$26); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHk_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40389); + var _aHl_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$14); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHl_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43248); + var + _aHm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$15), + _aHn_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHm_), + _aHo_=caml_call1(Runtime_ocaml_Runtime[69],_aHn_), + _aHp_=caml_call1(Runtime_ocaml_Runtime[31],cst_3760), + _aHq_=caml_call2(Runtime_ocaml_Runtime[104],_aHp_,_aHo_), + _aHr_=caml_call1(Runtime_ocaml_Runtime[31],cst_43248$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aHr_,_aHq_); + default: + var _aHs_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$321); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHs_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25826) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31325); + var _aHt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$212); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34152); + var _aHu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$51); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35564); + var _aHv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$31); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36996); + var _aHw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$27); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHw_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38406); + var _aHx_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$16); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aHx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41268); + var + _aHy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$17), + _aHz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aHy_), + _aHA_=caml_call1(Runtime_ocaml_Runtime[69],_aHz_), + _aHB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3578), + _aHC_=caml_call2(Runtime_ocaml_Runtime[104],_aHB_,_aHA_), + _aHD_=caml_call1(Runtime_ocaml_Runtime[31],cst_41268$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aHD_,_aHC_)}} + function _aGX_(param) + {var + _aGY_=caml_call3(Runtime_ocaml_Runtime[57],2019,10,1), + _aGZ_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aGY_), + _aG0_=caml_call3(Runtime_ocaml_Runtime[57],2017,10,1), + _aG1_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aG0_), + _aG2_=caml_call2(Runtime_ocaml_Runtime[83],_aG1_,_aGZ_), + _aG3_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aG4_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aG3_), + _aG5_=caml_call2(Runtime_ocaml_Runtime[83],_aG4_,_aG2_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jh_,_aG5_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ji_,[0],_aGX_,_aGW_)}, + _ar7_= + function(param) + {function _aGc_(param) + {switch(zone[0]) + {case 0: + var _aGm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$322); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGm_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31148) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37538); + var _aGn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$213); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40362); + var _aGo_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$52); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGo_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41490); + var _aGp_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$32); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGp_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42657); + var _aGq_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGq_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43801); + var _aGr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$18); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGr_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44729); + var + _aGs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$19), + _aGt_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGs_), + _aGu_=caml_call1(Runtime_ocaml_Runtime[69],_aGt_), + _aGv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3895), + _aGw_=caml_call2(Runtime_ocaml_Runtime[104],_aGv_,_aGu_), + _aGx_=caml_call1(Runtime_ocaml_Runtime[31],cst_44729$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aGx_,_aGw_); + case 1: + var _aGy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$323); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGy_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27326) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33500$0); + var _aGz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$214); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36264); + var _aGA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$53); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGA_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37520); + var _aGB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$33); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGB_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38814); + var _aGC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$29); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGC_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40088); + var _aGD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$20); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGD_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42926); + var + _aGE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$21), + _aGF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGE_), + _aGG_=caml_call1(Runtime_ocaml_Runtime[69],_aGF_), + _aGH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3732), + _aGI_=caml_call2(Runtime_ocaml_Runtime[104],_aGH_,_aGG_), + _aGJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_42926$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aGJ_,_aGI_); + default: + var _aGK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$324); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGK_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25634) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31092); + var _aGL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$215); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGL_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33898); + var _aGM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$54); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGM_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35299); + var _aGN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36721); + var _aGO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38120); + var _aGP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$22); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aGP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40961); + var + _aGQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$23), + _aGR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aGQ_), + _aGS_=caml_call1(Runtime_ocaml_Runtime[69],_aGR_), + _aGT_=caml_call1(Runtime_ocaml_Runtime[31],cst_3551), + _aGU_=caml_call2(Runtime_ocaml_Runtime[104],_aGT_,_aGS_), + _aGV_=caml_call1(Runtime_ocaml_Runtime[31],cst_40961$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aGV_,_aGU_)}} + function _aGd_(param) + {var + _aGe_=caml_call3(Runtime_ocaml_Runtime[57],2017,10,1), + _aGf_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aGe_), + _aGg_=caml_call3(Runtime_ocaml_Runtime[57],2015,10,1), + _aGh_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aGg_), + _aGi_=caml_call2(Runtime_ocaml_Runtime[83],_aGh_,_aGf_), + _aGj_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aGk_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aGj_), + _aGl_=caml_call2(Runtime_ocaml_Runtime[83],_aGk_,_aGi_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jj_,_aGl_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jk_,[0],_aGd_,_aGc_)}, + _ar8_= + function(param) + {function _aFu_(param) + {switch(zone[0]) + {case 0: + var _aFE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$325); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFE_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_31123) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37508); + var _aFF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$216); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40330); + var _aFG_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$55); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFG_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41457); + var _aFH_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$35); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFH_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42623); + var _aFI_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$31); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFI_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43766); + var _aFJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$24); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFJ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44693); + var + _aFK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$25), + _aFL_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFK_), + _aFM_=caml_call1(Runtime_ocaml_Runtime[69],_aFL_), + _aFN_=caml_call1(Runtime_ocaml_Runtime[31],cst_3892), + _aFO_=caml_call2(Runtime_ocaml_Runtime[104],_aFN_,_aFM_), + _aFP_=caml_call1(Runtime_ocaml_Runtime[31],cst_44693$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aFP_,_aFO_); + case 1: + var _aFQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$326); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFQ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27304) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33473); + var _aFR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$217); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36235); + var _aFS_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$56); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37490); + var _aFT_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38783); + var _aFU_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$32); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40056); + var _aFV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$26); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42892); + var + _aFW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$27), + _aFX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFW_), + _aFY_=caml_call1(Runtime_ocaml_Runtime[69],_aFX_), + _aFZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3729), + _aF0_=caml_call2(Runtime_ocaml_Runtime[104],_aFZ_,_aFY_), + _aF1_=caml_call1(Runtime_ocaml_Runtime[31],cst_42892$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aF1_,_aF0_); + default: + var _aF2_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$327); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF2_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25614) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31067); + var _aF3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$218); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF3_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33871); + var _aF4_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$57); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35271); + var _aF5_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$37); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36692); + var _aF6_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$33); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF6_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38090); + var _aF7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$28); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aF7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40928); + var + _aF8_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$29), + _aF9_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aF8_), + _aF__=caml_call1(Runtime_ocaml_Runtime[69],_aF9_), + _aF$_=caml_call1(Runtime_ocaml_Runtime[31],cst_3548), + _aGa_=caml_call2(Runtime_ocaml_Runtime[104],_aF$_,_aF__), + _aGb_=caml_call1(Runtime_ocaml_Runtime[31],cst_40928$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aGb_,_aGa_)}} + function _aFv_(param) + {var + _aFw_=caml_call3(Runtime_ocaml_Runtime[57],2015,10,1), + _aFx_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aFw_), + _aFy_=caml_call3(Runtime_ocaml_Runtime[57],2014,10,1), + _aFz_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aFy_), + _aFA_=caml_call2(Runtime_ocaml_Runtime[83],_aFz_,_aFx_), + _aFB_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aFC_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aFB_), + _aFD_=caml_call2(Runtime_ocaml_Runtime[83],_aFC_,_aFA_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jl_,_aFD_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jm_,[0],_aFv_,_aFu_)}, + _ar9_= + function(param) + {function _aEM_(param) + {switch(zone[0]) + {case 0: + var _aEW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$328); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEW_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30947) + :caml_call1(Runtime_ocaml_Runtime[31],cst_37295); + var _aEX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$219); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40101); + var _aEY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$58); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEY_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41222); + var _aEZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42381); + var _aE0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE0_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43518); + var _aE1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$30); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_44440); + var + _aE2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$31), + _aE3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aE2_), + _aE4_=caml_call1(Runtime_ocaml_Runtime[69],_aE3_), + _aE5_=caml_call1(Runtime_ocaml_Runtime[31],cst_3870), + _aE6_=caml_call2(Runtime_ocaml_Runtime[104],_aE5_,_aE4_), + _aE7_=caml_call1(Runtime_ocaml_Runtime[31],cst_44440$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aE7_,_aE6_); + case 1: + var _aE8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$329); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE8_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27149) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33283); + var _aE9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$220); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36030); + var _aE__=caml_call1(Runtime_ocaml_Runtime[46],cst_2$59); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37278); + var _aE$_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$39); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aE$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38563); + var _aFa_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$35); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFa_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39829); + var _aFb_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$32); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42649); + var + _aFc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$33), + _aFd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFc_), + _aFe_=caml_call1(Runtime_ocaml_Runtime[69],_aFd_), + _aFf_=caml_call1(Runtime_ocaml_Runtime[31],cst_3708), + _aFg_=caml_call2(Runtime_ocaml_Runtime[104],_aFf_,_aFe_), + _aFh_=caml_call1(Runtime_ocaml_Runtime[31],cst_42659); + return caml_call2(Runtime_ocaml_Runtime[93],_aFh_,_aFg_); + default: + var _aFi_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$330); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFi_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25469) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30891); + var _aFj_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$221); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFj_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33679); + var _aFk_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$60); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFk_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35071); + var _aFl_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$40); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFl_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36484); + var _aFm_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFm_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37874); + var _aFn_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$34); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aFn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40696); + var + _aFo_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$35), + _aFp_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aFo_), + _aFq_=caml_call1(Runtime_ocaml_Runtime[69],_aFp_), + _aFr_=caml_call1(Runtime_ocaml_Runtime[31],cst_3528), + _aFs_=caml_call2(Runtime_ocaml_Runtime[104],_aFr_,_aFq_), + _aFt_=caml_call1(Runtime_ocaml_Runtime[31],cst_40696$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aFt_,_aFs_)}} + function _aEN_(param) + {var + _aEO_=caml_call3(Runtime_ocaml_Runtime[57],2014,10,1), + _aEP_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aEO_), + _aEQ_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _aER_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aEQ_), + _aES_=caml_call2(Runtime_ocaml_Runtime[83],_aER_,_aEP_), + _aET_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aEU_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aET_), + _aEV_=caml_call2(Runtime_ocaml_Runtime[83],_aEU_,_aES_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jn_,_aEV_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jo_,[0],_aEN_,_aEM_)}, + _ar__= + function(param) + {function _aD4_(param) + {switch(zone[0]) + {case 0: + var _aEc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$331); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEc_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_30296) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36510); + var _aEd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$222); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39257); + var _aEe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$61); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEe_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40354); + var _aEf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$41); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEf_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41489); + var _aEg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$37); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEg_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42602); + var _aEh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$36); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEh_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43505); + var + _aEi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$37), + _aEj_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEi_), + _aEk_=caml_call1(Runtime_ocaml_Runtime[69],_aEj_), + _aEl_=caml_call1(Runtime_ocaml_Runtime[31],cst_3789), + _aEm_=caml_call2(Runtime_ocaml_Runtime[104],_aEl_,_aEk_), + _aEn_=caml_call1(Runtime_ocaml_Runtime[31],cst_43505$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aEn_,_aEm_); + case 1: + var _aEo_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$332); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEo_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26578) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32582); + var _aEp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$223); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEp_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35272); + var _aEq_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$62); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEq_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36493); + var _aEr_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$42); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEr_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37751); + var _aEs_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEs_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38991); + var _aEt_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$38); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41751); + var + _aEu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$39), + _aEv_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEu_), + _aEw_=caml_call1(Runtime_ocaml_Runtime[69],_aEv_), + _aEx_=caml_call1(Runtime_ocaml_Runtime[31],cst_3630), + _aEy_=caml_call2(Runtime_ocaml_Runtime[104],_aEx_,_aEw_), + _aEz_=caml_call1(Runtime_ocaml_Runtime[31],cst_41751$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aEz_,_aEy_); + default: + var _aEA_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$333); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEA_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24933) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30241); + var _aEB_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$224); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEB_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32970); + var _aEC_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$63); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEC_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34333); + var _aED_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$43); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aED_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35716); + var _aEE_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$39); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEE_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37077); + var _aEF_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$40); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aEF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39839); + var + _aEG_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$41), + _aEH_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aEG_), + _aEI_=caml_call1(Runtime_ocaml_Runtime[69],_aEH_), + _aEJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3454), + _aEK_=caml_call2(Runtime_ocaml_Runtime[104],_aEJ_,_aEI_), + _aEL_=caml_call1(Runtime_ocaml_Runtime[31],cst_39839$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aEL_,_aEK_)}} + function _aD5_(param) + {var + _aD6_=caml_call3(Runtime_ocaml_Runtime[57],2013,1,1), + _aD7_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aD6_), + _aD8_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _aD9_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aD8_), + _aD__=caml_call2(Runtime_ocaml_Runtime[83],_aD9_,_aD7_), + _aD$_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aEa_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aD$_), + _aEb_=caml_call2(Runtime_ocaml_Runtime[83],_aEa_,_aD__); + return caml_call2(Runtime_ocaml_Runtime[29],_Jp_,_aEb_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jq_,[0],_aD5_,_aD4_)}, + _ar$_= + function(param) + {function _aDk_(param) + {switch(zone[0]) + {case 0: + var _aDu_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$334); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDu_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29996) + :caml_call1(Runtime_ocaml_Runtime[31],cst_36149); + var _aDv_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$225); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38868); + var _aDw_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$64); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDw_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39954); + var _aDx_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$44); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41078); + var _aDy_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$40); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDy_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42180); + var _aDz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$42); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_43074); + var + _aDA_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$43), + _aDB_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDA_), + _aDC_=caml_call1(Runtime_ocaml_Runtime[69],_aDB_), + _aDD_=caml_call1(Runtime_ocaml_Runtime[31],cst_3751), + _aDE_=caml_call2(Runtime_ocaml_Runtime[104],_aDD_,_aDC_), + _aDF_=caml_call1(Runtime_ocaml_Runtime[31],cst_43074$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aDF_,_aDE_); + case 1: + var _aDG_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$335); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDG_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26315) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32259); + var _aDH_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$226); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDH_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34923); + var _aDI_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$65); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDI_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36132); + var _aDJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$45); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDJ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37373); + var _aDK_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$41); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDK_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38605); + var _aDL_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$44); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDL_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41338); + var + _aDM_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$45), + _aDN_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDM_), + _aDO_=caml_call1(Runtime_ocaml_Runtime[69],_aDN_), + _aDP_=caml_call1(Runtime_ocaml_Runtime[31],cst_3594), + _aDQ_=caml_call2(Runtime_ocaml_Runtime[104],_aDP_,_aDO_), + _aDR_=caml_call1(Runtime_ocaml_Runtime[31],cst_41338$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aDR_,_aDQ_); + default: + var _aDS_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$336); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDS_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24686) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29942); + var _aDT_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$227); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32644); + var _aDU_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$66); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33993); + var _aDV_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$46); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35362); + var _aDW_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$42); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDW_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36710); + var _aDX_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$46); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39445); + var + _aDY_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$47), + _aDZ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDY_), + _aD0_=caml_call1(Runtime_ocaml_Runtime[69],_aDZ_), + _aD1_=caml_call1(Runtime_ocaml_Runtime[31],cst_3420), + _aD2_=caml_call2(Runtime_ocaml_Runtime[104],_aD1_,_aD0_), + _aD3_=caml_call1(Runtime_ocaml_Runtime[31],cst_39445$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aD3_,_aD2_)}} + function _aDl_(param) + {var + _aDm_=caml_call3(Runtime_ocaml_Runtime[57],2012,1,1), + _aDn_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aDm_), + _aDo_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _aDp_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aDo_), + _aDq_=caml_call2(Runtime_ocaml_Runtime[83],_aDp_,_aDn_), + _aDr_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aDs_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aDr_), + _aDt_=caml_call2(Runtime_ocaml_Runtime[83],_aDs_,_aDq_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jr_,_aDt_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Js_,[0],_aDl_,_aDk_)}, + _asa_= + function(param) + {function _aCC_(param) + {switch(zone[0]) + {case 0: + var _aCM_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$337); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCM_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29670) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35757); + var _aCN_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$228); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38445); + var _aCO_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$67); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39519); + var _aCP_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$47); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40601); + var _aCQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$43); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCQ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41721); + var _aCR_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$48); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42605); + var + _aCS_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$49), + _aCT_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCS_), + _aCU_=caml_call1(Runtime_ocaml_Runtime[69],_aCT_), + _aCV_=caml_call1(Runtime_ocaml_Runtime[31],cst_3710), + _aCW_=caml_call2(Runtime_ocaml_Runtime[104],_aCV_,_aCU_), + _aCX_=caml_call1(Runtime_ocaml_Runtime[31],cst_42605$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aCX_,_aCW_); + case 1: + var _aCY_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$338); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCY_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26029) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31908); + var _aCZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$229); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34643); + var _aC0_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC0_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35739); + var _aC1_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$48); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36970); + var _aC2_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$44); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC2_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38185); + var _aC3_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$50); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC3_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40888); + var + _aC4_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$51), + _aC5_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aC4_), + _aC6_=caml_call1(Runtime_ocaml_Runtime[69],_aC5_), + _aC7_=caml_call1(Runtime_ocaml_Runtime[31],cst_3555), + _aC8_=caml_call2(Runtime_ocaml_Runtime[104],_aC7_,_aC6_), + _aC9_=caml_call1(Runtime_ocaml_Runtime[31],cst_40888$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aC9_,_aC8_); + default: + var _aC__=caml_call1(Runtime_ocaml_Runtime[46],cst_0$339); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC__)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24417) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29616); + var _aC$_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$230); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aC$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32289); + var _aDa_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$69); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDa_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33623$0); + var _aDb_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$49); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34977); + var _aDc_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$45); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36311); + var _aDd_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$52); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aDd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39016); + var + _aDe_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$53), + _aDf_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aDe_), + _aDg_=caml_call1(Runtime_ocaml_Runtime[69],_aDf_), + _aDh_=caml_call1(Runtime_ocaml_Runtime[31],cst_3383), + _aDi_=caml_call2(Runtime_ocaml_Runtime[104],_aDh_,_aDg_), + _aDj_=caml_call1(Runtime_ocaml_Runtime[31],cst_39016$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aDj_,_aDi_)}} + function _aCD_(param) + {var + _aCE_=caml_call3(Runtime_ocaml_Runtime[57],2011,1,1), + _aCF_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aCE_), + _aCG_=caml_call3(Runtime_ocaml_Runtime[57],2010,1,1), + _aCH_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aCG_), + _aCI_=caml_call2(Runtime_ocaml_Runtime[83],_aCH_,_aCF_), + _aCJ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aCK_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aCJ_), + _aCL_=caml_call2(Runtime_ocaml_Runtime[83],_aCK_,_aCI_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jt_,_aCL_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ju_,[0],_aCD_,_aCC_)}, + _asb_= + function(param) + {function _aBU_(param) + {switch(zone[0]) + {case 0: + var _aB4_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$340); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB4_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_29575) + :caml_call1(Runtime_ocaml_Runtime[31],cst_35642); + var _aB5_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$231); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38322); + var _aB6_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB6_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39393); + var _aB7_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$50); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40501); + var _aB8_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$46); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB8_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41588); + var _aB9_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$54); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aB9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_42469); + var + _aB__=caml_call1(Runtime_ocaml_Runtime[46],cst_5$55), + _aB$_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aB__), + _aCa_=caml_call1(Runtime_ocaml_Runtime[69],_aB$_), + _aCb_=caml_call1(Runtime_ocaml_Runtime[31],cst_3698), + _aCc_=caml_call2(Runtime_ocaml_Runtime[104],_aCb_,_aCa_), + _aCd_=caml_call1(Runtime_ocaml_Runtime[31],cst_42469$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aCd_,_aCc_); + case 1: + var _aCe_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$341); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCe_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25946) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31806); + var _aCf_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$232); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCf_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34433); + var _aCg_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$71); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCg_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35625); + var _aCh_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$51); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCh_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36852); + var _aCi_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$47); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCi_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38063); + var _aCj_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$56); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCj_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40758); + var + _aCk_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$57), + _aCl_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCk_), + _aCm_=caml_call1(Runtime_ocaml_Runtime[69],_aCl_), + _aCn_=caml_call1(Runtime_ocaml_Runtime[31],cst_3544), + _aCo_=caml_call2(Runtime_ocaml_Runtime[104],_aCn_,_aCm_), + _aCp_=caml_call1(Runtime_ocaml_Runtime[31],cst_40758$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aCp_,_aCo_); + default: + var _aCq_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$342); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCq_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24339) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29522); + var _aCr_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$233); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCr_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32186); + var _aCs_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCs_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33516); + var _aCt_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$52); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34865); + var _aCu_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$48); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36195); + var _aCv_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$58); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aCv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38892); + var + _aCw_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$59), + _aCx_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aCw_), + _aCy_=caml_call1(Runtime_ocaml_Runtime[69],_aCx_), + _aCz_=caml_call1(Runtime_ocaml_Runtime[31],cst_3372), + _aCA_=caml_call2(Runtime_ocaml_Runtime[104],_aCz_,_aCy_), + _aCB_=caml_call1(Runtime_ocaml_Runtime[31],cst_38892$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aCB_,_aCA_)}} + function _aBV_(param) + {var + _aBW_=caml_call3(Runtime_ocaml_Runtime[57],2010,1,1), + _aBX_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aBW_), + _aBY_=caml_call3(Runtime_ocaml_Runtime[57],2009,1,1), + _aBZ_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aBY_), + _aB0_=caml_call2(Runtime_ocaml_Runtime[83],_aBZ_,_aBX_), + _aB1_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aB2_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aB1_), + _aB3_=caml_call2(Runtime_ocaml_Runtime[83],_aB2_,_aB0_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jv_,_aB3_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jw_,[0],_aBV_,_aBU_)}, + _asc_= + function(param) + {function _aBa_(param) + {switch(zone[0]) + {case 0: + var _aBk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$343); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBk_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_28728) + :caml_call1(Runtime_ocaml_Runtime[31],cst_34621); + var _aBl_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$234); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBl_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37224); + var _aBm_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$73); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBm_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38264); + var _aBn_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$53); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39340$0); + var _aBo_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$49); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBo_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40396); + var _aBp_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$60); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBp_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_41252); + var + _aBq_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$61), + _aBr_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBq_), + _aBs_=caml_call1(Runtime_ocaml_Runtime[69],_aBr_), + _aBt_=caml_call1(Runtime_ocaml_Runtime[31],cst_3592), + _aBu_=caml_call2(Runtime_ocaml_Runtime[104],_aBt_,_aBs_), + _aBv_=caml_call1(Runtime_ocaml_Runtime[31],cst_41252$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aBv_,_aBu_); + case 1: + var _aBw_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$344); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBw_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_25203) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30895); + var _aBx_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$235); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33446); + var _aBy_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBy_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34604); + var _aBz_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$54); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35796); + var _aBA_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$50); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBA_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36972); + var _aBB_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$62); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBB_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39590); + var + _aBC_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$63), + _aBD_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBC_), + _aBE_=caml_call1(Runtime_ocaml_Runtime[69],_aBD_), + _aBF_=caml_call1(Runtime_ocaml_Runtime[31],cst_3442), + _aBG_=caml_call2(Runtime_ocaml_Runtime[104],_aBF_,_aBE_), + _aBH_=caml_call1(Runtime_ocaml_Runtime[31],cst_39590$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aBH_,_aBG_); + default: + var _aBI_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$345); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBI_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23642) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28676); + var _aBJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$236); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBJ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31264$0); + var _aBK_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBK_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32556); + var _aBL_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$55); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBL_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33866); + var _aBM_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$51); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBM_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35158); + var _aBN_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$64); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aBN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37778); + var + _aBO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$65), + _aBP_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aBO_), + _aBQ_=caml_call1(Runtime_ocaml_Runtime[69],_aBP_), + _aBR_=caml_call1(Runtime_ocaml_Runtime[31],cst_3275), + _aBS_=caml_call2(Runtime_ocaml_Runtime[104],_aBR_,_aBQ_), + _aBT_=caml_call1(Runtime_ocaml_Runtime[31],cst_37778$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aBT_,_aBS_)}} + function _aBb_(param) + {var + _aBc_=caml_call3(Runtime_ocaml_Runtime[57],2009,1,1), + _aBd_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aBc_), + _aBe_=caml_call3(Runtime_ocaml_Runtime[57],2008,1,1), + _aBf_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aBe_), + _aBg_=caml_call2(Runtime_ocaml_Runtime[83],_aBf_,_aBd_), + _aBh_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aBi_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aBh_), + _aBj_=caml_call2(Runtime_ocaml_Runtime[83],_aBi_,_aBg_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jx_,_aBj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Jy_,[0],_aBb_,_aBa_)}, + _asd_= + function(param) + {function _aAs_(param) + {switch(zone[0]) + {case 0: + var _aAC_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$346); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAC_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27956) + :caml_call1(Runtime_ocaml_Runtime[31],cst_33691); + var _aAD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$237); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAD_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36224); + var _aAE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAE_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37236); + var _aAF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$56); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38283); + var _aAG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$52); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAG_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39311); + var _aAH_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$66); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAH_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_40144); + var + _aAI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$67), + _aAJ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAI_), + _aAK_=caml_call1(Runtime_ocaml_Runtime[69],_aAJ_), + _aAL_=caml_call1(Runtime_ocaml_Runtime[31],cst_3496), + _aAM_=caml_call2(Runtime_ocaml_Runtime[104],_aAL_,_aAK_), + _aAN_=caml_call1(Runtime_ocaml_Runtime[31],cst_40144$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aAN_,_aAM_); + case 1: + var _aAO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$347); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAO_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_24526) + :caml_call1(Runtime_ocaml_Runtime[31],cst_30065); + var _aAP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$238); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32548); + var _aAQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$77); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAQ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33675); + var _aAR_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$57); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34865$0); + var _aAS_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$53); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35979); + var _aAT_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38527); + var + _aAU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$69), + _aAV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAU_), + _aAW_=caml_call1(Runtime_ocaml_Runtime[69],_aAV_), + _aAX_=caml_call1(Runtime_ocaml_Runtime[31],cst_3350), + _aAY_=caml_call2(Runtime_ocaml_Runtime[104],_aAX_,_aAW_), + _aAZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_38527$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aAZ_,_aAY_); + default: + var _aA0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$348); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA0_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23007) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27906); + var _aA1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$239); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30424); + var _aA2_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$78); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA2_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31682); + var _aA3_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$58); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA3_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32956$0); + var _aA4_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$54); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA4_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34214); + var _aA5_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aA5_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36733); + var + _aA6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$71), + _aA7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aA6_), + _aA8_=caml_call1(Runtime_ocaml_Runtime[69],_aA7_), + _aA9_=caml_call1(Runtime_ocaml_Runtime[31],cst_3187), + _aA__=caml_call2(Runtime_ocaml_Runtime[104],_aA9_,_aA8_), + _aA$_=caml_call1(Runtime_ocaml_Runtime[31],cst_36733$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aA$_,_aA__)}} + function _aAt_(param) + {var + _aAu_=caml_call3(Runtime_ocaml_Runtime[57],2008,1,1), + _aAv_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_aAu_), + _aAw_=caml_call3(Runtime_ocaml_Runtime[57],2007,1,1), + _aAx_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aAw_), + _aAy_=caml_call2(Runtime_ocaml_Runtime[83],_aAx_,_aAv_), + _aAz_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _aAA_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_aAz_), + _aAB_=caml_call2(Runtime_ocaml_Runtime[83],_aAA_,_aAy_); + return caml_call2(Runtime_ocaml_Runtime[29],_Jz_,_aAB_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JA_,[0],_aAt_,_aAs_)}, + _ase_= + function(param) + {function _azK_(param) + {switch(zone[0]) + {case 0: + var _azU_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$349); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azU_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_27195) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32773); + var _azV_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$240); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35237); + var _azW_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$79); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azW_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36222); + var _azX_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$59); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37240); + var _azY_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$55); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azY_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38240); + var _azZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_39051); + var + _az0_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$73), + _az1_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_az0_), + _az2_=caml_call1(Runtime_ocaml_Runtime[69],_az1_), + _az3_=caml_call1(Runtime_ocaml_Runtime[31],cst_3401), + _az4_=caml_call2(Runtime_ocaml_Runtime[104],_az3_,_az2_), + _az5_=caml_call1(Runtime_ocaml_Runtime[31],cst_39051$0); + return caml_call2(Runtime_ocaml_Runtime[93],_az5_,_az4_); + case 1: + var _az6_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$350); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az6_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23858) + :caml_call1(Runtime_ocaml_Runtime[31],cst_29246); + var _az7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$241); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az7_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31661); + var _az8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$80); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az8_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32758); + var _az9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$60); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33886); + var _az__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$56); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34999); + var _az$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_az$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37478); + var + _aAa_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$75), + _aAb_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAa_), + _aAc_=caml_call1(Runtime_ocaml_Runtime[69],_aAb_), + _aAd_=caml_call1(Runtime_ocaml_Runtime[31],cst_3259), + _aAe_=caml_call2(Runtime_ocaml_Runtime[104],_aAd_,_aAc_), + _aAf_=caml_call1(Runtime_ocaml_Runtime[31],cst_37478$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aAf_,_aAe_); + default: + var _aAg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$351); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAg_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22380) + :caml_call1(Runtime_ocaml_Runtime[31],cst_27146); + var _aAh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$242); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAh_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_29595); + var _aAi_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$81); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAi_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30819); + var _aAj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$61); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAj_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32058); + var _aAk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$57); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAk_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33282); + var _aAl_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aAl_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35762); + var + _aAm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$77), + _aAn_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aAm_), + _aAo_=caml_call1(Runtime_ocaml_Runtime[69],_aAn_), + _aAp_=caml_call1(Runtime_ocaml_Runtime[31],cst_3100), + _aAq_=caml_call2(Runtime_ocaml_Runtime[104],_aAp_,_aAo_), + _aAr_=caml_call1(Runtime_ocaml_Runtime[31],cst_35762$0); + return caml_call2(Runtime_ocaml_Runtime[93],_aAr_,_aAq_)}} + function _azL_(param) + {var + _azM_=caml_call3(Runtime_ocaml_Runtime[57],2007,1,1), + _azN_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_azM_), + _azO_=caml_call3(Runtime_ocaml_Runtime[57],2005,9,1), + _azP_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_azO_), + _azQ_=caml_call2(Runtime_ocaml_Runtime[83],_azP_,_azN_), + _azR_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _azS_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_azR_), + _azT_=caml_call2(Runtime_ocaml_Runtime[83],_azS_,_azQ_); + return caml_call2(Runtime_ocaml_Runtime[29],_JB_,_azT_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JC_,[0],_azL_,_azK_)}, + _asf_= + function(param) + {function _ay2_(param) + {switch(zone[0]) + {case 0: + var _aza_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$352); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aza_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26714$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_32194); + var _azb_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$243); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34614); + var _azc_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$82); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azc_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35582); + var _azd_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$62); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azd_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36582); + var _aze_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$58); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aze_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37564); + var _azf_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$78); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azf_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_38361); + var + _azg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$79), + _azh_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azg_), + _azi_=caml_call1(Runtime_ocaml_Runtime[69],_azh_), + _azj_=caml_call1(Runtime_ocaml_Runtime[31],cst_3341), + _azk_=caml_call2(Runtime_ocaml_Runtime[104],_azj_,_azi_), + _azl_=caml_call1(Runtime_ocaml_Runtime[31],cst_38361$0); + return caml_call2(Runtime_ocaml_Runtime[93],_azl_,_azk_); + case 1: + var _azm_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$353); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azm_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23436) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28729); + var _azn_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$244); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azn_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31101); + var _azo_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$83); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azo_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32179); + var _azp_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$63); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azp_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33287); + var _azq_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$59); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azq_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34380); + var _azr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$80); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azr_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36815); + var + _azs_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$81), + _azt_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azs_), + _azu_=caml_call1(Runtime_ocaml_Runtime[69],_azt_), + _azv_=caml_call1(Runtime_ocaml_Runtime[31],cst_3201), + _azw_=caml_call2(Runtime_ocaml_Runtime[104],_azv_,_azu_), + _azx_=caml_call1(Runtime_ocaml_Runtime[31],cst_36815$0); + return caml_call2(Runtime_ocaml_Runtime[93],_azx_,_azw_); + default: + var _azy_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$354); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azy_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21984) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26666); + var _azz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$245); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azz_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_29072); + var _azA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$84); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azA_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30274); + var _azB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$64); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azB_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31491); + var _azC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$60); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azC_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32694); + var _azD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$82); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_azD_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35130); + var + _azE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$83), + _azF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_azE_), + _azG_=caml_call1(Runtime_ocaml_Runtime[69],_azF_), + _azH_=caml_call1(Runtime_ocaml_Runtime[31],cst_3045), + _azI_=caml_call2(Runtime_ocaml_Runtime[104],_azH_,_azG_), + _azJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_35130$0); + return caml_call2(Runtime_ocaml_Runtime[93],_azJ_,_azI_)}} + function _ay3_(param) + {var + _ay4_=caml_call3(Runtime_ocaml_Runtime[57],2005,9,1), + _ay5_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_ay4_), + _ay6_=caml_call3(Runtime_ocaml_Runtime[57],2003,7,1), + _ay7_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_ay6_), + _ay8_=caml_call2(Runtime_ocaml_Runtime[83],_ay7_,_ay5_), + _ay9_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _ay__= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_ay9_), + _ay$_=caml_call2(Runtime_ocaml_Runtime[83],_ay__,_ay8_); + return caml_call2(Runtime_ocaml_Runtime[29],_JD_,_ay$_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JE_,[0],_ay3_,_ay2_)}, + _asg_= + function(param) + {function _ayi_(param) + {switch(zone[0]) + {case 0: + var _ays_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$355); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ays_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26397) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31812); + var _ayt_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$246); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayt_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34204); + var _ayu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$85); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayu_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35160); + var _ayv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$65); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayv_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36148); + var _ayw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$61); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayw_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37119); + var _ayx_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$84); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayx_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37906); + var + _ayy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$85), + _ayz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayy_), + _ayA_=caml_call1(Runtime_ocaml_Runtime[69],_ayz_), + _ayB_=caml_call1(Runtime_ocaml_Runtime[31],cst_3301), + _ayC_=caml_call2(Runtime_ocaml_Runtime[104],_ayB_,_ayA_), + _ayD_=caml_call1(Runtime_ocaml_Runtime[31],cst_37906$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ayD_,_ayC_); + case 1: + var _ayE_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$356); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayE_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_23158) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28388); + var _ayF_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$247); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayF_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30732); + var _ayG_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayG_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31797$2); + var _ayH_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$66); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayH_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32892); + var _ayI_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$62); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayI_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33972); + var _ayJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayJ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36378); + var + _ayK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$87), + _ayL_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayK_), + _ayM_=caml_call1(Runtime_ocaml_Runtime[69],_ayL_), + _ayN_=caml_call1(Runtime_ocaml_Runtime[31],cst_3163), + _ayO_=caml_call2(Runtime_ocaml_Runtime[104],_ayN_,_ayM_), + _ayP_=caml_call1(Runtime_ocaml_Runtime[31],cst_36378$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ayP_,_ayO_); + default: + var _ayQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$357); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayQ_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21723) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26350); + var _ayR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$248); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayR_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_28727); + var _ayS_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$87); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayS_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_29915); + var _ayT_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$67); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayT_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31118); + var _ayU_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$63); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayU_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32306); + var _ayV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$88); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayV_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34713); + var + _ayW_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$89), + _ayX_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayW_), + _ayY_=caml_call1(Runtime_ocaml_Runtime[69],_ayX_), + _ayZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_3009), + _ay0_=caml_call2(Runtime_ocaml_Runtime[104],_ayZ_,_ayY_), + _ay1_=caml_call1(Runtime_ocaml_Runtime[31],cst_34713$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ay1_,_ay0_)}} + function _ayj_(param) + {var + _ayk_=caml_call3(Runtime_ocaml_Runtime[57],2003,7,1), + _ayl_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_ayk_), + _aym_=caml_call3(Runtime_ocaml_Runtime[57],2002,7,1), + _ayn_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_aym_), + _ayo_=caml_call2(Runtime_ocaml_Runtime[83],_ayn_,_ayl_), + _ayp_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _ayq_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_ayp_), + _ayr_=caml_call2(Runtime_ocaml_Runtime[83],_ayq_,_ayo_); + return caml_call2(Runtime_ocaml_Runtime[29],_JF_,_ayr_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JG_,[0],_ayj_,_ayi_)}, + _ash_= + function(param) + {function _axA_(param) + {switch(zone[0]) + {case 0: + var _axK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$358); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axK_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_26084) + :caml_call1(Runtime_ocaml_Runtime[31],cst_31435); + var _axL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$249); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axL_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33798); + var _axM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$88); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axM_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34743); + var _axN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axN_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35719); + var _axO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$64); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axO_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_36679); + var _axP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$90); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axP_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_37457); + var + _axQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$91), + _axR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axQ_), + _axS_=caml_call1(Runtime_ocaml_Runtime[69],_axR_), + _axT_=caml_call1(Runtime_ocaml_Runtime[31],cst_3262), + _axU_=caml_call2(Runtime_ocaml_Runtime[104],_axT_,_axS_), + _axV_=caml_call1(Runtime_ocaml_Runtime[31],cst_37457$0); + return caml_call2(Runtime_ocaml_Runtime[93],_axV_,_axU_); + case 1: + var _axW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$359); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axW_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_22883) + :caml_call1(Runtime_ocaml_Runtime[31],cst_28051); + var _axX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$250); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axX_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30368); + var _axY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$89); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axY_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31420); + var _axZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$69); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axZ_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_32502); + var _ax0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$65); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax0_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_33569); + var _ax1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$92); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax1_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_35947); + var + _ax2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$93), + _ax3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ax2_), + _ax4_=caml_call1(Runtime_ocaml_Runtime[69],_ax3_), + _ax5_=caml_call1(Runtime_ocaml_Runtime[31],cst_3125), + _ax6_=caml_call2(Runtime_ocaml_Runtime[104],_ax5_,_ax4_), + _ax7_=caml_call1(Runtime_ocaml_Runtime[31],cst_35947$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ax7_,_ax6_); + default: + var _ax8_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$360); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax8_)) + return 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_21465) + :caml_call1(Runtime_ocaml_Runtime[31],cst_26038); + var _ax9_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$251); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax9_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_28386); + var _ax__=caml_call1(Runtime_ocaml_Runtime[46],cst_2$90); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax__)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_29560); + var _ax$_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ax$_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_30749); + var _aya_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$66); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aya_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_31923); + var _ayb_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$94); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ayb_)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_34301); + var + _ayc_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$95), + _ayd_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_ayc_), + _aye_=caml_call1(Runtime_ocaml_Runtime[69],_ayd_), + _ayf_=caml_call1(Runtime_ocaml_Runtime[31],cst_2973), + _ayg_=caml_call2(Runtime_ocaml_Runtime[104],_ayf_,_aye_), + _ayh_=caml_call1(Runtime_ocaml_Runtime[31],cst_34301$0); + return caml_call2(Runtime_ocaml_Runtime[93],_ayh_,_ayg_)}} + function _axB_(param) + {var + _axC_=caml_call3(Runtime_ocaml_Runtime[57],2002,7,1), + _axD_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_axC_), + _axE_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), + _axF_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_axE_), + _axG_=caml_call2(Runtime_ocaml_Runtime[83],_axF_,_axD_), + _axH_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _axI_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_axH_), + _axJ_=caml_call2(Runtime_ocaml_Runtime[83],_axI_,_axG_); + return caml_call2(Runtime_ocaml_Runtime[29],_JH_,_axJ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JI_,[0],_axB_,_axA_)}, + _asi_= + function(param) + {function _awR_(param) + {switch(zone[0]) + {case 0: + var _aw1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$361); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw1_)) + var + _aw2_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_171100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_206200); + else + {var _aw3_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$252); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw3_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_221700); + else + {var _aw4_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$91); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw4_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_227900); + else + {var _aw5_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$71); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw5_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_234300); + else + {var _aw6_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$67); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw6_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_240600); + else + {var _aw7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$96); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aw7_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700); + else + var + _aw8_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$97), + _aw9_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aw8_), + _aw__=caml_call1(Runtime_ocaml_Runtime[69],_aw9_), + _aw$_=caml_call1(Runtime_ocaml_Runtime[31],cst_21400), + _axa_=caml_call2(Runtime_ocaml_Runtime[104],_aw$_,_aw__), + _axb_=caml_call1(Runtime_ocaml_Runtime[31],cst_245700$0), + _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axb_,_axa_)}}}}} + break; + case 1: + var _axc_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$362); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axc_)) + var + _aw2_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_150100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_184000$0); + else + {var _axd_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$253); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axd_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_199200); + else + {var _axe_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$92); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axe_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_206100); + else + {var _axf_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axf_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_213200); + else + {var _axg_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$68); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axg_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_220200); + else + {var _axh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$98); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axh_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800); + else + var + _axi_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$99), + _axj_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axi_), + _axk_=caml_call1(Runtime_ocaml_Runtime[69],_axj_), + _axl_=caml_call1(Runtime_ocaml_Runtime[31],cst_20500), + _axm_=caml_call2(Runtime_ocaml_Runtime[104],_axl_,_axk_), + _axn_=caml_call1(Runtime_ocaml_Runtime[31],cst_235800$0), + _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axn_,_axm_)}}}}} + break; + default: + var _axo_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$363); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axo_)) + var + _aw2_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_170800); + else + {var _axp_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$254); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axp_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_186200); + else + {var _axq_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$93); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axq_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_193900); + else + {var _axr_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$73); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axr_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_201700); + else + {var _axs_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$69); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axs_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_209400); + else + {var _axt_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$100); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_axt_)) + var _aw2_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000); + else + var + _axu_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$101), + _axv_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_axu_), + _axw_=caml_call1(Runtime_ocaml_Runtime[69],_axv_), + _axx_=caml_call1(Runtime_ocaml_Runtime[31],cst_19500), + _axy_=caml_call2(Runtime_ocaml_Runtime[104],_axx_,_axw_), + _axz_=caml_call1(Runtime_ocaml_Runtime[31],cst_225000$0), + _aw2_=caml_call2(Runtime_ocaml_Runtime[93],_axz_,_axy_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_aw2_,taux_francs_vers_euros)} + function _awS_(param) + {var + _awT_=caml_call3(Runtime_ocaml_Runtime[57],2002,1,1), + _awU_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_awT_), + _awV_=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), + _awW_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_awV_), + _awX_=caml_call2(Runtime_ocaml_Runtime[83],_awW_,_awU_), + _awY_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _awZ_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_awY_), + _aw0_=caml_call2(Runtime_ocaml_Runtime[83],_awZ_,_awX_); + return caml_call2(Runtime_ocaml_Runtime[29],_JJ_,_aw0_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JK_,[0],_awS_,_awR_)}, + _asj_= + function(param) + {function _av8_(param) + {switch(zone[0]) + {case 0: + var _awg_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$364); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awg_)) + var + _awh_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_169100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_203800); + else + {var _awi_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$255); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awi_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_219100); + else + {var _awj_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$94); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awj_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_225200); + else + {var _awk_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awk_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_231500); + else + {var _awl_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$70); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awl_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_237700); + else + {var _awm_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$102); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awm_)) + var + _awh_= + caml_call1(Runtime_ocaml_Runtime[31],cst_242800$1); + else + var + _awn_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$103), + _awo_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awn_), + _awp_=caml_call1(Runtime_ocaml_Runtime[69],_awo_), + _awq_=caml_call1(Runtime_ocaml_Runtime[31],cst_21100), + _awr_=caml_call2(Runtime_ocaml_Runtime[104],_awq_,_awp_), + _aws_=caml_call1(Runtime_ocaml_Runtime[31],cst_242800$2), + _awh_=caml_call2(Runtime_ocaml_Runtime[93],_aws_,_awr_)}}}}} + break; + case 1: + var _awt_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$365); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awt_)) + var + _awh_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_148300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_181800); + else + {var _awu_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$256); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awu_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_196800); + else + {var _awv_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$95); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awv_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_203700); + else + {var _aww_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aww_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_210700); + else + {var _awx_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$71); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awx_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_217600); + else + {var _awy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$104); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awy_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000); + else + var + _awz_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$105), + _awA_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awz_), + _awB_=caml_call1(Runtime_ocaml_Runtime[69],_awA_), + _awC_=caml_call1(Runtime_ocaml_Runtime[31],cst_20300), + _awD_=caml_call2(Runtime_ocaml_Runtime[104],_awC_,_awB_), + _awE_=caml_call1(Runtime_ocaml_Runtime[31],cst_233000$0), + _awh_=caml_call2(Runtime_ocaml_Runtime[93],_awE_,_awD_)}}}}} + break; + default: + var _awF_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$366); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awF_)) + var + _awh_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_139100) + :caml_call1(Runtime_ocaml_Runtime[31],cst_168800); + else + {var _awG_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$257); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awG_)) + var + _awh_= + caml_call1(Runtime_ocaml_Runtime[31],cst_184000$1); + else + {var _awH_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$96); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awH_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_191600); + else + {var _awI_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awI_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_199300); + else + {var _awJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$72); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awJ_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_206900); + else + {var _awK_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$106); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_awK_)) + var _awh_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300); + else + var + _awL_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$107), + _awM_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_awL_), + _awN_=caml_call1(Runtime_ocaml_Runtime[69],_awM_), + _awO_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300), + _awP_=caml_call2(Runtime_ocaml_Runtime[104],_awO_,_awN_), + _awQ_=caml_call1(Runtime_ocaml_Runtime[31],cst_222300$0), + _awh_=caml_call2(Runtime_ocaml_Runtime[93],_awQ_,_awP_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_awh_,taux_francs_vers_euros)} + function _av9_(param) + {var + _av__=caml_call3(Runtime_ocaml_Runtime[57],2001,7,1), + _av$_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_av__), + _awa_=caml_call3(Runtime_ocaml_Runtime[57],2000,7,1), + _awb_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_awa_), + _awc_=caml_call2(Runtime_ocaml_Runtime[83],_awb_,_av$_), + _awd_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _awe_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_awd_), + _awf_=caml_call2(Runtime_ocaml_Runtime[83],_awe_,_awc_); + return caml_call2(Runtime_ocaml_Runtime[29],_JL_,_awf_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JM_,[0],_av9_,_av8_)}, + _ask_= + function(param) + {function _avn_(param) + {switch(zone[0]) + {case 0: + var _avx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$367); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avx_)) + var + _avy_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_167400) + :caml_call1(Runtime_ocaml_Runtime[31],cst_201800); + else + {var _avz_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$258); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avz_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_216900); + else + {var _avA_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$97); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avA_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_223000); + else + {var _avB_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$77); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avB_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_229200); + else + {var _avC_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$73); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avC_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_235300); + else + {var _avD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$108); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avD_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400); + else + var + _avE_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$109), + _avF_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avE_), + _avG_=caml_call1(Runtime_ocaml_Runtime[69],_avF_), + _avH_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900), + _avI_=caml_call2(Runtime_ocaml_Runtime[104],_avH_,_avG_), + _avJ_=caml_call1(Runtime_ocaml_Runtime[31],cst_240400$0), + _avy_=caml_call2(Runtime_ocaml_Runtime[93],_avJ_,_avI_)}}}}} + break; + case 1: + var _avK_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$368); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avK_)) + var + _avy_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_146800) + :caml_call1(Runtime_ocaml_Runtime[31],cst_180000); + else + {var _avL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$259); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avL_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_194900); + else + {var _avM_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$98); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avM_)) + var + _avy_= + caml_call1(Runtime_ocaml_Runtime[31],cst_201700$0); + else + {var _avN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$78); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avN_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600); + else + {var _avO_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$74); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avO_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_215400); + else + {var _avP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$110); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avP_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700); + else + var + _avQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$111), + _avR_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avQ_), + _avS_=caml_call1(Runtime_ocaml_Runtime[69],_avR_), + _avT_=caml_call1(Runtime_ocaml_Runtime[31],cst_20100), + _avU_=caml_call2(Runtime_ocaml_Runtime[104],_avT_,_avS_), + _avV_=caml_call1(Runtime_ocaml_Runtime[31],cst_230700$0), + _avy_=caml_call2(Runtime_ocaml_Runtime[93],_avV_,_avU_)}}}}} + break; + default: + var _avW_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$369); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avW_)) + var + _avy_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_137700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_167100); + else + {var _avX_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$260); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avX_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_182200); + else + {var _avY_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$99); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avY_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_189700); + else + {var _avZ_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$79); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avZ_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_197300); + else + {var _av0_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$75); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_av0_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_204900); + else + {var _av1_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$112); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_av1_)) + var _avy_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100); + else + var + _av2_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$113), + _av3_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_av2_), + _av4_=caml_call1(Runtime_ocaml_Runtime[69],_av3_), + _av5_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100), + _av6_=caml_call2(Runtime_ocaml_Runtime[104],_av5_,_av4_), + _av7_=caml_call1(Runtime_ocaml_Runtime[31],cst_220100$0), + _avy_=caml_call2(Runtime_ocaml_Runtime[93],_av7_,_av6_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_avy_,taux_francs_vers_euros)} + function _avo_(param) + {var + _avp_=caml_call3(Runtime_ocaml_Runtime[57],2000,7,1), + _avq_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_avp_), + _avr_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), + _avs_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_avr_), + _avt_=caml_call2(Runtime_ocaml_Runtime[83],_avs_,_avq_), + _avu_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _avv_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_avu_), + _avw_=caml_call2(Runtime_ocaml_Runtime[83],_avv_,_avt_); + return caml_call2(Runtime_ocaml_Runtime[29],_JN_,_avw_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JO_,[0],_avo_,_avn_)}, + _asl_= + function(param) + {function _auE_(param) + {switch(zone[0]) + {case 0: + var _auO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$370); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auO_)) + var + _auP_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_167200) + :caml_call1(Runtime_ocaml_Runtime[31],cst_201600); + else + {var _auQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$261); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auQ_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_216700); + else + {var _auR_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$100); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auR_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_222800); + else + {var _auS_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$80); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auS_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_229000); + else + {var _auT_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$76); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auT_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_235100); + else + {var _auU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$114); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auU_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200); + else + var + _auV_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$115), + _auW_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_auV_), + _auX_=caml_call1(Runtime_ocaml_Runtime[69],_auW_), + _auY_=caml_call1(Runtime_ocaml_Runtime[31],cst_20900$0), + _auZ_=caml_call2(Runtime_ocaml_Runtime[104],_auY_,_auX_), + _au0_=caml_call1(Runtime_ocaml_Runtime[31],cst_240200$0), + _auP_=caml_call2(Runtime_ocaml_Runtime[93],_au0_,_auZ_)}}}}} + break; + case 1: + var _au1_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$371); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au1_)) + var + _auP_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_146700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_179800); + else + {var _au2_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$262); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au2_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_194700); + else + {var _au3_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$101); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au3_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_201500); + else + {var _au4_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$81); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au4_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_208400); + else + {var _au5_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$77); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au5_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_215200); + else + {var _au6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$116); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_au6_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500); + else + var + _au7_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$117), + _au8_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_au7_), + _au9_=caml_call1(Runtime_ocaml_Runtime[69],_au8_), + _au__=caml_call1(Runtime_ocaml_Runtime[31],cst_20100$0), + _au$_=caml_call2(Runtime_ocaml_Runtime[104],_au__,_au9_), + _ava_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$0), + _auP_=caml_call2(Runtime_ocaml_Runtime[93],_ava_,_au$_)}}}}} + break; + default: + var _avb_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$372); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avb_)) + var + _auP_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_137600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_166900); + else + {var _avc_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$263); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avc_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_182000); + else + {var _avd_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$102); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avd_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_189500); + else + {var _ave_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$82); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ave_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_197100); + else + {var _avf_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$78); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avf_)) + var + _auP_= + caml_call1(Runtime_ocaml_Runtime[31],cst_204700$0); + else + {var _avg_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$118); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_avg_)) + var _auP_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900); + else + var + _avh_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$119), + _avi_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_avh_), + _avj_=caml_call1(Runtime_ocaml_Runtime[69],_avi_), + _avk_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$0), + _avl_=caml_call2(Runtime_ocaml_Runtime[104],_avk_,_avj_), + _avm_=caml_call1(Runtime_ocaml_Runtime[31],cst_219900$0), + _auP_=caml_call2(Runtime_ocaml_Runtime[93],_avm_,_avl_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_auP_,taux_francs_vers_euros)} + function _auF_(param) + {var + _auG_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), + _auH_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_auG_), + _auI_=caml_call3(Runtime_ocaml_Runtime[57],1998,7,1), + _auJ_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_auI_), + _auK_=caml_call2(Runtime_ocaml_Runtime[83],_auJ_,_auH_), + _auL_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _auM_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_auL_), + _auN_=caml_call2(Runtime_ocaml_Runtime[83],_auM_,_auK_); + return caml_call2(Runtime_ocaml_Runtime[29],_JP_,_auN_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JQ_,[0],_auF_,_auE_)}, + _asm_= + function(param) + {function _atV_(param) + {switch(zone[0]) + {case 0: + var _at5_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$373); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at5_)) + var + _at6_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_163300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_196900); + else + {var _at7_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$264); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at7_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_211600); + else + {var _at8_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$103); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at8_)) + var + _at6_= + caml_call1(Runtime_ocaml_Runtime[31],cst_217600$0); + else + {var _at9_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$83); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at9_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_223600); + else + {var _at__=caml_call1(Runtime_ocaml_Runtime[46],cst_4$79); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at__)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_229600); + else + {var _at$_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$120); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_at$_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600); + else + var + _aua_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$121), + _aub_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aua_), + _auc_=caml_call1(Runtime_ocaml_Runtime[69],_aub_), + _aud_=caml_call1(Runtime_ocaml_Runtime[31],cst_20400), + _aue_=caml_call2(Runtime_ocaml_Runtime[104],_aud_,_auc_), + _auf_=caml_call1(Runtime_ocaml_Runtime[31],cst_234600$0), + _at6_=caml_call2(Runtime_ocaml_Runtime[93],_auf_,_aue_)}}}}} + break; + case 1: + var _aug_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$374); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aug_)) + var + _at6_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_143300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_175600); + else + {var _auh_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$265); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auh_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_190100); + else + {var _aui_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$104); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aui_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_196600); + else + {var _auj_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$84); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auj_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_203500); + else + {var _auk_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$80); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auk_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_210200); + else + {var _aul_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$122); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aul_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100); + else + var + _aum_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$123), + _aun_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_aum_), + _auo_=caml_call1(Runtime_ocaml_Runtime[69],_aun_), + _aup_=caml_call1(Runtime_ocaml_Runtime[31],cst_19600), + _auq_=caml_call2(Runtime_ocaml_Runtime[104],_aup_,_auo_), + _aur_=caml_call1(Runtime_ocaml_Runtime[31],cst_225100$0), + _at6_=caml_call2(Runtime_ocaml_Runtime[93],_aur_,_auq_)}}}}} + break; + default: + var _aus_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$375); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aus_)) + var + _at6_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_134400) + :caml_call1(Runtime_ocaml_Runtime[31],cst_163000$0); + else + {var _aut_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$266); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aut_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_177700); + else + {var _auu_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$105); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auu_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_185100); + else + {var _auv_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$85); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auv_)) + var + _at6_= + caml_call1(Runtime_ocaml_Runtime[31],cst_192500$0); + else + {var _auw_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$81); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_auw_)) + var + _at6_= + caml_call1(Runtime_ocaml_Runtime[31],cst_199900$0); + else + {var _aux_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$124); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aux_)) + var _at6_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700); + else + var + _auy_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$125), + _auz_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_auy_), + _auA_=caml_call1(Runtime_ocaml_Runtime[69],_auz_), + _auB_=caml_call1(Runtime_ocaml_Runtime[31],cst_18700), + _auC_=caml_call2(Runtime_ocaml_Runtime[104],_auB_,_auA_), + _auD_=caml_call1(Runtime_ocaml_Runtime[31],cst_214700$0), + _at6_=caml_call2(Runtime_ocaml_Runtime[93],_auD_,_auC_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_at6_,taux_francs_vers_euros)} + function _atW_(param) + {var + _atX_=caml_call3(Runtime_ocaml_Runtime[57],1998,7,1), + _atY_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_atX_), + _atZ_=caml_call3(Runtime_ocaml_Runtime[57],1997,7,1), + _at0_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_atZ_), + _at1_=caml_call2(Runtime_ocaml_Runtime[83],_at0_,_atY_), + _at2_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _at3_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_at2_), + _at4_=caml_call2(Runtime_ocaml_Runtime[83],_at3_,_at1_); + return caml_call2(Runtime_ocaml_Runtime[29],_JR_,_at4_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JS_,[0],_atW_,_atV_)}, + _asn_= + function(param) + {function _ata_(param) + {switch(zone[0]) + {case 0: + var _atk_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$376); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atk_)) + var + _atl_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_160400) + :caml_call1(Runtime_ocaml_Runtime[31],cst_193400); + else + {var _atm_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$267); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atm_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_207800); + else + {var _atn_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$106); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atn_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_213700); + else + {var _ato_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_ato_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_219600); + else + {var _atp_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$82); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atp_)) + var + _atl_= + caml_call1(Runtime_ocaml_Runtime[31],cst_225500$0); + else + {var _atq_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$126); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atq_)) + var + _atl_= + caml_call1(Runtime_ocaml_Runtime[31],cst_230500$1); + else + var + _atr_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$127), + _ats_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atr_), + _att_=caml_call1(Runtime_ocaml_Runtime[69],_ats_), + _atu_=caml_call1(Runtime_ocaml_Runtime[31],cst_20000), + _atv_=caml_call2(Runtime_ocaml_Runtime[104],_atu_,_att_), + _atw_=caml_call1(Runtime_ocaml_Runtime[31],cst_230500$2), + _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atw_,_atv_)}}}}} + break; + case 1: + var _atx_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$377); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atx_)) + var + _atl_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_140800$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_172500$0); + else + {var _aty_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$268); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_aty_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_186700); + else + {var _atz_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$107); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atz_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_193300); + else + {var _atA_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$87); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atA_)) + var + _atl_= + caml_call1(Runtime_ocaml_Runtime[31],cst_199900$1); + else + {var _atB_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$83); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atB_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_206500); + else + {var _atC_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$128); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atC_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100); + else + var + _atD_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$129), + _atE_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atD_), + _atF_=caml_call1(Runtime_ocaml_Runtime[69],_atE_), + _atG_=caml_call1(Runtime_ocaml_Runtime[31],cst_19300$0), + _atH_=caml_call2(Runtime_ocaml_Runtime[104],_atG_,_atF_), + _atI_=caml_call1(Runtime_ocaml_Runtime[31],cst_221100$0), + _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atI_,_atH_)}}}}} + break; + default: + var _atJ_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$378); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atJ_)) + var + _atl_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_132000$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_180100$1); + else + {var _atK_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$269); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atK_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_174500); + else + {var _atL_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$108); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atL_)) + var + _atl_= + caml_call1(Runtime_ocaml_Runtime[31],cst_181800$0); + else + {var _atM_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$88); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atM_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_189100); + else + {var _atN_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$84); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atN_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_196400); + else + {var _atO_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$130); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_atO_)) + var _atl_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900); + else + var + _atP_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$131), + _atQ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_atP_), + _atR_=caml_call1(Runtime_ocaml_Runtime[69],_atQ_), + _atS_=caml_call1(Runtime_ocaml_Runtime[31],cst_18400), + _atT_=caml_call2(Runtime_ocaml_Runtime[104],_atS_,_atR_), + _atU_=caml_call1(Runtime_ocaml_Runtime[31],cst_210900$0), + _atl_=caml_call2(Runtime_ocaml_Runtime[93],_atU_,_atT_)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_atl_,taux_francs_vers_euros)} + function _atb_(param) + {var + _atc_=caml_call3(Runtime_ocaml_Runtime[57],1997,7,1), + _atd_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_atc_), + _ate_=caml_call3(Runtime_ocaml_Runtime[57],1994,7,1), + _atf_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_ate_), + _atg_=caml_call2(Runtime_ocaml_Runtime[83],_atf_,_atd_), + _ath_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _ati_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_ath_), + _atj_=caml_call2(Runtime_ocaml_Runtime[83],_ati_,_atg_); + return caml_call2(Runtime_ocaml_Runtime[29],_JT_,_atj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JU_,[0],_atb_,_ata_)}, + _aso_= + [0, + function(param) + {function _asr_(param) + {switch(zone[0]) + {case 0: + var _asB_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$379); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asB_)) + var + _asC_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_158700) + :caml_call1(Runtime_ocaml_Runtime[31],cst_191300); + else + {var _asD_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$270); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asD_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_205500); + else + {var _asE_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$109); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asE_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_211300); + else + {var _asF_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$89); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asF_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_217100); + else + {var _asG_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$85); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asG_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_222900); + else + {var _asH_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$132); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asH_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000); + else + var + _asI_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$133), + _asJ_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_asI_), + _asK_=caml_call1(Runtime_ocaml_Runtime[69],_asJ_), + _asL_=caml_call1(Runtime_ocaml_Runtime[31],cst_19800), + _asM_=caml_call2(Runtime_ocaml_Runtime[104],_asL_,_asK_), + _asN_=caml_call1(Runtime_ocaml_Runtime[31],cst_228000$0), + _asC_=caml_call2(Runtime_ocaml_Runtime[93],_asN_,_asM_)}}}}} + break; + case 1: + var _asO_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$380); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asO_)) + var + _asC_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_139300) + :caml_call1(Runtime_ocaml_Runtime[31],cst_170600); + else + {var _asP_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$271); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asP_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_184700); + else + {var _asQ_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$110); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asQ_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_191200); + else + {var _asR_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$90); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asR_)) + var + _asC_= + caml_call1(Runtime_ocaml_Runtime[31],cst_197700$0); + else + {var _asS_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$86); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asS_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_204200); + else + {var _asT_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$134); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_asT_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700); + else + var + _asU_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$135), + _asV_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_asU_), + _asW_=caml_call1(Runtime_ocaml_Runtime[69],_asV_), + _asX_=caml_call1(Runtime_ocaml_Runtime[31],cst_19100$1), + _asY_=caml_call2(Runtime_ocaml_Runtime[104],_asX_,_asW_), + _asZ_=caml_call1(Runtime_ocaml_Runtime[31],cst_218700$0), + _asC_=caml_call2(Runtime_ocaml_Runtime[93],_asZ_,_asY_)}}}}} + break; + default: + var _as0_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$381); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as0_)) + var + _asC_= + 0 === situation_familiale_calcul_apl[0] + ?caml_call1(Runtime_ocaml_Runtime[31],cst_130600) + :caml_call1(Runtime_ocaml_Runtime[31],cst_158400); + else + {var _as1_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$272); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as1_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_172600); + else + {var _as2_=caml_call1(Runtime_ocaml_Runtime[46],cst_2$111); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as2_)) + var + _asC_= + caml_call1(Runtime_ocaml_Runtime[31],cst_179800$0); + else + {var _as3_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$91); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as3_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_187000); + else + {var _as4_=caml_call1(Runtime_ocaml_Runtime[46],cst_4$87); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as4_)) + var _asC_=caml_call1(Runtime_ocaml_Runtime[31],cst_194200); + else + {var _as5_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$136); + if + (caml_call2 + (Runtime_ocaml_Runtime[86],nombre_personnes_a_charge,_as5_)) + var + _asC_= + caml_call1(Runtime_ocaml_Runtime[31],cst_208600$0); + else + var + _as6_=caml_call1(Runtime_ocaml_Runtime[46],cst_5$137), + _as7_= + caml_call2 + (Runtime_ocaml_Runtime[96],nombre_personnes_a_charge,_as6_), + _as8_=caml_call1(Runtime_ocaml_Runtime[69],_as7_), + _as9_=caml_call1(Runtime_ocaml_Runtime[31],cst_18200), + _as__=caml_call2(Runtime_ocaml_Runtime[104],_as9_,_as8_), + _as$_=caml_call1(Runtime_ocaml_Runtime[31],cst_208600$1), + _asC_=caml_call2(Runtime_ocaml_Runtime[93],_as$_,_as__)}}}}}} + return caml_call2 + (Runtime_ocaml_Runtime[104],_asC_,taux_francs_vers_euros)} + function _ass_(param) + {var + _ast_=caml_call3(Runtime_ocaml_Runtime[57],1994,7,1), + _asu_= + caml_call2(Runtime_ocaml_Runtime[115],date_calcul,_ast_), + _asv_=caml_call3(Runtime_ocaml_Runtime[57],1992,7,1), + _asw_= + caml_call2(Runtime_ocaml_Runtime[130],date_calcul,_asv_), + _asx_=caml_call2(Runtime_ocaml_Runtime[83],_asw_,_asu_), + _asy_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _asz_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_asy_), + _asA_=caml_call2(Runtime_ocaml_Runtime[83],_asz_,_asx_); + return caml_call2(Runtime_ocaml_Runtime[29],_JV_,_asA_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_JW_,[0],_ass_,_asr_)}, + _asn_, + _asm_, + _asl_, + _ask_, + _asj_, + _asi_, + _ash_, + _asg_, + _asf_, + _ase_, + _asd_, + _asc_, + _asb_, + _asa_, + _ar$_, + _ar__, + _ar9_, + _ar8_, + _ar7_, + _ar6_, + _ar5_], + _asp_=caml_call4(Runtime_ocaml_Runtime[63],_JX_,_aso_,_ar4_,_ar3_); + return _asp_} + catch(_asq_) + {_asq_ = caml_wrap_exception(_asq_); + if(_asq_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Je_]; + throw _asq_}} + var + calcul_plafond_mensualite_d842= + caml_call3 + (Runtime_ocaml_Runtime[28],_JY_,Runtime_ocaml_Runtime[10],_aon_); + try + {var + _aoo_=function(param){throw Runtime_ocaml_Runtime[2]}, + _aop_=function(param){return 0}, + _aoq_= + function(param) + {function _arX_(param){return montant_forfaitaire_d842_12} + function _arY_(param) + {switch(type_travaux_logement[0]) + {case 0:var _arZ_=0;break; + case 1:var _arZ_=1;break; + case 2:var _arZ_=0;break; + default:var _arZ_=0} + var + _ar0_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), + _ar1_= + caml_call2 + (Runtime_ocaml_Runtime[125],date_signature_pret,_ar0_), + _ar2_=caml_call2(Runtime_ocaml_Runtime[83],_ar1_,_arZ_); + return caml_call2(Runtime_ocaml_Runtime[29],_J0_,_ar2_)} + return caml_call4(Runtime_ocaml_Runtime[63],_J1_,[0],_arY_,_arX_)}, + _aor_= + [0, + function(param) + {function _arH_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[104], + mensualite_principale, + coefficient_d842_12)} + function _arI_(param) + {switch(type_travaux_logement[0]) + {case 0:var _arJ_=0;break; + case 1:var _arJ_=0;break; + case 2:var _arJ_=1;break; + default:var _arJ_=0} + switch(type_travaux_logement[0]) + {case 0:var _arK_=1;break; + case 1:var _arK_=0;break; + case 2:var _arK_=0;break; + default:var _arK_=0} + var _arL_=caml_call2(Runtime_ocaml_Runtime[84],_arK_,_arJ_); + switch(type_travaux_logement[0]) + {case 0:var _arM_=0;break; + case 1:var _arM_=0;break; + case 2:var _arM_=0;break; + default:var _arM_=1} + var + _arN_=caml_call2(Runtime_ocaml_Runtime[84],_arM_,_arL_), + _arO_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), + _arP_= + caml_call2 + (Runtime_ocaml_Runtime[125],date_signature_pret,_arO_), + _arQ_=caml_call2(Runtime_ocaml_Runtime[83],_arP_,_arN_), + _arR_=caml_call3(Runtime_ocaml_Runtime[57],1994,9,30), + _arS_= + caml_call2 + (Runtime_ocaml_Runtime[120],date_signature_pret,_arR_), + _arT_=caml_call3(Runtime_ocaml_Runtime[57],1992,9,30), + _arU_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_arT_), + _arV_=caml_call2(Runtime_ocaml_Runtime[83],_arU_,_arS_), + _arW_=caml_call2(Runtime_ocaml_Runtime[84],_arV_,_arQ_); + return caml_call2(Runtime_ocaml_Runtime[29],_J2_,_arW_)} + return caml_call4(Runtime_ocaml_Runtime[63],_J3_,[0],_arI_,_arH_)}, + _aoq_], + _aos_=caml_call4(Runtime_ocaml_Runtime[63],_J4_,_aor_,_aop_,_aoo_)} + catch(_arG_) + {_arG_ = caml_wrap_exception(_arG_); + if(_arG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_JZ_]; + throw _arG_} + var + seuil_minimal_ressources_menag= + caml_call3 + (Runtime_ocaml_Runtime[28],_J5_,Runtime_ocaml_Runtime[13],_aos_); + function _aot_(allocation_mensuelle) + {try + {var + _arB_= + function(param) + {var + _arF_= + caml_call2 + (Runtime_ocaml_Runtime[93], + charges_mensuelles_pret, + montant_forfaitaire_charges); + return caml_call2 + (Runtime_ocaml_Runtime[98],_arF_,allocation_mensuelle)}, + _arC_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_J7_,1)}, + _arD_=caml_call4(Runtime_ocaml_Runtime[63],_J8_,[0],_arC_,_arB_); + return _arD_} + catch(_arE_) + {_arE_ = caml_wrap_exception(_arE_); + if(_arE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_J6_]; + throw _arE_}} + var + depense_nette_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_J9_,Runtime_ocaml_Runtime[10],_aot_); + function _aou_(date_calcul) + {try + {var + _aqY_= + function(param) + {var + _ary_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _J$_, + Runtime_ocaml_Runtime[16], + date_calcul), + _arz_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ka_, + calcul_plafond_mensualite_d842), + _ary_), + _arA_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kb_, + Runtime_ocaml_Runtime[13], + _arz_); + return caml_call2(Runtime_ocaml_Runtime[27],_Kc_,_arA_)}, + _aqZ_= + function(param) + {var + _arw_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _arx_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_arw_); + return caml_call2(Runtime_ocaml_Runtime[29],_Kd_,_arx_)}, + _aq0_= + [0, + function(param) + {function _aq3_(param){throw Runtime_ocaml_Runtime[2]} + function _aq4_(param){return 0} + var + _aq5_= + [0, + function(param) + {function _aq6_(param) + {if(copropriete) + {var + _aro_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$11), + _arp_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ke_, + Runtime_ocaml_Runtime[16], + date_calcul), + _arq_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Kf_, + calcul_plafond_mensualite_d842), + _arp_), + _arr_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kg_, + Runtime_ocaml_Runtime[13], + _arq_), + _ars_=caml_call2(Runtime_ocaml_Runtime[27],_Kh_,_arr_); + return caml_call2(Runtime_ocaml_Runtime[104],_ars_,_aro_)} + var + _art_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ki_, + Runtime_ocaml_Runtime[16], + date_calcul), + _aru_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Kj_, + calcul_plafond_mensualite_d842), + _art_), + _arv_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kk_, + Runtime_ocaml_Runtime[13], + _aru_); + return caml_call2(Runtime_ocaml_Runtime[27],_Kl_,_arv_)} + function _aq7_(param) + {var + _arm_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _arn_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_arm_); + return caml_call2(Runtime_ocaml_Runtime[29],_Km_,_arn_)} + var + _aq8_= + [0, + function(param) + {function _aq9_(param) + {if(copropriete) + {var + _are_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_75$12), + _arf_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kn_, + Runtime_ocaml_Runtime[16], + date_calcul), + _arg_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ko_, + calcul_plafond_mensualite_d842), + _arf_), + _arh_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kp_, + Runtime_ocaml_Runtime[13], + _arg_), + _ari_=caml_call2(Runtime_ocaml_Runtime[27],_Kq_,_arh_); + return caml_call2(Runtime_ocaml_Runtime[104],_ari_,_are_)} + var + _arj_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kr_, + Runtime_ocaml_Runtime[16], + date_calcul), + _ark_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ks_, + calcul_plafond_mensualite_d842), + _arj_), + _arl_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Kt_, + Runtime_ocaml_Runtime[13], + _ark_); + return caml_call2(Runtime_ocaml_Runtime[27],_Ku_,_arl_)} + function _aq__(param) + {var + _aq$_=caml_call3(Runtime_ocaml_Runtime[57],2022,7,1), + _ara_= + caml_call2(Runtime_ocaml_Runtime[115],date_courante,_aq$_), + _arb_=caml_call3(Runtime_ocaml_Runtime[57],2021,10,1), + _arc_= + caml_call2(Runtime_ocaml_Runtime[130],date_courante,_arb_), + _ard_=caml_call2(Runtime_ocaml_Runtime[83],_arc_,_ara_); + return caml_call2(Runtime_ocaml_Runtime[29],_Kv_,_ard_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Kw_,[0],_aq__,_aq9_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Kx_,_aq8_,_aq7_,_aq6_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ky_,_aq5_,_aq4_,_aq3_)}], + _aq1_=caml_call4(Runtime_ocaml_Runtime[63],_Kz_,_aq0_,_aqZ_,_aqY_); + return _aq1_} + catch(_aq2_) + {_aq2_ = caml_wrap_exception(_aq2_); + if(_aq2_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_J__]; + throw _aq2_}} + var + calcul_plafond_mensualite_d842$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_KA_,Runtime_ocaml_Runtime[10],_aou_); + try + {var + _aov_= + function(param) + {if + (caml_call2 + (Runtime_ocaml_Runtime[118], + ressources_menage_arrondies_ba, + seuil_minimal_ressources_menag)) + {var + _aqS_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$11), + _aqT_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01), + _aqU_=caml_call1(Runtime_ocaml_Runtime[31],cst_4999), + _aqV_= + caml_call2 + (Runtime_ocaml_Runtime[93], + seuil_minimal_ressources_menag, + _aqU_), + _aqW_=caml_call2(Runtime_ocaml_Runtime[104],_aqV_,_aqT_), + _aqX_=caml_call1(Runtime_ocaml_Runtime[77],_aqW_); + return caml_call2(Runtime_ocaml_Runtime[104],_aqX_,_aqS_)} + return ressources_menage_arrondies_ba}, + _aow_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_KC_,1)}, + _aox_= + [0, + function(param) + {function _aqQ_(param){return ressources_menage_arrondies_ba} + function _aqR_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_KD_,situation_r822_11_13_17)} + return caml_call4(Runtime_ocaml_Runtime[63],_KE_,[0],_aqR_,_aqQ_)}], + _aoy_=caml_call4(Runtime_ocaml_Runtime[63],_KF_,_aox_,_aow_,_aov_)} + catch(_aqP_) + {_aqP_ = caml_wrap_exception(_aqP_); + if(_aqP_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_KB_]; + throw _aqP_} + var + ressources_menage_arrondies_se= + caml_call3 + (Runtime_ocaml_Runtime[28],_KG_,Runtime_ocaml_Runtime[13],_aoy_); + try + {var + _aoz_= + function(param) + {var + _aqM_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KI_, + Runtime_ocaml_Runtime[16], + date_signature_pret), + _aqN_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _KJ_, + calcul_plafond_mensualite_d842$0), + _aqM_), + _aqO_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KK_, + Runtime_ocaml_Runtime[13], + _aqN_); + return caml_call2(Runtime_ocaml_Runtime[27],_KL_,_aqO_)}, + _aoA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_KM_,1)}, + _aoB_= + [0, + function(param) + {function _aqE_(param) + {var + _aqG_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KN_, + Runtime_ocaml_Runtime[16], + date_signature_pret), + _aqH_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _KO_, + calcul_plafond_mensualite_d842$0), + _aqG_), + _aqI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KP_, + Runtime_ocaml_Runtime[13], + _aqH_), + plafond_signature= + caml_call2(Runtime_ocaml_Runtime[27],_KQ_,_aqI_), + _aqJ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KR_, + Runtime_ocaml_Runtime[16], + date_entree_logement), + _aqK_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _KS_, + calcul_plafond_mensualite_d842$0), + _aqJ_), + _aqL_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _KT_, + Runtime_ocaml_Runtime[13], + _aqK_), + plafond_entree= + caml_call2(Runtime_ocaml_Runtime[27],_KU_,_aqL_); + return caml_call2 + (Runtime_ocaml_Runtime[113], + plafond_signature, + plafond_entree) + ?plafond_entree + :plafond_signature} + function _aqF_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29], + _KV_, + local_habite_premiere_fois_ben)} + return caml_call4(Runtime_ocaml_Runtime[63],_KW_,[0],_aqF_,_aqE_)}], + _aoC_=caml_call4(Runtime_ocaml_Runtime[63],_KX_,_aoB_,_aoA_,_aoz_)} + catch(_aqD_) + {_aqD_ = caml_wrap_exception(_aqD_); + if(_aqD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_KH_]; + throw _aqD_} + var + plafond_mensualite_d842_6= + caml_call3 + (Runtime_ocaml_Runtime[28],_KY_,Runtime_ocaml_Runtime[13],_aoC_); + try + {var + _aoD_=function(param){return ressources_menage_arrondies_se}, + _aoE_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K0_,1)}, + _aoF_=caml_call4(Runtime_ocaml_Runtime[63],_K1_,[0],_aoE_,_aoD_), + calcul_equivalence_loyer_minim$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_K2_,Runtime_ocaml_Runtime[13],_aoF_)} + catch(_aqC_) + {_aqC_ = caml_wrap_exception(_aqC_); + if(_aqC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_KZ_]; + throw _aqC_} + try + {var + _aoG_=function(param){return 1}, + _aoH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K4_,1)}, + _aoI_=caml_call4(Runtime_ocaml_Runtime[63],_K5_,[0],_aoH_,_aoG_), + calcul_equivalence_loyer_minim$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_K6_,Runtime_ocaml_Runtime[12],_aoI_)} + catch(_aqB_) + {_aqB_ = caml_wrap_exception(_aqB_); + if(_aqB_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_K3_]; + throw _aqB_} + try + {var + _aoJ_=function(param){return calcul_nombre_parts_dot_n_nomb}, + _aoK_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_K8_,1)}, + _aoL_=caml_call4(Runtime_ocaml_Runtime[63],_K9_,[0],_aoK_,_aoJ_), + calcul_equivalence_loyer_minim$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_K__,Runtime_ocaml_Runtime[15],_aoL_)} + catch(_aqA_) + {_aqA_ = caml_wrap_exception(_aqA_); + if(_aqA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_K7_]; + throw _aqA_} + var + _aoM_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_K$_,calcul_equivalence_loyer_minim), + [0, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_equivalence_loyer_minim$2]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_La_,_aoM_), + calcul_equivalence_loyer_minim$3=result$1[1]; + try + {var + _aoN_=function(param){return _Lc_}, + _aoO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ld_,1)}, + _aoP_=caml_call4(Runtime_ocaml_Runtime[63],_Le_,[0],_aoO_,_aoN_), + calcul_apl_logement_foyer_dot_= + caml_call3 + (Runtime_ocaml_Runtime[28],_Lf_,embed_type_logement_foyer,_aoP_)} + catch(_aqz_) + {_aqz_ = caml_wrap_exception(_aqz_); + if(_aqz_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lb_]; + throw _aqz_} + try + {var + _aoQ_= + function(param) + {return caml_call3(Runtime_ocaml_Runtime[57],1970,1,1)}, + _aoR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lh_,1)}, + _aoS_=caml_call4(Runtime_ocaml_Runtime[63],_Li_,[0],_aoR_,_aoQ_), + calcul_apl_logement_foyer_dot_$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_Lj_,Runtime_ocaml_Runtime[16],_aoS_)} + catch(_aqy_) + {_aqy_ = caml_wrap_exception(_aqy_); + if(_aqy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lg_]; + throw _aqy_} + try + {var + _aoT_=function(param){return ressources_menage_arrondies_se}, + _aoU_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ll_,1)}, + _aoV_=caml_call4(Runtime_ocaml_Runtime[63],_Lm_,[0],_aoU_,_aoT_), + calcul_apl_logement_foyer_dot_$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ln_,Runtime_ocaml_Runtime[13],_aoV_)} + catch(_aqx_) + {_aqx_ = caml_wrap_exception(_aqx_); + if(_aqx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lk_]; + throw _aqx_} + try + {var + _aoW_=function(param){return nombre_personnes_a_charge}, + _aoX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lp_,1)}, + _aoY_=caml_call4(Runtime_ocaml_Runtime[63],_Lq_,[0],_aoX_,_aoW_), + calcul_apl_logement_foyer_dot_$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Lr_,Runtime_ocaml_Runtime[14],_aoY_)} + catch(_aqw_) + {_aqw_ = caml_wrap_exception(_aqw_); + if(_aqw_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lo_]; + throw _aqw_} + try + {var + _aoZ_=function(param){return situation_familiale_calcul_apl}, + _ao0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lt_,1)}, + _ao1_=caml_call4(Runtime_ocaml_Runtime[63],_Lu_,[0],_ao0_,_aoZ_), + calcul_apl_logement_foyer_dot_$3= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Lv_, + embed_situation_familiale_calc, + _ao1_)} + catch(_aqv_) + {_aqv_ = caml_wrap_exception(_aqv_); + if(_aqv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ls_]; + throw _aqv_} + try + {var + _ao2_=function(param){return zone}, + _ao3_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Lx_,1)}, + _ao4_=caml_call4(Runtime_ocaml_Runtime[63],_Ly_,[0],_ao3_,_ao2_), + calcul_apl_logement_foyer_dot_$4= + caml_call3 + (Runtime_ocaml_Runtime[28],_Lz_,embed_zone_d_habitation,_ao4_)} + catch(_aqu_) + {_aqu_ = caml_wrap_exception(_aqu_); + if(_aqu_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Lw_]; + throw _aqu_} + try + {var + _ao5_=function(param){return date_courante}, + _ao6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LB_,1)}, + _ao7_=caml_call4(Runtime_ocaml_Runtime[63],_LC_,[0],_ao6_,_ao5_), + calcul_apl_logement_foyer_dot_$5= + caml_call3 + (Runtime_ocaml_Runtime[28],_LD_,Runtime_ocaml_Runtime[16],_ao7_)} + catch(_aqt_) + {_aqt_ = caml_wrap_exception(_aqt_); + if(_aqt_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_LA_]; + throw _aqt_} + try + {var + _ao8_= + function(param) + {return caml_call1(Runtime_ocaml_Runtime[31],cst_0$382)}, + _ao9_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LF_,1)}, + _ao__=caml_call4(Runtime_ocaml_Runtime[63],_LG_,[0],_ao9_,_ao8_), + calcul_apl_logement_foyer_dot_$6= + caml_call3 + (Runtime_ocaml_Runtime[28],_LH_,Runtime_ocaml_Runtime[13],_ao__)} + catch(_aqs_) + {_aqs_ = caml_wrap_exception(_aqs_); + if(_aqs_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_LE_]; + throw _aqs_} + function calcul_apl_logement_foyer_dot_$7(param) + {function _aqp_(param){return 1} + function _aqq_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_LI_,1)} + var _aqr_=caml_call4(Runtime_ocaml_Runtime[63],_LJ_,[0],_aqq_,_aqp_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _LK_, + Runtime_ocaml_Runtime[12], + _aqr_)} + function calcul_apl_logement_foyer_dot_$8(param) + {function _aqm_(param){return calcul_nombre_parts_dot_n_nomb} + function _aqn_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_LL_,1)} + var _aqo_=caml_call4(Runtime_ocaml_Runtime[63],_LM_,[0],_aqn_,_aqm_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _LN_, + Runtime_ocaml_Runtime[15], + _aqo_)} + var + _ao$_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_LO_,calcul_aide_personnalisee_loge$0), + [0, + calcul_apl_logement_foyer_dot_, + calcul_apl_logement_foyer_dot_$0, + calcul_apl_logement_foyer_dot_$1, + calcul_apl_logement_foyer_dot_$2, + calcul_apl_logement_foyer_dot_$3, + calcul_apl_logement_foyer_dot_$4, + calcul_apl_logement_foyer_dot_$5, + calcul_apl_logement_foyer_dot_$6, + calcul_apl_logement_foyer_dot_$7, + calcul_apl_logement_foyer_dot_$8]), + result$2=caml_call2(Runtime_ocaml_Runtime[27],_LP_,_ao$_), + calcul_apl_logement_foyer_dot_$9=result$2[7]; + try + {var + _apa_=function(param){return montant_forfaitaire_d842_11}, + _apb_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LR_,1)}, + _apc_= + [0, + function(param) + {function _aqc_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_arrondies_se, + coefficient_d842_11)} + function _aqd_(param) + {var + _aqe_=caml_call3(Runtime_ocaml_Runtime[57],1999,7,1), + _aqf_= + caml_call2 + (Runtime_ocaml_Runtime[130],date_signature_pret,_aqe_); + switch(type_travaux_logement[0]) + {case 0:var _aqg_=0;break; + case 1:var _aqg_=0;break; + case 2:var _aqg_=1;break; + default:var _aqg_=0} + switch(type_travaux_logement[0]) + {case 0:var _aqh_=1;break; + case 1:var _aqh_=0;break; + case 2:var _aqh_=0;break; + default:var _aqh_=0} + var _aqi_=caml_call2(Runtime_ocaml_Runtime[84],_aqh_,_aqg_); + switch(type_travaux_logement[0]) + {case 0:var _aqj_=0;break; + case 1:var _aqj_=0;break; + case 2:var _aqj_=0;break; + default:var _aqj_=1} + var + _aqk_=caml_call2(Runtime_ocaml_Runtime[84],_aqj_,_aqi_), + _aql_=caml_call2(Runtime_ocaml_Runtime[83],_aqk_,_aqf_); + return caml_call2(Runtime_ocaml_Runtime[29],_LS_,_aql_)} + return caml_call4(Runtime_ocaml_Runtime[63],_LT_,[0],_aqd_,_aqc_)}], + _apd_=caml_call4(Runtime_ocaml_Runtime[63],_LU_,_apc_,_apb_,_apa_)} + catch(_aqb_) + {_aqb_ = caml_wrap_exception(_aqb_); + if(_aqb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_LQ_]; + throw _aqb_} + var + seuil_minimal_depense_nette_mi= + caml_call3 + (Runtime_ocaml_Runtime[28],_LV_,Runtime_ocaml_Runtime[13],_apd_); + try + {var + _ape_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[123], + mensualite_principale, + plafond_mensualite_d842_6) + ?plafond_mensualite_d842_6 + :mensualite_principale}, + _apf_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_LX_,1)}, + _apg_=caml_call4(Runtime_ocaml_Runtime[63],_LY_,[0],_apf_,_ape_)} + catch(_aqa_) + {_aqa_ = caml_wrap_exception(_aqa_); + if(_aqa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_LW_]; + throw _aqa_} + var + mensualite_eligible= + caml_call3 + (Runtime_ocaml_Runtime[28],_LZ_,Runtime_ocaml_Runtime[13],_apg_); + try + {var + _aph_=function(param){return calcul_equivalence_loyer_minim$3}, + _api_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L1_,1)}, + _apj_=caml_call4(Runtime_ocaml_Runtime[63],_L2_,[0],_api_,_aph_)} + catch(_ap$_) + {_ap$_ = caml_wrap_exception(_ap$_); + if(_ap$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_L0_]; + throw _ap$_} + var + mensualite_minimale= + caml_call3 + (Runtime_ocaml_Runtime[28],_L3_,Runtime_ocaml_Runtime[13],_apj_); + try + {var + _apk_=function(param){return calcul_apl_logement_foyer_dot_$9}, + _apl_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_L5_,1)}, + _apm_=caml_call4(Runtime_ocaml_Runtime[63],_L6_,[0],_apl_,_apk_)} + catch(_ap__) + {_ap__ = caml_wrap_exception(_ap__); + if(_ap__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_L4_]; + throw _ap__} + var + coefficient_prise_en_charge= + caml_call3 + (Runtime_ocaml_Runtime[28],_L7_,Runtime_ocaml_Runtime[15],_apm_); + function _apn_(allocation_mensuelle) + {try + {var + _ap3_= + function(param) + {var + _ap7_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _L9_, + Runtime_ocaml_Runtime[13], + allocation_mensuelle), + _ap8_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_L__,depense_nette_minimale), + _ap7_), + _ap9_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _L$_, + Runtime_ocaml_Runtime[13], + _ap8_), + depense_nette_minimale$0= + caml_call2(Runtime_ocaml_Runtime[27],_Ma_,_ap9_); + return caml_call2 + (Runtime_ocaml_Runtime[113], + depense_nette_minimale$0, + seuil_minimal_depense_nette_mi) + ?caml_call2 + (Runtime_ocaml_Runtime[98], + seuil_minimal_depense_nette_mi, + depense_nette_minimale$0) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$383)}, + _ap4_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Mb_,1)}, + _ap5_=caml_call4(Runtime_ocaml_Runtime[63],_Mc_,[0],_ap4_,_ap3_); + return _ap5_} + catch(_ap6_) + {_ap6_ = caml_wrap_exception(_ap6_); + if(_ap6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_L8_]; + throw _ap6_}} + var + abattement_depense_nette_minim= + caml_call3 + (Runtime_ocaml_Runtime[28],_Md_,Runtime_ocaml_Runtime[10],_apn_); + try + {var + _apo_= + function(param) + {var + _ap1_= + caml_call2 + (Runtime_ocaml_Runtime[93], + mensualite_eligible, + montant_forfaitaire_charges), + _ap2_= + caml_call2(Runtime_ocaml_Runtime[98],_ap1_,mensualite_minimale); + return caml_call2 + (Runtime_ocaml_Runtime[104], + _ap2_, + coefficient_prise_en_charge)}, + _app_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Mf_,1)}, + _apq_=caml_call4(Runtime_ocaml_Runtime[63],_Mg_,[0],_app_,_apo_)} + catch(_ap0_) + {_ap0_ = caml_wrap_exception(_ap0_); + if(_ap0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Me_]; + throw _ap0_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_Mh_,Runtime_ocaml_Runtime[13],_apq_); + function _apr_(aide_finale) + {try + {var + _apQ_= + function(param) + {var + _apU_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mj_, + Runtime_ocaml_Runtime[13], + aide_finale), + _apV_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Mk_, + traitement_aide_finale_minorat), + _apU_), + _apW_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ml_, + Runtime_ocaml_Runtime[13], + _apV_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_Mm_,_apW_), + _apX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mn_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _apY_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Mo_, + abattement_depense_nette_minim), + _apX_), + _apZ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mp_, + Runtime_ocaml_Runtime[13], + _apY_), + abattement=caml_call2(Runtime_ocaml_Runtime[27],_Mq_,_apZ_); + return caml_call2 + (Runtime_ocaml_Runtime[113],aide_finale$0,abattement) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$384) + :caml_call2 + (Runtime_ocaml_Runtime[98],aide_finale$0,abattement)}, + _apR_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Mr_,1)}, + _apS_=caml_call4(Runtime_ocaml_Runtime[63],_Ms_,[0],_apR_,_apQ_); + return _apS_} + catch(_apT_) + {_apT_ = caml_wrap_exception(_apT_); + if(_apT_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Mi_]; + throw _apT_}} + var + traitement_aide_finale_depense= + caml_call3 + (Runtime_ocaml_Runtime[28],_Mt_,Runtime_ocaml_Runtime[10],_apr_); + function _aps_(aide_finale) + {try + {var + _apB_= + function(param) + {var + _apF_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mv_, + Runtime_ocaml_Runtime[13], + aide_finale), + _apG_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Mw_, + traitement_aide_finale_depense), + _apF_), + _apH_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mx_, + Runtime_ocaml_Runtime[13], + _apG_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_My_,_apH_), + _apI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Mz_, + Runtime_ocaml_Runtime[13], + aide_finale$0), + _apJ_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _MA_, + contributions_sociales_dot_mon), + _apI_), + _apK_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _MB_, + Runtime_ocaml_Runtime[13], + _apJ_), + crds=caml_call2(Runtime_ocaml_Runtime[27],_MC_,_apK_), + _apL_=caml_call1(Runtime_ocaml_Runtime[31],cst_50$3), + _apM_=caml_call2(Runtime_ocaml_Runtime[98],aide_finale$0,crds), + _apN_=caml_call2(Runtime_ocaml_Runtime[98],_apM_,_apL_), + aide_finale_moins_crds_arrondi= + caml_call1(Runtime_ocaml_Runtime[77],_apN_), + _apO_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$385), + _apP_= + caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds); + return caml_call2(Runtime_ocaml_Runtime[128],_apP_,_apO_) + ?caml_call2 + (Runtime_ocaml_Runtime[93], + aide_finale_moins_crds_arrondi, + crds) + :caml_call1(Runtime_ocaml_Runtime[31],cst_0$386)}, + _apC_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_MD_,1)}, + _apD_=caml_call4(Runtime_ocaml_Runtime[63],_ME_,[0],_apC_,_apB_); + return _apD_} + catch(_apE_) + {_apE_ = caml_wrap_exception(_apE_); + if(_apE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Mu_]; + throw _apE_}} + var + traitement_aide_finale_contrib= + caml_call3 + (Runtime_ocaml_Runtime[28],_MF_,Runtime_ocaml_Runtime[10],_aps_); + function _apt_(aide_finale) + {try + {var + _apu_= + function(param) + {var + _apy_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _MH_, + Runtime_ocaml_Runtime[13], + aide_finale), + _apz_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _MI_, + traitement_aide_finale_contrib), + _apy_), + _apA_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _MJ_, + Runtime_ocaml_Runtime[13], + _apz_), + aide_finale$0=caml_call2(Runtime_ocaml_Runtime[27],_MK_,_apA_); + return caml_call2 + (Runtime_ocaml_Runtime[113], + aide_finale$0, + montant_minimal_aide_d842_6) + ?caml_call1(Runtime_ocaml_Runtime[31],cst_0$387) + :aide_finale$0}, + _apv_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_ML_,1)}, + _apw_=caml_call4(Runtime_ocaml_Runtime[63],_MM_,[0],_apv_,_apu_); + return _apw_} + catch(_apx_) + {_apx_ = caml_wrap_exception(_apx_); + if(_apx_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_MG_]; + throw _apx_}} + var + traitement_aide_finale_montant= + caml_call3 + (Runtime_ocaml_Runtime[28],_MN_,Runtime_ocaml_Runtime[10],_apt_); + return [0,aide_finale_formule,traitement_aide_finale_montant]} + function calcul_aide_personnalisee_loge$2 + (calcul_aide_personnalisee_loge$2) + {var + mode_occupation=calcul_aide_personnalisee_loge$2[1], + type_aide=calcul_aide_personnalisee_loge$2[2], + ressources_menage_sans_arrondi=calcul_aide_personnalisee_loge$2[3], + situation_familiale=calcul_aide_personnalisee_loge$2[4], + nombre_personnes_a_charge=calcul_aide_personnalisee_loge$2[5], + zone=calcul_aide_personnalisee_loge$2[6], + date_courante=calcul_aide_personnalisee_loge$2[7]; + try + {var + _amW_= + function(param) + {switch(mode_occupation[0]) + {case 0:var location=mode_occupation[1];return [0,location]; + case 1: + var logementfoyer=mode_occupation[1];return [2,logementfoyer]; + case 2: + var proprietaire=mode_occupation[1];return [1,proprietaire]; + case 3:var location$0=mode_occupation[1];return [0,location$0]; + default: + var proprietaire$0=mode_occupation[1];return [1,proprietaire$0]}}, + _amX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MP_,1)}, + _amY_=caml_call4(Runtime_ocaml_Runtime[63],_MQ_,[0],_amX_,_amW_)} + catch(_anM_) + {_anM_ = caml_wrap_exception(_anM_); + if(_anM_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_MO_]; + throw _anM_} + var + categorie_calcul_apl= + caml_call3 + (Runtime_ocaml_Runtime[28],_MR_,embed_categorie_calcul_a_p_l,_amY_); + try + {var + _amZ_= + function(param) + {var + _anG_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$12), + _anH_=caml_call1(Runtime_ocaml_Runtime[31],cst_49), + _anI_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$0), + _anJ_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_sans_arrondi, + _anI_), + _anK_=caml_call2(Runtime_ocaml_Runtime[93],_anJ_,_anH_), + _anL_=caml_call1(Runtime_ocaml_Runtime[77],_anK_); + return caml_call2(Runtime_ocaml_Runtime[104],_anL_,_anG_)}, + _am0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_MT_,1)}, + _am1_=caml_call4(Runtime_ocaml_Runtime[63],_MU_,[0],_am0_,_amZ_)} + catch(_anF_) + {_anF_ = caml_wrap_exception(_anF_); + if(_anF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_MS_]; + throw _anF_} + var + ressources_menage_avec_arrondi= + caml_call3 + (Runtime_ocaml_Runtime[28],_MV_,Runtime_ocaml_Runtime[13],_am1_); + try + {var + _am2_= + function(param) + {switch(situation_familiale[0]) + {case 0:return _MX_; + case 1:return _MY_; + case 2:return _MZ_; + case 3:return _M0_; + case 4:return _M1_; + default:return _M2_}}, + _am3_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_M3_,1)}, + _am4_=caml_call4(Runtime_ocaml_Runtime[63],_M4_,[0],_am3_,_am2_)} + catch(_anE_) + {_anE_ = caml_wrap_exception(_anE_); + if(_anE_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_MW_]; + throw _anE_} + var + situation_familiale_calcul_apl= + caml_call3 + (Runtime_ocaml_Runtime[28],_M5_,embed_situation_familiale_calc,_am4_); + try + {var + _am5_= + function(param) + {switch(categorie_calcul_apl[0]) + {case 0: + var location=categorie_calcul_apl[1],_ang_=location[7]; + try + {var _anh_=location[1]; + switch(_anh_[0]) + {case 0:var bailleur=_anh_[1],_ani_=bailleur[2];break; + case 1: + var _ani_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$388); + break; + default: + var _ani_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$389)}} + catch(_anA_) + {_anA_ = caml_wrap_exception(_anA_); + if(_anA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_M7_]; + throw _anA_} + var + _anj_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _M8_, + embed_calcul_aide_personnalise$3, + [0, + location[2], + ressources_menage_avec_arrondi, + location[3], + date_courante, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + location[4], + location[6], + type_aide, + location[5], + _ani_, + _ang_]), + result= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _M9_, + calcul_aide_personnalisee_loge), + _anj_), + _ank_= + function(param0) + {var + _anx_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _M__, + Runtime_ocaml_Runtime[13], + param0), + _any_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_M$_,result[7]),_anx_), + _anz_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Na_, + Runtime_ocaml_Runtime[13], + _any_); + return caml_call2(Runtime_ocaml_Runtime[27],_Nb_,_anz_)}, + result$0= + [0, + result[1], + result[2], + result[3], + result[4], + result[5], + result[6], + _ank_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Nc_,1)) + {var + _anl_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nd_, + embed_calcul_aide_personnalise, + result$0), + traitement_formule= + caml_call2(Runtime_ocaml_Runtime[27],_Ne_,_anl_); + return [0,traitement_formule[6],traitement_formule[7]]} + throw Runtime_ocaml_Runtime[2]; + case 1: + var + proprietaire=categorie_calcul_apl[1], + _anm_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nf_, + embed_calcul_aide_personnalise$5, + [0, + proprietaire[2], + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + proprietaire[5], + proprietaire[11][2], + proprietaire[7], + proprietaire[4], + proprietaire[8], + proprietaire[9], + zone, + proprietaire[11][1], + proprietaire[10], + date_courante]), + result$1= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ng_, + calcul_aide_personnalisee_loge$1), + _anm_), + _ann_= + function(param0) + {var + _anu_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nh_, + Runtime_ocaml_Runtime[13], + param0), + _anv_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_Ni_,result$1[5]), + _anu_), + _anw_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nj_, + Runtime_ocaml_Runtime[13], + _anv_); + return caml_call2(Runtime_ocaml_Runtime[27],_Nk_,_anw_)}, + result$2= + [0,result$1[1],result$1[2],result$1[3],result$1[4],_ann_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Nl_,1)) + {var + _ano_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nm_, + embed_calcul_aide_personnalise$1, + result$2), + traitement_formule$0= + caml_call2(Runtime_ocaml_Runtime[27],_Nn_,_ano_); + return [0,traitement_formule$0[4],traitement_formule$0[5]]} + throw Runtime_ocaml_Runtime[2]; + default: + var + logement_foyer=categorie_calcul_apl[1], + _anp_=function(param){throw Runtime_ocaml_Runtime[2]}, + _anq_=function(param){throw Runtime_ocaml_Runtime[2]}, + _anr_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _No_, + embed_calcul_aide_personnalise$4, + [0, + logement_foyer[1], + logement_foyer[4], + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + date_courante, + logement_foyer[6], + _anq_, + _anp_]), + result$3= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Np_, + calcul_aide_personnalisee_loge$0), + _anr_), + _ans_= + function(param0) + {var + _anB_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nq_, + Runtime_ocaml_Runtime[13], + param0), + _anC_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_Nr_,result$3[9]), + _anB_), + _anD_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Ns_, + Runtime_ocaml_Runtime[13], + _anC_); + return caml_call2(Runtime_ocaml_Runtime[27],_Nt_,_anD_)}, + result$4= + [0, + result$3[1], + result$3[2], + result$3[3], + result$3[4], + result$3[5], + result$3[6], + result$3[7], + result$3[8], + _ans_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Nu_,1)) + {var + _ant_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Nv_, + embed_calcul_aide_personnalise$0, + result$4), + traitement_formule$1= + caml_call2(Runtime_ocaml_Runtime[27],_Nw_,_ant_); + return [0,traitement_formule$1[8],traitement_formule$1[9]]} + throw Runtime_ocaml_Runtime[2]}}, + _am6_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Nx_,1)}, + _am7_=caml_call4(Runtime_ocaml_Runtime[63],_Ny_,[0],_am6_,_am5_)} + catch(_anf_) + {_anf_ = caml_wrap_exception(_anf_); + if(_anf_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_M6_]; + throw _anf_} + var + sous_calcul_traitement= + caml_call3 + (Runtime_ocaml_Runtime[28],_Nz_,embed_traitement_formule_aide_,_am7_); + function _am8_(arg) + {try + {var + _anb_= + function(param){return caml_call1(sous_calcul_traitement[2],arg)}, + _anc_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_NB_,1)}, + _and_=caml_call4(Runtime_ocaml_Runtime[63],_NC_,[0],_anc_,_anb_); + return _and_} + catch(_ane_) + {_ane_ = caml_wrap_exception(_ane_); + if(_ane_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NA_]; + throw _ane_}} + var + traitement_aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_ND_,Runtime_ocaml_Runtime[10],_am8_); + try + {var + _am9_=function(param){return sous_calcul_traitement[1]}, + _am__= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NF_,1)}, + _am$_=caml_call4(Runtime_ocaml_Runtime[63],_NG_,[0],_am__,_am9_)} + catch(_ana_) + {_ana_ = caml_wrap_exception(_ana_); + if(_ana_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NE_]; + throw _ana_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_NH_,Runtime_ocaml_Runtime[13],_am$_); + return [0,aide_finale_formule,traitement_aide_finale]} + function eligibilite_prime_de_demenagem(eligibilite_prime_de_demenagem) + {var + informations=eligibilite_prime_de_demenagem[1], + date_emmenagement=eligibilite_prime_de_demenagem[2], + menage=eligibilite_prime_de_demenagem[3], + demandeur=eligibilite_prime_de_demenagem[4], + date_courante=eligibilite_prime_de_demenagem[5], + depenses_justifiees_reellement=eligibilite_prime_de_demenagem[6]; + try + {var + _alx_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],0,6,0)}, + _aly_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NJ_,1)}, + _alz_=caml_call4(Runtime_ocaml_Runtime[63],_NK_,[0],_aly_,_alx_)} + catch(_amV_) + {_amV_ = caml_wrap_exception(_amV_); + if(_amV_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NI_]; + throw _amV_} + var + delai_apres_emmenagement_l823_= + caml_call3 + (Runtime_ocaml_Runtime[28],_NL_,Runtime_ocaml_Runtime[17],_alz_); + try + {var + _alA_=function(param){return 0}, + _alB_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NN_,1)}, + _alC_= + [0, + function(param) + {function _amL_(param){return 1} + function _amM_(param) + {var + _amN_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$92), + _amO_=informations[1], + _amP_=menage[3]; + function _amQ_(personne_a_charge) + {return 0 === personne_a_charge[0]?1:0} + var + _amR_=caml_call2(Runtime_ocaml_Runtime[90],_amQ_,_amP_), + _amS_=caml_call1(Runtime_ocaml_Runtime[68],_amR_), + _amT_=caml_call2(Runtime_ocaml_Runtime[91],_amS_,_amO_), + _amU_=caml_call2(Runtime_ocaml_Runtime[126],_amT_,_amN_); + return caml_call2(Runtime_ocaml_Runtime[29],_NO_,_amU_)} + return caml_call4(Runtime_ocaml_Runtime[63],_NP_,[0],_amM_,_amL_)}], + _alD_=caml_call4(Runtime_ocaml_Runtime[63],_NQ_,_alC_,_alB_,_alA_)} + catch(_amK_) + {_amK_ = caml_wrap_exception(_amK_); + if(_amK_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NM_]; + throw _amK_} + var + condition_rang_enfant= + caml_call3 + (Runtime_ocaml_Runtime[28],_NR_,Runtime_ocaml_Runtime[12],_alD_); + try + {var + _alE_=function(param){return date_courante}, + _alF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NT_,1)}, + _alG_=caml_call4(Runtime_ocaml_Runtime[63],_NU_,[0],_alF_,_alE_), + base_mensuelle_allocations_fam= + caml_call3 + (Runtime_ocaml_Runtime[28],_NV_,Runtime_ocaml_Runtime[16],_alG_)} + catch(_amJ_) + {_amJ_ = caml_wrap_exception(_amJ_); + if(_amJ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NS_]; + throw _amJ_} + var + _alH_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_NW_,base_mensuelle_allocations_fam$5), + [0,base_mensuelle_allocations_fam]), + result=caml_call2(Runtime_ocaml_Runtime[27],_NX_,_alH_), + base_mensuelle_allocations_fam$0=result[1]; + try + {var + _alI_=function(param){return menage}, + _alJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_NZ_,1)}, + _alK_=caml_call4(Runtime_ocaml_Runtime[63],_N0_,[0],_alJ_,_alI_), + eligibilite_apl_dot_menage= + caml_call3(Runtime_ocaml_Runtime[28],_N1_,embed_menage,_alK_)} + catch(_amI_) + {_amI_ = caml_wrap_exception(_amI_); + if(_amI_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_NY_]; + throw _amI_} + try + {var + _alL_=function(param){return demandeur}, + _alM_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_N3_,1)}, + _alN_=caml_call4(Runtime_ocaml_Runtime[63],_N4_,[0],_alM_,_alL_), + eligibilite_apl_dot_demandeur= + caml_call3(Runtime_ocaml_Runtime[28],_N5_,embed_demandeur,_alN_)} + catch(_amH_) + {_amH_ = caml_wrap_exception(_amH_); + if(_amH_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_N2_]; + throw _amH_} + try + {var + _alO_=function(param){return date_courante}, + _alP_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_N7_,1)}, + _alQ_=caml_call4(Runtime_ocaml_Runtime[63],_N8_,[0],_alP_,_alO_), + eligibilite_apl_dot_date_coura= + caml_call3 + (Runtime_ocaml_Runtime[28],_N9_,Runtime_ocaml_Runtime[16],_alQ_)} + catch(_amG_) + {_amG_ = caml_wrap_exception(_amG_); + if(_amG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_N6_]; + throw _amG_} + function eligibilite_apl_dot_condition_(param) + {throw Runtime_ocaml_Runtime[2]} + function eligibilite_apl_dot_condition_$0(param) + {throw Runtime_ocaml_Runtime[2]} + var + _alR_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_N__,eligibilite_aides_personnelle_), + [0, + eligibilite_apl_dot_menage, + eligibilite_apl_dot_demandeur, + eligibilite_apl_dot_date_coura, + eligibilite_apl_dot_condition_, + eligibilite_apl_dot_condition_$0]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_N$_,_alR_), + eligibilite_apl_dot_date_coura$0=result$0[1], + eligibilite_apl_dot_eligibilit=result$0[2]; + try + {var + _alS_=function(param){return 0}, + _alT_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ob_,1)}, + _alU_= + [0, + function(param) + {function _amw_(param){return 1} + function _amx_(param) + {var _amy_=informations[2]; + if(0 === _amy_[0]) + var _amz_=0; + else + {var date_naissance_ou_grossesse=_amy_[1]; + switch(date_naissance_ou_grossesse[0]) + {case 0: + var + date_naissance=date_naissance_ou_grossesse[1], + _amA_=caml_call3(Runtime_ocaml_Runtime[60],0,0,-1), + _amB_=caml_call3(Runtime_ocaml_Runtime[60],2,0,0), + _amC_= + caml_call2(Runtime_ocaml_Runtime[94],date_naissance,_amB_), + _amD_=caml_call1(Runtime_ocaml_Runtime[75],_amC_), + _amE_=caml_call2(Runtime_ocaml_Runtime[94],_amD_,_amA_), + _amF_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_amE_); + break; + case 1:var _amF_=0;break; + default:var _amF_=1} + var _amz_=_amF_} + return caml_call2(Runtime_ocaml_Runtime[29],_Oc_,_amz_)} + return caml_call4(Runtime_ocaml_Runtime[63],_Od_,[0],_amx_,_amw_)}], + _alV_=caml_call4(Runtime_ocaml_Runtime[63],_Oe_,_alU_,_alT_,_alS_)} + catch(_amv_) + {_amv_ = caml_wrap_exception(_amv_); + if(_amv_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Oa_]; + throw _amv_} + var + condition_periode_demenagement= + caml_call3 + (Runtime_ocaml_Runtime[28],_Of_,Runtime_ocaml_Runtime[12],_alV_); + try + {var + _alW_= + function(param) + {var + _ame_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$93), + _amf_=menage[3]; + function _amg_(personne_a_charge) + {return 0 === personne_a_charge[0]?1:0} + var + _amh_=caml_call2(Runtime_ocaml_Runtime[90],_amg_,_amf_), + _ami_=caml_call1(Runtime_ocaml_Runtime[68],_amh_); + if(caml_call2(Runtime_ocaml_Runtime[121],_ami_,_ame_)) + var + _amj_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_2$1), + _amk_=caml_call1(Runtime_ocaml_Runtime[46],cst_3$94), + _aml_=menage[3], + _amm_= + function(personne_a_charge) + {return 0 === personne_a_charge[0]?1:0}, + _amn_=caml_call2(Runtime_ocaml_Runtime[90],_amm_,_aml_), + _amo_=caml_call1(Runtime_ocaml_Runtime[68],_amn_), + _amp_=caml_call2(Runtime_ocaml_Runtime[96],_amo_,_amk_), + _amq_=caml_call1(Runtime_ocaml_Runtime[69],_amp_), + _amr_=caml_call2(Runtime_ocaml_Runtime[103],_amq_,_amj_), + _ams_= + caml_call2 + (Runtime_ocaml_Runtime[104], + base_mensuelle_allocations_fam$0, + _amr_); + else + var _ams_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$390); + var + _amt_=caml_call1(Runtime_ocaml_Runtime[39],cst_2_4), + _amu_= + caml_call2 + (Runtime_ocaml_Runtime[104], + base_mensuelle_allocations_fam$0, + _amt_); + return caml_call2(Runtime_ocaml_Runtime[93],_amu_,_ams_)}, + _alX_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Oh_,1)}, + _alY_=caml_call4(Runtime_ocaml_Runtime[63],_Oi_,[0],_alX_,_alW_)} + catch(_amd_) + {_amd_ = caml_wrap_exception(_amd_); + if(_amd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Og_]; + throw _amd_} + var + plafond_d823_22= + caml_call3 + (Runtime_ocaml_Runtime[28],_Oj_,Runtime_ocaml_Runtime[13],_alY_); + try + {var + _alZ_=function(param){return 0}, + _al0_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ol_,1)}, + _al1_= + [0, + function(param) + {function _al8_(param){return 1} + function _al9_(param) + {var + _al__= + caml_call2 + (Runtime_ocaml_Runtime[99], + eligibilite_apl_dot_date_coura$0, + date_emmenagement), + _al$_= + caml_call2 + (Runtime_ocaml_Runtime[119], + _al__, + delai_apres_emmenagement_l823_), + _ama_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_periode_demenagement, + _al$_), + _amb_= + caml_call2 + (Runtime_ocaml_Runtime[83],condition_rang_enfant,_ama_), + _amc_= + caml_call2 + (Runtime_ocaml_Runtime[83], + eligibilite_apl_dot_eligibilit, + _amb_); + return caml_call2(Runtime_ocaml_Runtime[29],_Om_,_amc_)} + return caml_call4(Runtime_ocaml_Runtime[63],_On_,[0],_al9_,_al8_)}], + _al2_=caml_call4(Runtime_ocaml_Runtime[63],_Oo_,_al1_,_al0_,_alZ_)} + catch(_al7_) + {_al7_ = caml_wrap_exception(_al7_); + if(_al7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ok_]; + throw _al7_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Op_,Runtime_ocaml_Runtime[12],_al2_); + try + {var + _al3_= + function(param) + {return caml_call2 + (Runtime_ocaml_Runtime[118], + depenses_justifiees_reellement, + plafond_d823_22) + ?depenses_justifiees_reellement + :plafond_d823_22}, + _al4_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Or_,1)}, + _al5_=caml_call4(Runtime_ocaml_Runtime[63],_Os_,[0],_al4_,_al3_)} + catch(_al6_) + {_al6_ = caml_wrap_exception(_al6_); + if(_al6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Oq_]; + throw _al6_} + var + montant_prime_demenagement= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ot_,Runtime_ocaml_Runtime[13],_al5_); + return [0,montant_prime_demenagement]} + function eligibilite_aide_personnalisee(eligibilite_aide_personnalisee) + {var + menage=eligibilite_aide_personnalisee[1], + demandeur=eligibilite_aide_personnalisee[2], + date_courante=eligibilite_aide_personnalisee[3]; + function _ajq_(pret) + {try + {var + _ala_=function(param){return 0}, + _alb_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Ov_,1)}, + _alc_= + [0, + function(param) + {function _alf_(param){throw Runtime_ocaml_Runtime[2]} + function _alg_(param){return 0} + var + _alh_= + [0, + function(param) + {function _ali_(param){return 1} + function _alj_(param) + {switch(pret[1][0]) + {case 0:var _als_=0;break; + case 1:var _als_=1;break; + case 2:var _als_=0;break; + case 3:var _als_=0;break; + default:var _als_=0} + switch(pret[1][0]) + {case 0:var _alt_=1;break; + case 1:var _alt_=0;break; + case 2:var _alt_=0;break; + case 3:var _alt_=0;break; + default:var _alt_=0} + var + _alu_=caml_call2(Runtime_ocaml_Runtime[84],_alt_,_als_), + _alv_=0 === pret[3][0]?1:0, + _alw_=caml_call2(Runtime_ocaml_Runtime[83],_alv_,_alu_); + return caml_call2(Runtime_ocaml_Runtime[29],_Ow_,_alw_)} + var + _alk_= + [0, + function(param) + {function _all_(param){return 1} + function _alm_(param) + {switch(pret[1][0]) + {case 0:var _aln_=0;break; + case 1:var _aln_=0;break; + case 2:var _aln_=0;break; + case 3:var _aln_=1;break; + default:var _aln_=0} + switch(pret[1][0]) + {case 0:var _alo_=0;break; + case 1:var _alo_=0;break; + case 2:var _alo_=1;break; + case 3:var _alo_=0;break; + default:var _alo_=0} + var + _alp_=caml_call2(Runtime_ocaml_Runtime[84],_alo_,_aln_), + _alq_=0 === pret[3][0]?0:1, + _alr_=caml_call2(Runtime_ocaml_Runtime[83],_alq_,_alp_); + return caml_call2(Runtime_ocaml_Runtime[29],_Ox_,_alr_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Oy_,[0],_alm_,_all_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Oz_,_alk_,_alj_,_ali_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_OA_,_alh_,_alg_,_alf_)}], + _ald_=caml_call4(Runtime_ocaml_Runtime[63],_OB_,_alc_,_alb_,_ala_); + return _ald_} + catch(_ale_) + {_ale_ = caml_wrap_exception(_ale_); + if(_ale_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ou_]; + throw _ale_}} + var + caracteristiques_pret_l831_1_1= + caml_call3 + (Runtime_ocaml_Runtime[28],_OC_,Runtime_ocaml_Runtime[10],_ajq_); + function _ajr_(pret) + {try + {var + _ak8_=function(param){return 0}, + _ak9_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_OE_,1)}, + _ak__=caml_call4(Runtime_ocaml_Runtime[63],_OF_,[0],_ak9_,_ak8_); + return _ak__} + catch(_ak$_) + {_ak$_ = caml_wrap_exception(_ak$_); + if(_ak$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OD_]; + throw _ak$_}} + var + caracteristiques_pret_l831_1_6= + caml_call3 + (Runtime_ocaml_Runtime[28],_OG_,Runtime_ocaml_Runtime[10],_ajr_); + try + {var + _ajs_=function(param){return 0}, + _ajt_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OI_,1)}, + _aju_= + [0, + function(param) + {function _akE_(param){return 1} + function _akF_(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_OJ_,1)} + var + _akG_= + [0, + function(param) + {function _akH_(param){return 0} + function _akI_(param) + {var _ak4_=menage[2][3]; + switch(_ak4_[0]) + {case 0:var _ak5_=0;break; + case 1:var _ak5_=0;break; + case 2: + var + propriete=_ak4_[1], + _ak6_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _ak5_= + caml_call2 + (Runtime_ocaml_Runtime[130],propriete[11][2],_ak6_); + break; + case 3:var _ak5_=0;break; + default: + var + propriete$0=_ak4_[1], + _ak7_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _ak5_= + caml_call2 + (Runtime_ocaml_Runtime[130],propriete$0[11][2],_ak7_)} + return caml_call2(Runtime_ocaml_Runtime[29],_OK_,_ak5_)} + var + _akJ_= + [0, + function(param) + {function _akK_(param){return 1} + function _akL_(param) + {var _akM_=menage[2][3]; + switch(_akM_[0]) + {case 0:var _akN_=0;break; + case 1:var _akN_=0;break; + case 2: + var + propriete=_akM_[1], + _akO_=propriete[1], + _akP_=0 === propriete[10][0]?0:1, + _akQ_=caml_call2(Runtime_ocaml_Runtime[83],_akP_,_akO_), + _akR_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _akS_= + caml_call2 + (Runtime_ocaml_Runtime[115],propriete[11][2],_akR_), + _akT_=caml_call2(Runtime_ocaml_Runtime[83],_akS_,_akQ_), + _akU_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _akV_= + caml_call2 + (Runtime_ocaml_Runtime[130],propriete[11][2],_akU_), + _akN_=caml_call2(Runtime_ocaml_Runtime[83],_akV_,_akT_); + break; + case 3:var _akN_=0;break; + default: + var + propriete$0=_akM_[1], + _akW_=propriete$0[1], + _akX_=0 === propriete$0[10][0]?0:1, + _akY_=caml_call2(Runtime_ocaml_Runtime[83],_akX_,_akW_), + _akZ_=caml_call3(Runtime_ocaml_Runtime[57],2020,1,1), + _ak0_= + caml_call2 + (Runtime_ocaml_Runtime[115],propriete$0[11][2],_akZ_), + _ak1_=caml_call2(Runtime_ocaml_Runtime[83],_ak0_,_akY_), + _ak2_=caml_call3(Runtime_ocaml_Runtime[57],2018,1,1), + _ak3_= + caml_call2 + (Runtime_ocaml_Runtime[130],propriete$0[11][2],_ak2_), + _akN_=caml_call2(Runtime_ocaml_Runtime[83],_ak3_,_ak1_)} + return caml_call2(Runtime_ocaml_Runtime[29],_OL_,_akN_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_OM_,[0],_akL_,_akK_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_ON_,_akJ_,_akI_,_akH_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_OO_,_akG_,_akF_,_akE_)}], + _ajv_=caml_call4(Runtime_ocaml_Runtime[63],_OP_,_aju_,_ajt_,_ajs_)} + catch(_akD_) + {_akD_ = caml_wrap_exception(_akD_); + if(_akD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OH_]; + throw _akD_} + var + condition_logement_pret= + caml_call3 + (Runtime_ocaml_Runtime[28],_OQ_,Runtime_ocaml_Runtime[12],_ajv_); + try + {var + _ajw_=function(param){return menage}, + _ajx_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OS_,1)}, + _ajy_=caml_call4(Runtime_ocaml_Runtime[63],_OT_,[0],_ajx_,_ajw_), + eligibilite_commune_dot_menage= + caml_call3(Runtime_ocaml_Runtime[28],_OU_,embed_menage,_ajy_)} + catch(_akC_) + {_akC_ = caml_wrap_exception(_akC_); + if(_akC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OR_]; + throw _akC_} + try + {var + _ajz_=function(param){return demandeur}, + _ajA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_OW_,1)}, + _ajB_=caml_call4(Runtime_ocaml_Runtime[63],_OX_,[0],_ajA_,_ajz_), + eligibilite_commune_dot_demand= + caml_call3(Runtime_ocaml_Runtime[28],_OY_,embed_demandeur,_ajB_)} + catch(_akB_) + {_akB_ = caml_wrap_exception(_akB_); + if(_akB_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OV_]; + throw _akB_} + try + {var + _ajC_=function(param){return date_courante}, + _ajD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_O0_,1)}, + _ajE_=caml_call4(Runtime_ocaml_Runtime[63],_O1_,[0],_ajD_,_ajC_), + eligibilite_commune_dot_date_c= + caml_call3 + (Runtime_ocaml_Runtime[28],_O2_,Runtime_ocaml_Runtime[16],_ajE_)} + catch(_akA_) + {_akA_ = caml_wrap_exception(_akA_); + if(_akA_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_OZ_]; + throw _akA_} + function eligibilite_commune_dot_condit(param) + {throw Runtime_ocaml_Runtime[2]} + function eligibilite_commune_dot_condit$0(param) + {throw Runtime_ocaml_Runtime[2]} + var + _ajF_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_O3_,eligibilite_aides_personnelle_), + [0, + eligibilite_commune_dot_menage, + eligibilite_commune_dot_demand, + eligibilite_commune_dot_date_c, + eligibilite_commune_dot_condit, + eligibilite_commune_dot_condit$0]), + result=caml_call2(Runtime_ocaml_Runtime[27],_O4_,_ajF_), + eligibilite_commune_dot_eligib=result[2], + eligibilite_commune_dot_nombre=result[3], + eligibilite_commune_dot_coeffi=result[4]; + try + {var + _ajG_=function(param){return 0}, + _ajH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_O6_,1)}, + _ajI_= + [0, + function(param) + {function _aj3_(param){throw Runtime_ocaml_Runtime[2]} + function _aj4_(param){return 0} + var + _aj5_= + [0, + function(param) + {function _aj6_(param){return 1} + function _aj7_(param) + {var _akv_=menage[2][3]; + switch(_akv_[0]) + {case 0:var _akw_=0;break; + case 1:var _akw_=0;break; + case 2: + var + propriete=_akv_[1], + _akx_= + caml_call3 + (Runtime_ocaml_Runtime[28],_O8_,embed_pret,propriete[11]), + _aky_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _O9_, + caracteristiques_pret_l831_1_1), + _akx_), + _akz_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _O__, + Runtime_ocaml_Runtime[12], + _aky_), + _akw_=caml_call2(Runtime_ocaml_Runtime[27],_O$_,_akz_); + break; + case 3:var _akw_=0;break; + default:var _akw_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_O7_,_akw_)} + var + _aj8_= + [0, + function(param) + {function _aj9_(param){return 1} + function _aj__(param) + {var _akr_=menage[2][3]; + switch(_akr_[0]) + {case 0: + var location=_akr_[1],_aks_=location[1]; + switch(_aks_[0]) + {case 0:var convention=_aks_[1],_akt_=convention[1];break; + case 1: + var convention$0=_aks_[1],_akt_=convention$0[1];break; + default:var _akt_=0} + var _aku_=_akt_; + break; + case 1:var _aku_=0;break; + case 2:var _aku_=0;break; + case 3:var _aku_=0;break; + default:var _aku_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Pa_,_aku_)} + var + _aj$_= + [0, + function(param) + {function _aka_(param){return 1} + function _akb_(param) + {var _akp_=menage[2][3]; + switch(_akp_[0]) + {case 0:var _akq_=0;break; + case 1:var location=_akp_[1],_akq_=location[3];break; + case 2:var _akq_=0;break; + case 3:var _akq_=0;break; + default:var _akq_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Pb_,_akq_)} + var + _akc_= + [0, + function(param) + {function _akd_(param){return 1} + function _ake_(param) + {var _akk_=menage[2][3]; + switch(_akk_[0]) + {case 0:var _akl_=0;break; + case 1:var _akl_=0;break; + case 2:var _akl_=0;break; + case 3:var _akl_=0;break; + default: + var + propriete=_akk_[1], + _akm_= + caml_call3 + (Runtime_ocaml_Runtime[28],_Pd_,embed_pret,propriete[11]), + _akn_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Pe_, + caracteristiques_pret_l831_1_6), + _akm_), + _ako_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Pf_, + Runtime_ocaml_Runtime[12], + _akn_), + _akl_=caml_call2(Runtime_ocaml_Runtime[27],_Pg_,_ako_)} + return caml_call2(Runtime_ocaml_Runtime[29],_Pc_,_akl_)} + var + _akf_= + [0, + function(param) + {function _akg_(param){return 1} + function _akh_(param) + {var _aki_=menage[2][3]; + switch(_aki_[0]) + {case 0:var _akj_=0;break; + case 1: + var logement_foyer=_aki_[1],_akj_=logement_foyer[2];break; + case 2:var _akj_=0;break; + case 3:var _akj_=0;break; + default:var _akj_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Ph_,_akj_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pi_,[0],_akh_,_akg_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pj_,_akf_,_ake_,_akd_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pk_,_akc_,_akb_,_aka_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pl_,_aj$_,_aj__,_aj9_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pm_,_aj8_,_aj7_,_aj6_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Pn_,_aj5_,_aj4_,_aj3_)}], + _ajJ_=caml_call4(Runtime_ocaml_Runtime[63],_Po_,_ajI_,_ajH_,_ajG_)} + catch(_aj2_) + {_aj2_ = caml_wrap_exception(_aj2_); + if(_aj2_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_O5_]; + throw _aj2_} + var + condition_logement_bailleur= + caml_call3 + (Runtime_ocaml_Runtime[28],_Pp_,Runtime_ocaml_Runtime[12],_ajJ_); + try + {var + _ajK_=function(param){return eligibilite_commune_dot_coeffi}, + _ajL_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pr_,1)}, + _ajM_=caml_call4(Runtime_ocaml_Runtime[63],_Ps_,[0],_ajL_,_ajK_)} + catch(_aj1_) + {_aj1_ = caml_wrap_exception(_aj1_); + if(_aj1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Pq_]; + throw _aj1_} + var + _ajN_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_Pt_,_ajN_,_ajM_); + try + {var + _ajO_=function(param){return eligibilite_commune_dot_nombre}, + _ajP_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pv_,1)}, + _ajQ_=caml_call4(Runtime_ocaml_Runtime[63],_Pw_,[0],_ajP_,_ajO_)} + catch(_aj0_) + {_aj0_ = caml_wrap_exception(_aj0_); + if(_aj0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Pu_]; + throw _aj0_} + var + nombre_personnes_a_charge_pris= + caml_call3 + (Runtime_ocaml_Runtime[28],_Px_,Runtime_ocaml_Runtime[14],_ajQ_); + try + {var + _ajR_=function(param){return 0}, + _ajS_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Pz_,1)}, + _ajT_= + [0, + function(param) + {function _ajW_(param){return 1} + function _ajX_(param) + {var + _ajY_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_pret, + eligibilite_commune_dot_eligib), + _ajZ_= + caml_call2 + (Runtime_ocaml_Runtime[83], + condition_logement_bailleur, + _ajY_); + return caml_call2(Runtime_ocaml_Runtime[29],_PA_,_ajZ_)} + return caml_call4(Runtime_ocaml_Runtime[63],_PB_,[0],_ajX_,_ajW_)}], + _ajU_=caml_call4(Runtime_ocaml_Runtime[63],_PC_,_ajT_,_ajS_,_ajR_)} + catch(_ajV_) + {_ajV_ = caml_wrap_exception(_ajV_); + if(_ajV_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Py_]; + throw _ajV_} + var + eligibilite= + caml_call3 + (Runtime_ocaml_Runtime[28],_PD_,Runtime_ocaml_Runtime[12],_ajU_); + return [0, + date_courante, + eligibilite, + nombre_personnes_a_charge_pris, + coefficents_enfants_garde_alte]} + function eligibilite_allocation_logemen(eligibilite_allocation_logemen) + {var + date_courante=eligibilite_allocation_logemen[1], + menage=eligibilite_allocation_logemen[2], + demandeur=eligibilite_allocation_logemen[3], + beneficie_aide_personnalisee_l=eligibilite_allocation_logemen[4]; + try + {var + _agp_= + function(param){return caml_call3(Runtime_ocaml_Runtime[60],5,0,0)}, + _agq_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PF_,1)}, + _agr_=caml_call4(Runtime_ocaml_Runtime[63],_PG_,[0],_agq_,_agp_)} + catch(_ajp_) + {_ajp_ = caml_wrap_exception(_ajp_); + if(_ajp_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PE_]; + throw _ajp_} + var + duree_l841_1_3= + caml_call3 + (Runtime_ocaml_Runtime[28],_PH_,Runtime_ocaml_Runtime[17],_agr_); + try + {var + _ags_=function(param){return date_courante}, + _agt_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PJ_,1)}, + _agu_=caml_call4(Runtime_ocaml_Runtime[63],_PK_,[0],_agt_,_ags_), + prestations_familiales_dot_dat= + caml_call3 + (Runtime_ocaml_Runtime[28],_PL_,Runtime_ocaml_Runtime[16],_agu_)} + catch(_ajo_) + {_ajo_ = caml_wrap_exception(_ajo_); + if(_ajo_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PI_]; + throw _ajo_} + try + {var + _agv_=function(param){return _PN_}, + _agw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PO_,1)}, + _agx_=caml_call4(Runtime_ocaml_Runtime[63],_PP_,[0],_agw_,_agv_), + prestations_familiales_dot_pre= + caml_call3 + (Runtime_ocaml_Runtime[28], + _PQ_, + embed_element_prestations_fami$0, + _agx_)} + catch(_ajn_) + {_ajn_ = caml_wrap_exception(_ajn_); + if(_ajn_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PM_]; + throw _ajn_} + try + {var + _agy_=function(param){return _PS_}, + _agz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PT_,1)}, + _agA_=caml_call4(Runtime_ocaml_Runtime[63],_PU_,[0],_agz_,_agy_), + prestations_familiales_dot_res= + caml_call3 + (Runtime_ocaml_Runtime[28],_PV_,embed_collectivite$0,_agA_)} + catch(_ajm_) + {_ajm_ = caml_wrap_exception(_ajm_); + if(_ajm_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PR_]; + throw _ajm_} + var + _agB_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_PW_,eligibilite_prestations_famili), + [0, + prestations_familiales_dot_dat, + prestations_familiales_dot_pre, + prestations_familiales_dot_res]), + result=caml_call2(Runtime_ocaml_Runtime[27],_PX_,_agB_), + prestations_familiales_dot_dro=result[1]; + try + {var + _agC_=function(param){return 0}, + _agD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_PZ_,1)}, + _agE_= + [0, + function(param) + {function _aiV_(param){return 1} + function _aiW_(param) + {switch(menage[2][3][0]) + {case 0:var _ajl_=1;break; + case 1:var _ajl_=1;break; + case 2:var _ajl_=0;break; + case 3:var _ajl_=1;break; + default:var _ajl_=1} + return caml_call2(Runtime_ocaml_Runtime[29],_P0_,_ajl_)} + var + _aiX_= + [0, + function(param) + {function _aiY_(param){throw Runtime_ocaml_Runtime[2]} + function _aiZ_(param){return 0} + var + _ai0_= + [0, + function(param) + {function _ai1_(param){return 1} + function _ai2_(param) + {var _ajf_=menage[2][3]; + switch(_ajf_[0]) + {case 0:var _ajg_=0;break; + case 1:var _ajg_=0;break; + case 2: + var proprietaire=_ajf_[1]; + switch(proprietaire[6][0]) + {case 0:var _ajh_=1;break; + case 1:var _ajh_=0;break; + case 2:var _ajh_=0;break; + default:var _ajh_=0} + switch(proprietaire[6][0]) + {case 0:var _aji_=0;break; + case 1:var _aji_=0;break; + case 2:var _aji_=0;break; + default:var _aji_=1} + var + _ajj_=caml_call2(Runtime_ocaml_Runtime[84],_aji_,_ajh_), + _ajk_=0 === proprietaire[11][3][0]?1:0, + _ajg_=caml_call2(Runtime_ocaml_Runtime[83],_ajk_,_ajj_); + break; + case 3:var _ajg_=0;break; + default:var _ajg_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_P1_,_ajg_)} + var + _ai3_= + [0, + function(param) + {function _ai4_(param){return 1} + function _ai5_(param) + {var _ajb_=menage[2][3]; + switch(_ajb_[0]) + {case 0:var _ajc_=0;break; + case 1:var _ajc_=0;break; + case 2: + var proprietaire=_ajb_[1]; + switch(proprietaire[6][0]) + {case 0:var _ajd_=0;break; + case 1:var _ajd_=1;break; + case 2:var _ajd_=0;break; + default:var _ajd_=0} + var + _aje_=0 === proprietaire[11][3][0]?1:0, + _ajc_=caml_call2(Runtime_ocaml_Runtime[83],_aje_,_ajd_); + break; + case 3:var _ajc_=0;break; + default:var _ajc_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_P2_,_ajc_)} + var + _ai6_= + [0, + function(param) + {function _ai7_(param){return 1} + function _ai8_(param) + {var _ai9_=menage[2][3]; + switch(_ai9_[0]) + {case 0:var _ai__=0;break; + case 1:var _ai__=0;break; + case 2: + var proprietaire=_ai9_[1]; + switch(proprietaire[6][0]) + {case 0:var _ai$_=0;break; + case 1:var _ai$_=0;break; + case 2:var _ai$_=1;break; + default:var _ai$_=0} + var + _aja_=0 === proprietaire[11][3][0]?1:0, + _ai__=caml_call2(Runtime_ocaml_Runtime[83],_aja_,_ai$_); + break; + case 3:var _ai__=0;break; + default:var _ai__=0} + return caml_call2(Runtime_ocaml_Runtime[29],_P3_,_ai__)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_P4_,[0],_ai8_,_ai7_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_P5_,_ai6_,_ai5_,_ai4_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_P6_,_ai3_,_ai2_,_ai1_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_P7_,_ai0_,_aiZ_,_aiY_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_P8_,_aiX_,_aiW_,_aiV_)}], + _agF_=caml_call4(Runtime_ocaml_Runtime[63],_P9_,_agE_,_agD_,_agC_)} + catch(_aiU_) + {_aiU_ = caml_wrap_exception(_aiU_); + if(_aiU_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_PY_]; + throw _aiU_} + var + condition_accession_propriete= + caml_call3 + (Runtime_ocaml_Runtime[28],_P__,Runtime_ocaml_Runtime[12],_agF_); + try + {var + _agG_=function(param){return menage}, + _agH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qa_,1)}, + _agI_=caml_call4(Runtime_ocaml_Runtime[63],_Qb_,[0],_agH_,_agG_), + eligibilite_commune_dot_menage= + caml_call3(Runtime_ocaml_Runtime[28],_Qc_,embed_menage,_agI_)} + catch(_aiT_) + {_aiT_ = caml_wrap_exception(_aiT_); + if(_aiT_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_P$_]; + throw _aiT_} + try + {var + _agJ_=function(param){return demandeur}, + _agK_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qe_,1)}, + _agL_=caml_call4(Runtime_ocaml_Runtime[63],_Qf_,[0],_agK_,_agJ_), + eligibilite_commune_dot_demand= + caml_call3(Runtime_ocaml_Runtime[28],_Qg_,embed_demandeur,_agL_)} + catch(_aiS_) + {_aiS_ = caml_wrap_exception(_aiS_); + if(_aiS_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Qd_]; + throw _aiS_} + try + {var + _agM_=function(param){return date_courante}, + _agN_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qi_,1)}, + _agO_=caml_call4(Runtime_ocaml_Runtime[63],_Qj_,[0],_agN_,_agM_), + eligibilite_commune_dot_date_c= + caml_call3 + (Runtime_ocaml_Runtime[28],_Qk_,Runtime_ocaml_Runtime[16],_agO_)} + catch(_aiR_) + {_aiR_ = caml_wrap_exception(_aiR_); + if(_aiR_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Qh_]; + throw _aiR_} + function eligibilite_commune_dot_condit(param) + {function _aiM_(param){return 1} + function _aiN_(param) + {var _aiP_=menage[2][3]; + switch(_aiP_[0]) + {case 0:var _aiQ_=0;break; + case 1:var logement_foyer=_aiP_[1],_aiQ_=logement_foyer[5];break; + case 2:var _aiQ_=0;break; + case 3:var _aiQ_=0;break; + default:var _aiQ_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Ql_,_aiQ_)} + var _aiO_=caml_call4(Runtime_ocaml_Runtime[63],_Qm_,[0],_aiN_,_aiM_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _Qn_, + Runtime_ocaml_Runtime[12], + _aiO_)} + function eligibilite_commune_dot_condit$0(param) + {function _aiH_(param){return 1} + function _aiI_(param) + {var _aiK_=menage[2][3]; + switch(_aiK_[0]) + {case 0:var _aiL_=0;break; + case 1:var logement_foyer=_aiK_[1],_aiL_=logement_foyer[5];break; + case 2:var _aiL_=0;break; + case 3:var _aiL_=0;break; + default:var _aiL_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Qo_,_aiL_)} + var _aiJ_=caml_call4(Runtime_ocaml_Runtime[63],_Qp_,[0],_aiI_,_aiH_); + return caml_call3 + (Runtime_ocaml_Runtime[28], + _Qq_, + Runtime_ocaml_Runtime[12], + _aiJ_)} + var + _agP_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Qr_,eligibilite_aides_personnelle_), + [0, + eligibilite_commune_dot_menage, + eligibilite_commune_dot_demand, + eligibilite_commune_dot_date_c, + eligibilite_commune_dot_condit, + eligibilite_commune_dot_condit$0]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_Qs_,_agP_), + eligibilite_commune_dot_eligib=result$0[2], + eligibilite_commune_dot_nombre=result$0[3], + eligibilite_commune_dot_coeffi=result$0[4], + eligibilite_commune_dot_condit$1=result$0[5]; + try + {var + _agQ_=function(param){return eligibilite_commune_dot_coeffi}, + _agR_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qu_,1)}, + _agS_=caml_call4(Runtime_ocaml_Runtime[63],_Qv_,[0],_agR_,_agQ_)} + catch(_aiG_) + {_aiG_ = caml_wrap_exception(_aiG_); + if(_aiG_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Qt_]; + throw _aiG_} + var + _agT_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_Qw_,_agT_,_agS_); + try + {var + _agU_=function(param){return eligibilite_commune_dot_nombre}, + _agV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Qy_,1)}, + _agW_=caml_call4(Runtime_ocaml_Runtime[63],_Qz_,[0],_agV_,_agU_)} + catch(_aiF_) + {_aiF_ = caml_wrap_exception(_aiF_); + if(_aiF_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Qx_]; + throw _aiF_} + var + nombre_personnes_a_charge_pris= + caml_call3 + (Runtime_ocaml_Runtime[28],_QA_,Runtime_ocaml_Runtime[14],_agW_); + try + {var + _agX_= + function(param) + {var + _aiD_= + caml_call1 + (Runtime_ocaml_Runtime[67],condition_accession_propriete), + _aiE_= + caml_call1 + (Runtime_ocaml_Runtime[67],eligibilite_commune_dot_eligib); + return caml_call2(Runtime_ocaml_Runtime[84],_aiE_,_aiD_)?_QC_:_QD_}, + _agY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QE_,1)}, + _agZ_=caml_call4(Runtime_ocaml_Runtime[63],_QF_,[0],_agY_,_agX_)} + catch(_aiC_) + {_aiC_ = caml_wrap_exception(_aiC_); + if(_aiC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_QB_]; + throw _aiC_} + var + eligibilite_dispositions_commu= + caml_call3 + (Runtime_ocaml_Runtime[28],_QG_,embed_type_eligibilite_allocat,_agZ_); + try + {var + _ag0_=function(param){return 0}, + _ag1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_QI_,1)}, + _ag2_= + [0, + function(param) + {function _ahk_(param){return 1} + function _ahl_(param) + {var _air_=menage[1],_ais_=0; + function _ait_(acc,prestation) + {var + _aiv_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QJ_), + _aiw_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QK_), + _aix_=caml_call2(Runtime_ocaml_Runtime[84],_aiw_,_aiv_), + _aiy_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QL_), + _aiz_=caml_call2(Runtime_ocaml_Runtime[84],_aiy_,_aix_), + _aiA_=caml_call2(Runtime_ocaml_Runtime[86],prestation,_QM_), + _aiB_=caml_call2(Runtime_ocaml_Runtime[84],_aiA_,_aiz_); + return caml_call2(Runtime_ocaml_Runtime[84],acc,_aiB_)} + var + _aiu_= + caml_call3(Runtime_ocaml_Runtime[136],_ait_,_ais_,_air_); + return caml_call2(Runtime_ocaml_Runtime[29],_QN_,_aiu_)} + var + _ahm_= + [0, + function(param) + {function _ahn_(param){return 1} + function _aho_(param) + {var + _aif_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$273), + _aig_=menage[3]; + function _aih_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var + enfant=personne_a_charge[1], + _ail_=enfant[2], + _aim_=enfant[3], + _ain_=0 === enfant[7][0]?_QO_:_QT_, + _aio_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _QP_, + embed_enfant_prestations_famil, + [0, + enfant[1], + enfant[6], + enfant[5], + enfant[4], + _ain_, + _aim_, + _ail_]), + _aip_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _QQ_, + prestations_familiales_dot_dro), + _aio_), + _aiq_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _QR_, + Runtime_ocaml_Runtime[12], + _aip_); + return caml_call2(Runtime_ocaml_Runtime[27],_QS_,_aiq_)} + return 0} + var + _aii_=caml_call2(Runtime_ocaml_Runtime[90],_aih_,_aig_), + _aij_=caml_call1(Runtime_ocaml_Runtime[68],_aii_), + _aik_=caml_call2(Runtime_ocaml_Runtime[86],_aij_,_aif_); + return caml_call2(Runtime_ocaml_Runtime[29],_QU_,_aik_)} + var + _ahp_= + [0, + function(param) + {function _ahq_(param){return 1} + function _ahr_(param) + {var _ah0_=menage[5]; + switch(_ah0_[0]) + {case 0:var _ah1_=0;break; + case 1: + var + date_mariage=_ah0_[1], + _ah9_= + caml_call2 + (Runtime_ocaml_Runtime[94],date_mariage,duree_l841_1_3), + _ah1_= + caml_call2(Runtime_ocaml_Runtime[120],date_courante,_ah9_); + break; + case 2:var _ah1_=0;break; + case 3:var _ah1_=0;break; + case 4:var _ah1_=0;break; + default:var _ah1_=0} + var + _ah2_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$391), + _ah3_=menage[3]; + function _ah4_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var + enfant=personne_a_charge[1], + _ah__=enfant[2], + _ah$_=enfant[3], + _aia_=0 === enfant[7][0]?_QV_:_Q0_, + _aib_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _QW_, + embed_enfant_prestations_famil, + [0, + enfant[1], + enfant[6], + enfant[5], + enfant[4], + _aia_, + _ah$_, + _ah__]), + _aic_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _QX_, + prestations_familiales_dot_dro), + _aib_), + _aid_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _QY_, + Runtime_ocaml_Runtime[12], + _aic_), + _aie_=caml_call2(Runtime_ocaml_Runtime[27],_QZ_,_aid_); + return caml_call1(Runtime_ocaml_Runtime[67],_aie_)} + return 0} + var + _ah5_=caml_call2(Runtime_ocaml_Runtime[90],_ah4_,_ah3_), + _ah6_=caml_call1(Runtime_ocaml_Runtime[68],_ah5_), + _ah7_=caml_call2(Runtime_ocaml_Runtime[86],_ah6_,_ah2_), + _ah8_=caml_call2(Runtime_ocaml_Runtime[83],_ah7_,_ah1_); + return caml_call2(Runtime_ocaml_Runtime[29],_Q1_,_ah8_)} + var + _ahs_= + [0, + function(param) + {function _aht_(param) + {function _ahD_(param){throw Runtime_ocaml_Runtime[2]} + function _ahE_(param){return 0} + var + _ahF_= + [0, + function(param) + {function _ahG_(param){return 1} + function _ahH_(param) + {var + _ahR_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$274), + _ahS_=menage[3]; + function _ahT_(personne_a_charge) + {var + _ahX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Q2_, + embed_personne_a_charge, + personne_a_charge), + _ahY_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Q3_, + eligibilite_commune_dot_condit$1), + _ahX_), + _ahZ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Q4_, + Runtime_ocaml_Runtime[12], + _ahY_); + return caml_call2(Runtime_ocaml_Runtime[27],_Q5_,_ahZ_)} + var + _ahU_=caml_call2(Runtime_ocaml_Runtime[90],_ahT_,_ahS_), + _ahV_=caml_call1(Runtime_ocaml_Runtime[68],_ahU_), + _ahW_=caml_call2(Runtime_ocaml_Runtime[126],_ahV_,_ahR_); + return caml_call2(Runtime_ocaml_Runtime[29],_Q6_,_ahW_)} + var + _ahI_= + [0, + function(param) + {function _ahJ_(param){return 1} + function _ahK_(param) + {var + _ahL_=caml_call1(Runtime_ocaml_Runtime[46],cst_1$275), + _ahM_=menage[3]; + function _ahN_(personne_a_charge) + {if(0 === personne_a_charge[0])return 0; + var parent=personne_a_charge[1]; + return caml_call2 + (Runtime_ocaml_Runtime[83],parent[3],parent[5])} + var + _ahO_=caml_call2(Runtime_ocaml_Runtime[90],_ahN_,_ahM_), + _ahP_=caml_call1(Runtime_ocaml_Runtime[68],_ahO_), + _ahQ_=caml_call2(Runtime_ocaml_Runtime[126],_ahP_,_ahL_); + return caml_call2(Runtime_ocaml_Runtime[29],_Q7_,_ahQ_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Q8_,[0],_ahK_,_ahJ_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Q9_,_ahI_,_ahH_,_ahG_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Q__,_ahF_,_ahE_,_ahD_)} + function _ahu_(param){return 1} + var + _ahv_= + [0, + function(param) + {function _ahw_(param){return 1} + function _ahx_(param) + {switch(menage[5][0]) + {case 0: + var + _ahy_=menage[7], + _ahz_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$392), + _ahA_=caml_call1(Runtime_ocaml_Runtime[68],menage[3]), + _ahB_=caml_call2(Runtime_ocaml_Runtime[86],_ahA_,_ahz_), + _ahC_=caml_call2(Runtime_ocaml_Runtime[83],_ahB_,_ahy_); + break; + case 1:var _ahC_=0;break; + case 2:var _ahC_=0;break; + case 3:var _ahC_=0;break; + case 4:var _ahC_=0;break; + default:var _ahC_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Q$_,_ahC_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Ra_,[0],_ahx_,_ahw_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rb_,_ahv_,_ahu_,_aht_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rc_,_ahs_,_ahr_,_ahq_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rd_,_ahp_,_aho_,_ahn_)}]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Re_,_ahm_,_ahl_,_ahk_)}], + _ag3_=caml_call4(Runtime_ocaml_Runtime[63],_Rf_,_ag2_,_ag1_,_ag0_)} + catch(_ahj_) + {_ahj_ = caml_wrap_exception(_ahj_); + if(_ahj_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_QH_]; + throw _ahj_} + var + eligibilite_allocation_logemen$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_Rg_,Runtime_ocaml_Runtime[12],_ag3_); + try + {var + _ag4_= + function(param) + {var + _ahi_= + caml_call2 + (Runtime_ocaml_Runtime[86],eligibilite_dispositions_commu,_Ri_); + return caml_call2 + (Runtime_ocaml_Runtime[84], + _ahi_, + beneficie_aide_personnalisee_l) + ?_Rj_ + :eligibilite_allocation_logemen$0?_Rk_:_Rl_}, + _ag5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rm_,1)}, + _ag6_= + [0, + function(param) + {function _ag9_(param){throw Runtime_ocaml_Runtime[2]} + function _ag__(param){return 0} + function _ag$_(param) + {function _ahd_(param){return _Rn_} + function _ahe_(param) + {var _ahf_=menage[2][3]; + switch(_ahf_[0]) + {case 0:var _ahg_=0;break; + case 1:var _ahg_=0;break; + case 2: + var + proprietaire=_ahf_[1], + _ahh_=caml_call3(Runtime_ocaml_Runtime[57],2017,12,31), + _ahg_= + caml_call2 + (Runtime_ocaml_Runtime[125],proprietaire[11][2],_ahh_); + break; + case 3:var _ahg_=0;break; + default:var _ahg_=0} + return caml_call2(Runtime_ocaml_Runtime[29],_Ro_,_ahg_)} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rp_,[0],_ahe_,_ahd_)} + var + _aha_= + [0, + function(param) + {function _ahb_(param){return _Rq_} + function _ahc_(param) + {return caml_call2 + (Runtime_ocaml_Runtime[29],_Rr_,demandeur[4])} + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rs_,[0],_ahc_,_ahb_)}, + _ag$_]; + return caml_call4 + (Runtime_ocaml_Runtime[63],_Rt_,_aha_,_ag__,_ag9_)}], + _ag7_=caml_call4(Runtime_ocaml_Runtime[63],_Ru_,_ag6_,_ag5_,_ag4_)} + catch(_ag8_) + {_ag8_ = caml_wrap_exception(_ag8_); + if(_ag8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Rh_]; + throw _ag8_} + var + eligibilite_l841_2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Rv_,embed_type_eligibilite_allocat,_ag7_); + return [0, + eligibilite_l841_2, + nombre_personnes_a_charge_pris, + coefficents_enfants_garde_alte]} + function calcul_allocation_logement(calcul_allocation_logement_in) + {var + mode_occupation=calcul_allocation_logement_in[1], + ressources_menage_sans_arrondi=calcul_allocation_logement_in[2], + situation_familiale=calcul_allocation_logement_in[3], + nombre_personnes_a_charge=calcul_allocation_logement_in[4], + zone=calcul_allocation_logement_in[5], + date_courante=calcul_allocation_logement_in[6], + type_aide=calcul_allocation_logement_in[7]; + try + {var + _afi_= + function(param) + {switch(mode_occupation[0]) + {case 0:var location=mode_occupation[1];return [0,location]; + case 1: + var logementfoyer=mode_occupation[1];return [2,logementfoyer]; + case 2: + var proprietaire=mode_occupation[1];return [1,proprietaire]; + case 3:var location$0=mode_occupation[1];return [0,location$0]; + default: + var proprietaire$0=mode_occupation[1];return [1,proprietaire$0]}}, + _afj_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Rx_,1)}, + _afk_=caml_call4(Runtime_ocaml_Runtime[63],_Ry_,[0],_afj_,_afi_)} + catch(_ago_) + {_ago_ = caml_wrap_exception(_ago_); + if(_ago_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Rw_]; + throw _ago_} + caml_call3 + (Runtime_ocaml_Runtime[28],_Rz_,embed_categorie_calcul_a_p_l,_afk_); + try + {var + _afl_= + function(param) + {var + _agi_=caml_call1(Runtime_ocaml_Runtime[39],cst_100$13), + _agj_=caml_call1(Runtime_ocaml_Runtime[31],cst_49$0), + _agk_=caml_call1(Runtime_ocaml_Runtime[39],cst_0_01$1), + _agl_= + caml_call2 + (Runtime_ocaml_Runtime[104], + ressources_menage_sans_arrondi, + _agk_), + _agm_=caml_call2(Runtime_ocaml_Runtime[93],_agl_,_agj_), + _agn_=caml_call1(Runtime_ocaml_Runtime[77],_agm_); + return caml_call2(Runtime_ocaml_Runtime[104],_agn_,_agi_)}, + _afm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RB_,1)}, + _afn_=caml_call4(Runtime_ocaml_Runtime[63],_RC_,[0],_afm_,_afl_)} + catch(_agh_) + {_agh_ = caml_wrap_exception(_agh_); + if(_agh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_RA_]; + throw _agh_} + var + ressources_menage_avec_arrondi= + caml_call3 + (Runtime_ocaml_Runtime[28],_RD_,Runtime_ocaml_Runtime[13],_afn_); + try + {var + _afo_= + function(param) + {switch(situation_familiale[0]) + {case 0:return _RF_; + case 1:return _RG_; + case 2:return _RH_; + case 3:return _RI_; + case 4:return _RJ_; + default:return _RK_}}, + _afp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_RL_,1)}, + _afq_=caml_call4(Runtime_ocaml_Runtime[63],_RM_,[0],_afp_,_afo_)} + catch(_agg_) + {_agg_ = caml_wrap_exception(_agg_); + if(_agg_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_RE_]; + throw _agg_} + var + situation_familiale_calcul_apl= + caml_call3 + (Runtime_ocaml_Runtime[28],_RN_,embed_situation_familiale_calc,_afq_); + try + {var + _afr_= + function(param) + {switch(mode_occupation[0]) + {case 0: + var + location=mode_occupation[1], + _afE_=location[8], + _afF_=location[7]; + try + {var _afG_=location[1]; + switch(_afG_[0]) + {case 0:var bailleur=_afG_[1],_afH_=bailleur[2];break; + case 1: + var _afH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$393); + break; + default: + var _afH_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$394)}} + catch(_agc_) + {_agc_ = caml_wrap_exception(_agc_); + if(_agc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_RP_]; + throw _agc_} + var + _afI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RQ_, + embed_calcul_allocation_logeme$3, + [0, + location[2], + ressources_menage_avec_arrondi, + location[3], + date_courante, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + location[4], + location[6], + type_aide, + location[5], + _afH_, + _afF_, + _afE_]), + result= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _RR_, + calcul_allocation_logement_loc), + _afI_), + _afJ_= + function(param0) + {var + _af$_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RS_, + Runtime_ocaml_Runtime[13], + param0), + _aga_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_RT_,result[2]),_af$_), + _agb_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RU_, + Runtime_ocaml_Runtime[13], + _aga_); + return caml_call2(Runtime_ocaml_Runtime[27],_RV_,_agb_)}, + result$0=[0,result[1],_afJ_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_RW_,1)) + {var + _afK_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RX_, + embed_calcul_allocation_logeme, + result$0), + traitement_formule= + caml_call2(Runtime_ocaml_Runtime[27],_RY_,_afK_); + return [0,traitement_formule[1],traitement_formule[2]]} + throw Runtime_ocaml_Runtime[2]; + case 1: + var + logement_foyer=mode_occupation[1], + _afL_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _RZ_, + embed_calcul_allocation_logeme$5, + [0, + logement_foyer[1], + logement_foyer[4], + logement_foyer[6], + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + date_courante, + logement_foyer[7]]), + result$1= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _R0_, + calcul_allocation_logement_foy), + _afL_), + _afM_= + function(param0) + {var + _af8_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R1_, + Runtime_ocaml_Runtime[13], + param0), + _af9_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_R2_,result$1[6]), + _af8_), + _af__= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R3_, + Runtime_ocaml_Runtime[13], + _af9_); + return caml_call2(Runtime_ocaml_Runtime[27],_R4_,_af__)}, + result$2= + [0, + result$1[1], + result$1[2], + result$1[3], + result$1[4], + result$1[5], + _afM_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_R5_,1)) + {var + _afN_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R6_, + embed_calcul_allocation_logeme$1, + result$2), + traitement_formule$0= + caml_call2(Runtime_ocaml_Runtime[27],_R7_,_afN_); + return [0,traitement_formule$0[5],traitement_formule$0[6]]} + throw Runtime_ocaml_Runtime[2]; + case 2: + var + proprietaire=mode_occupation[1], + _afO_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R8_, + embed_calcul_allocation_logeme$4, + [0, + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + date_courante, + proprietaire[2], + proprietaire[9], + proprietaire[11][2], + proprietaire[6], + proprietaire[7], + proprietaire[4], + proprietaire[3], + proprietaire[8]]), + result$3= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _R9_, + calcul_allocation_logement_acc), + _afO_), + _afP_= + function(param0) + {var + _af5_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _R__, + Runtime_ocaml_Runtime[13], + param0), + _af6_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_R$_,result$3[2]), + _af5_), + _af7_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sa_, + Runtime_ocaml_Runtime[13], + _af6_); + return caml_call2(Runtime_ocaml_Runtime[27],_Sb_,_af7_)}, + result$4=[0,result$3[1],_afP_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Sc_,1)) + {var + _afQ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sd_, + embed_calcul_allocation_logeme$0, + result$4), + traitement_formule$1= + caml_call2(Runtime_ocaml_Runtime[27],_Se_,_afQ_); + return [0,traitement_formule$1[1],traitement_formule$1[2]]} + throw Runtime_ocaml_Runtime[2]; + case 3: + var + location$0=mode_occupation[1], + _afR_=location$0[8], + _afS_=location$0[7]; + try + {var _afT_=location$0[1]; + switch(_afT_[0]) + {case 0:var bailleur$0=_afT_[1],_afU_=bailleur$0[2];break; + case 1: + var _afU_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$395); + break; + default: + var _afU_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$396)}} + catch(_af4_) + {_af4_ = caml_wrap_exception(_af4_); + if(_af4_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Sf_]; + throw _af4_} + var + _afV_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sg_, + embed_calcul_allocation_logeme$3, + [0, + location$0[2], + ressources_menage_avec_arrondi, + location$0[3], + date_courante, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + location$0[4], + location$0[6], + type_aide, + location$0[5], + _afU_, + _afS_, + _afR_]), + result$5= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Sh_, + calcul_allocation_logement_loc), + _afV_), + _afW_= + function(param0) + {var + _af1_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Si_, + Runtime_ocaml_Runtime[13], + param0), + _af2_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_Sj_,result$5[2]), + _af1_), + _af3_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sk_, + Runtime_ocaml_Runtime[13], + _af2_); + return caml_call2(Runtime_ocaml_Runtime[27],_Sl_,_af3_)}, + result$6=[0,result$5[1],_afW_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Sm_,1)) + {var + _afX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sn_, + embed_calcul_allocation_logeme, + result$6), + traitement_formule$2= + caml_call2(Runtime_ocaml_Runtime[27],_So_,_afX_); + return [0,traitement_formule$2[1],traitement_formule$2[2]]} + throw Runtime_ocaml_Runtime[2]; + default: + var + proprietaire$0=mode_occupation[1], + _afY_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sp_, + embed_calcul_allocation_logeme$4, + [0, + ressources_menage_avec_arrondi, + nombre_personnes_a_charge, + situation_familiale_calcul_apl, + zone, + date_courante, + proprietaire$0[2], + proprietaire$0[9], + proprietaire$0[11][2], + proprietaire$0[6], + proprietaire$0[7], + proprietaire$0[4], + proprietaire$0[3], + proprietaire$0[8]]), + result$7= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Sq_, + calcul_allocation_logement_acc), + _afY_), + _afZ_= + function(param0) + {var + _agd_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sr_, + Runtime_ocaml_Runtime[13], + param0), + _age_= + caml_call1 + (caml_call2(Runtime_ocaml_Runtime[26],_Ss_,result$7[2]), + _agd_), + _agf_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _St_, + Runtime_ocaml_Runtime[13], + _age_); + return caml_call2(Runtime_ocaml_Runtime[27],_Su_,_agf_)}, + result$8=[0,result$7[1],_afZ_]; + if(caml_call2(Runtime_ocaml_Runtime[29],_Sv_,1)) + {var + _af0_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Sw_, + embed_calcul_allocation_logeme$0, + result$8), + traitement_formule$3= + caml_call2(Runtime_ocaml_Runtime[27],_Sx_,_af0_); + return [0,traitement_formule$3[1],traitement_formule$3[2]]} + throw Runtime_ocaml_Runtime[2]}}, + _afs_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Sy_,1)}, + _aft_=caml_call4(Runtime_ocaml_Runtime[63],_Sz_,[0],_afs_,_afr_)} + catch(_afD_) + {_afD_ = caml_wrap_exception(_afD_); + if(_afD_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_RO_]; + throw _afD_} + var + sous_calcul_traitement= + caml_call3 + (Runtime_ocaml_Runtime[28],_SA_,embed_traitement_formule_aide_,_aft_); + function _afu_(arg) + {try + {var + _afz_= + function(param){return caml_call1(sous_calcul_traitement[2],arg)}, + _afA_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_SC_,1)}, + _afB_=caml_call4(Runtime_ocaml_Runtime[63],_SD_,[0],_afA_,_afz_); + return _afB_} + catch(_afC_) + {_afC_ = caml_wrap_exception(_afC_); + if(_afC_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SB_]; + throw _afC_}} + var + traitement_aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_SE_,Runtime_ocaml_Runtime[10],_afu_); + try + {var + _afv_=function(param){return sous_calcul_traitement[1]}, + _afw_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SG_,1)}, + _afx_=caml_call4(Runtime_ocaml_Runtime[63],_SH_,[0],_afw_,_afv_)} + catch(_afy_) + {_afy_ = caml_wrap_exception(_afy_); + if(_afy_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SF_]; + throw _afy_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_SI_,Runtime_ocaml_Runtime[13],_afx_); + return [0,aide_finale_formule,traitement_aide_finale]} + function calculette_aides_au_logement(calculette_aides_au_logement_i) + {var + menage=calculette_aides_au_logement_i[1], + demandeur=calculette_aides_au_logement_i[2], + date_courante=calculette_aides_au_logement_i[3], + ressources_menage_prises_en_co=calculette_aides_au_logement_i[4]; + try + {var + _adl_=function(param){return date_courante}, + _adm_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SK_,1)}, + _adn_=caml_call4(Runtime_ocaml_Runtime[63],_SL_,[0],_adm_,_adl_), + eligibilite_allocation_logemen$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_SM_,Runtime_ocaml_Runtime[16],_adn_)} + catch(_afh_) + {_afh_ = caml_wrap_exception(_afh_); + if(_afh_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SJ_]; + throw _afh_} + try + {var + _ado_=function(param){return menage}, + _adp_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SO_,1)}, + _adq_=caml_call4(Runtime_ocaml_Runtime[63],_SP_,[0],_adp_,_ado_), + eligibilite_allocation_logemen$1= + caml_call3(Runtime_ocaml_Runtime[28],_SQ_,embed_menage,_adq_)} + catch(_afg_) + {_afg_ = caml_wrap_exception(_afg_); + if(_afg_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SN_]; + throw _afg_} + try + {var + _adr_=function(param){return demandeur}, + _ads_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SS_,1)}, + _adt_=caml_call4(Runtime_ocaml_Runtime[63],_ST_,[0],_ads_,_adr_), + eligibilite_allocation_logemen$2= + caml_call3(Runtime_ocaml_Runtime[28],_SU_,embed_demandeur,_adt_)} + catch(_aff_) + {_aff_ = caml_wrap_exception(_aff_); + if(_aff_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SR_]; + throw _aff_} + try + {var + _adu_=function(param){return 0}, + _adv_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_SW_,1)}, + _adw_=caml_call4(Runtime_ocaml_Runtime[63],_SX_,[0],_adv_,_adu_), + eligibilite_allocation_logemen$3= + caml_call3 + (Runtime_ocaml_Runtime[28],_SY_,Runtime_ocaml_Runtime[12],_adw_)} + catch(_afe_) + {_afe_ = caml_wrap_exception(_afe_); + if(_afe_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_SV_]; + throw _afe_} + var + _adx_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_SZ_,eligibilite_allocation_logemen), + [0, + eligibilite_allocation_logemen$0, + eligibilite_allocation_logemen$1, + eligibilite_allocation_logemen$2, + eligibilite_allocation_logemen$3]), + result=caml_call2(Runtime_ocaml_Runtime[27],_S0_,_adx_), + eligibilite_allocation_logemen$4=result[1], + eligibilite_allocation_logemen$5=result[2]; + try + {var + _ady_=function(param){return menage}, + _adz_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S2_,1)}, + _adA_=caml_call4(Runtime_ocaml_Runtime[63],_S3_,[0],_adz_,_ady_), + eligibilite_aide_personnalisee$0= + caml_call3(Runtime_ocaml_Runtime[28],_S4_,embed_menage,_adA_)} + catch(_afd_) + {_afd_ = caml_wrap_exception(_afd_); + if(_afd_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_S1_]; + throw _afd_} + try + {var + _adB_=function(param){return demandeur}, + _adC_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S6_,1)}, + _adD_=caml_call4(Runtime_ocaml_Runtime[63],_S7_,[0],_adC_,_adB_), + eligibilite_aide_personnalisee$1= + caml_call3(Runtime_ocaml_Runtime[28],_S8_,embed_demandeur,_adD_)} + catch(_afc_) + {_afc_ = caml_wrap_exception(_afc_); + if(_afc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_S5_]; + throw _afc_} + try + {var + _adE_=function(param){return date_courante}, + _adF_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_S__,1)}, + _adG_=caml_call4(Runtime_ocaml_Runtime[63],_S$_,[0],_adF_,_adE_), + eligibilite_aide_personnalisee$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ta_,Runtime_ocaml_Runtime[16],_adG_)} + catch(_afb_) + {_afb_ = caml_wrap_exception(_afb_); + if(_afb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_S9_]; + throw _afb_} + var + _adH_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Tb_,eligibilite_aide_personnalisee), + [0, + eligibilite_aide_personnalisee$0, + eligibilite_aide_personnalisee$1, + eligibilite_aide_personnalisee$2]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_Tc_,_adH_), + eligibilite_aide_personnalisee$3=result$0[2], + eligibilite_aide_personnalisee$4=result$0[3], + eligibilite_aide_personnalisee$5=result$0[4]; + try + {var + _adI_=function(param){return menage[2][3]}, + _adJ_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Te_,1)}, + _adK_=caml_call4(Runtime_ocaml_Runtime[63],_Tf_,[0],_adJ_,_adI_), + calcul_allocation_logement_dot= + caml_call3 + (Runtime_ocaml_Runtime[28],_Tg_,embed_mode_occupation,_adK_)} + catch(_afa_) + {_afa_ = caml_wrap_exception(_afa_); + if(_afa_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Td_]; + throw _afa_} + try + {var + _adL_=function(param){return ressources_menage_prises_en_co}, + _adM_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ti_,1)}, + _adN_=caml_call4(Runtime_ocaml_Runtime[63],_Tj_,[0],_adM_,_adL_), + calcul_allocation_logement_dot$0= + caml_call3 + (Runtime_ocaml_Runtime[28],_Tk_,Runtime_ocaml_Runtime[13],_adN_)} + catch(_ae$_) + {_ae$_ = caml_wrap_exception(_ae$_); + if(_ae$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Th_]; + throw _ae$_} + try + {var + _adO_=function(param){return menage[5]}, + _adP_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tm_,1)}, + _adQ_=caml_call4(Runtime_ocaml_Runtime[63],_Tn_,[0],_adP_,_adO_), + calcul_allocation_logement_dot$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_To_,embed_situation_familiale,_adQ_)} + catch(_ae__) + {_ae__ = caml_wrap_exception(_ae__); + if(_ae__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Tl_]; + throw _ae__} + try + {var + _adR_=function(param){return eligibilite_allocation_logemen$5}, + _adS_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tq_,1)}, + _adT_=caml_call4(Runtime_ocaml_Runtime[63],_Tr_,[0],_adS_,_adR_), + calcul_allocation_logement_dot$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ts_,Runtime_ocaml_Runtime[14],_adT_)} + catch(_ae9_) + {_ae9_ = caml_wrap_exception(_ae9_); + if(_ae9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Tp_]; + throw _ae9_} + try + {var + _adU_=function(param){return menage[2][9]}, + _adV_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Tu_,1)}, + _adW_=caml_call4(Runtime_ocaml_Runtime[63],_Tv_,[0],_adV_,_adU_), + calcul_allocation_logement_dot$3= + caml_call3 + (Runtime_ocaml_Runtime[28],_Tw_,embed_zone_d_habitation,_adW_)} + catch(_ae8_) + {_ae8_ = caml_wrap_exception(_ae8_); + if(_ae8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Tt_]; + throw _ae8_} + try + {var + _adX_=function(param){return date_courante}, + _adY_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ty_,1)}, + _adZ_=caml_call4(Runtime_ocaml_Runtime[63],_Tz_,[0],_adY_,_adX_), + calcul_allocation_logement_dot$4= + caml_call3 + (Runtime_ocaml_Runtime[28],_TA_,Runtime_ocaml_Runtime[16],_adZ_)} + catch(_ae7_) + {_ae7_ = caml_wrap_exception(_ae7_); + if(_ae7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Tx_]; + throw _ae7_} + try + {var + _ad0_= + function(param) + {switch(eligibilite_allocation_logemen$4[0]) + {case 0:return _TC_;case 1:return _TD_;default:return _TE_}}, + _ad1_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TF_,1)}, + _ad2_=caml_call4(Runtime_ocaml_Runtime[63],_TG_,[0],_ad1_,_ad0_), + calcul_allocation_logement_dot$5= + caml_call3 + (Runtime_ocaml_Runtime[28], + _TH_, + embed_type_aides_personnelle_l, + _ad2_)} + catch(_ae6_) + {_ae6_ = caml_wrap_exception(_ae6_); + if(_ae6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TB_]; + throw _ae6_} + var + _ad3_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_TI_,calcul_allocation_logement), + [0, + calcul_allocation_logement_dot, + calcul_allocation_logement_dot$0, + calcul_allocation_logement_dot$1, + calcul_allocation_logement_dot$2, + calcul_allocation_logement_dot$3, + calcul_allocation_logement_dot$4, + calcul_allocation_logement_dot$5]), + result$1=caml_call2(Runtime_ocaml_Runtime[27],_TJ_,_ad3_), + calcul_allocation_logement_dot$6=result$1[1], + calcul_allocation_logement_dot$7=result$1[2]; + try + {var + _ad4_=function(param){return menage[2][3]}, + _ad5_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TL_,1)}, + _ad6_=caml_call4(Runtime_ocaml_Runtime[63],_TM_,[0],_ad5_,_ad4_), + calcul_aide_personnalisee_loge= + caml_call3 + (Runtime_ocaml_Runtime[28],_TN_,embed_mode_occupation,_ad6_)} + catch(_ae5_) + {_ae5_ = caml_wrap_exception(_ae5_); + if(_ae5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TK_]; + throw _ae5_} + try + {var + _ad7_=function(param){return _TP_}, + _ad8_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TQ_,1)}, + _ad9_=caml_call4(Runtime_ocaml_Runtime[63],_TR_,[0],_ad8_,_ad7_), + calcul_aide_personnalisee_loge$0= + caml_call3 + (Runtime_ocaml_Runtime[28], + _TS_, + embed_type_aides_personnelle_l, + _ad9_)} + catch(_ae4_) + {_ae4_ = caml_wrap_exception(_ae4_); + if(_ae4_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TO_]; + throw _ae4_} + try + {var + _ad__=function(param){return ressources_menage_prises_en_co}, + _ad$_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TU_,1)}, + _aea_=caml_call4(Runtime_ocaml_Runtime[63],_TV_,[0],_ad$_,_ad__), + calcul_aide_personnalisee_loge$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_TW_,Runtime_ocaml_Runtime[13],_aea_)} + catch(_ae3_) + {_ae3_ = caml_wrap_exception(_ae3_); + if(_ae3_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TT_]; + throw _ae3_} + try + {var + _aeb_=function(param){return menage[5]}, + _aec_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_TY_,1)}, + _aed_=caml_call4(Runtime_ocaml_Runtime[63],_TZ_,[0],_aec_,_aeb_), + calcul_aide_personnalisee_loge$3= + caml_call3 + (Runtime_ocaml_Runtime[28],_T0_,embed_situation_familiale,_aed_)} + catch(_ae2_) + {_ae2_ = caml_wrap_exception(_ae2_); + if(_ae2_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_TX_]; + throw _ae2_} + try + {var + _aee_=function(param){return eligibilite_aide_personnalisee$4}, + _aef_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T2_,1)}, + _aeg_=caml_call4(Runtime_ocaml_Runtime[63],_T3_,[0],_aef_,_aee_), + calcul_aide_personnalisee_loge$4= + caml_call3 + (Runtime_ocaml_Runtime[28],_T4_,Runtime_ocaml_Runtime[14],_aeg_)} + catch(_ae1_) + {_ae1_ = caml_wrap_exception(_ae1_); + if(_ae1_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_T1_]; + throw _ae1_} + try + {var + _aeh_=function(param){return menage[2][9]}, + _aei_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T6_,1)}, + _aej_=caml_call4(Runtime_ocaml_Runtime[63],_T7_,[0],_aei_,_aeh_), + calcul_aide_personnalisee_loge$5= + caml_call3 + (Runtime_ocaml_Runtime[28],_T8_,embed_zone_d_habitation,_aej_)} + catch(_ae0_) + {_ae0_ = caml_wrap_exception(_ae0_); + if(_ae0_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_T5_]; + throw _ae0_} + try + {var + _aek_=function(param){return date_courante}, + _ael_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_T__,1)}, + _aem_=caml_call4(Runtime_ocaml_Runtime[63],_T$_,[0],_ael_,_aek_), + calcul_aide_personnalisee_loge$6= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ua_,Runtime_ocaml_Runtime[16],_aem_)} + catch(_aeZ_) + {_aeZ_ = caml_wrap_exception(_aeZ_); + if(_aeZ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_T9_]; + throw _aeZ_} + var + _aen_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Ub_,calcul_aide_personnalisee_loge$2), + [0, + calcul_aide_personnalisee_loge, + calcul_aide_personnalisee_loge$0, + calcul_aide_personnalisee_loge$1, + calcul_aide_personnalisee_loge$3, + calcul_aide_personnalisee_loge$4, + calcul_aide_personnalisee_loge$5, + calcul_aide_personnalisee_loge$6]), + result$2=caml_call2(Runtime_ocaml_Runtime[27],_Uc_,_aen_), + calcul_aide_personnalisee_loge$7=result$2[1], + calcul_aide_personnalisee_loge$8=result$2[2]; + try + {var + _aeo_=function(param){return eligibilite_aide_personnalisee$5}, + _aep_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ue_,1)}, + _aeq_=caml_call4(Runtime_ocaml_Runtime[63],_Uf_,[0],_aep_,_aeo_)} + catch(_aeY_) + {_aeY_ = caml_wrap_exception(_aeY_); + if(_aeY_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ud_]; + throw _aeY_} + var + _aer_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_Ug_,_aer_,_aeq_); + try + {var + _aes_= + function(param) + {switch(eligibilite_allocation_logemen$4[0]) + {case 0:var _aeX_=0;break; + case 1:var _aeX_=1;break; + default:var _aeX_=1} + return caml_call2 + (Runtime_ocaml_Runtime[84], + eligibilite_aide_personnalisee$3, + _aeX_)}, + _aet_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Ui_,1)}, + _aeu_=caml_call4(Runtime_ocaml_Runtime[63],_Uj_,[0],_aet_,_aes_)} + catch(_aeW_) + {_aeW_ = caml_wrap_exception(_aeW_); + if(_aeW_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Uh_]; + throw _aeW_} + var + eligibilite= + caml_call3 + (Runtime_ocaml_Runtime[28],_Uk_,Runtime_ocaml_Runtime[12],_aeu_); + function _aev_(aide_finale) + {try + {var + _aeK_= + function(param) + {var + _aeO_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Um_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aeP_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Un_, + calcul_aide_personnalisee_loge$8), + _aeO_), + _aeQ_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Uo_, + Runtime_ocaml_Runtime[13], + _aeP_), + aide_finale_apl= + caml_call2(Runtime_ocaml_Runtime[27],_Up_,_aeQ_), + _aeR_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Uq_, + Runtime_ocaml_Runtime[13], + aide_finale), + _aeS_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Ur_, + calcul_allocation_logement_dot$7), + _aeR_), + _aeT_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Us_, + Runtime_ocaml_Runtime[13], + _aeS_), + aide_finale_al=caml_call2(Runtime_ocaml_Runtime[27],_Ut_,_aeT_); + if(caml_call1(Runtime_ocaml_Runtime[67],eligibilite)) + return aide_finale; + switch(eligibilite_allocation_logemen$4[0]) + {case 0:var _aeU_=1;break; + case 1:var _aeU_=0;break; + default:var _aeU_=0} + var _aeV_=caml_call1(Runtime_ocaml_Runtime[67],_aeU_); + return caml_call2 + (Runtime_ocaml_Runtime[83], + eligibilite_aide_personnalisee$3, + _aeV_) + ?caml_call2 + (Runtime_ocaml_Runtime[123],aide_finale_apl,aide_finale_al) + ?aide_finale_apl + :aide_finale_al + :eligibilite_aide_personnalisee$3 + ?aide_finale_apl + :aide_finale_al}, + _aeL_= + function(param) + {return caml_call2(Runtime_ocaml_Runtime[29],_Uu_,1)}, + _aeM_=caml_call4(Runtime_ocaml_Runtime[63],_Uv_,[0],_aeL_,_aeK_); + return _aeM_} + catch(_aeN_) + {_aeN_ = caml_wrap_exception(_aeN_); + if(_aeN_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ul_]; + throw _aeN_}} + var + traitement_aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_Uw_,Runtime_ocaml_Runtime[10],_aev_); + try + {var + _aew_= + function(param) + {if(caml_call1(Runtime_ocaml_Runtime[67],eligibilite)) + return caml_call1(Runtime_ocaml_Runtime[31],cst_0$397); + switch(eligibilite_allocation_logemen$4[0]) + {case 0:var _aeA_=1;break; + case 1:var _aeA_=0;break; + default:var _aeA_=0} + var _aeB_=caml_call1(Runtime_ocaml_Runtime[67],_aeA_); + if + (caml_call2 + (Runtime_ocaml_Runtime[83], + eligibilite_aide_personnalisee$3, + _aeB_)) + {var + _aeC_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Uy_, + Runtime_ocaml_Runtime[13], + calcul_allocation_logement_dot$6), + _aeD_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Uz_, + calcul_allocation_logement_dot$7), + _aeC_), + _aeE_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _UA_, + Runtime_ocaml_Runtime[13], + _aeD_), + _aeF_=caml_call2(Runtime_ocaml_Runtime[27],_UB_,_aeE_), + _aeG_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _UC_, + Runtime_ocaml_Runtime[13], + calcul_aide_personnalisee_loge$7), + _aeH_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _UD_, + calcul_aide_personnalisee_loge$8), + _aeG_), + _aeI_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _UE_, + Runtime_ocaml_Runtime[13], + _aeH_), + _aeJ_=caml_call2(Runtime_ocaml_Runtime[27],_UF_,_aeI_); + return caml_call2(Runtime_ocaml_Runtime[123],_aeJ_,_aeF_) + ?calcul_aide_personnalisee_loge$7 + :calcul_allocation_logement_dot$6} + return eligibilite_aide_personnalisee$3 + ?calcul_aide_personnalisee_loge$7 + :calcul_allocation_logement_dot$6}, + _aex_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UG_,1)}, + _aey_=caml_call4(Runtime_ocaml_Runtime[63],_UH_,[0],_aex_,_aew_)} + catch(_aez_) + {_aez_ = caml_wrap_exception(_aez_); + if(_aez_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Ux_]; + throw _aez_} + var + aide_finale_formule= + caml_call3 + (Runtime_ocaml_Runtime[28],_UI_,Runtime_ocaml_Runtime[13],_aey_); + return [0, + eligibilite, + aide_finale_formule, + traitement_aide_finale, + coefficents_enfants_garde_alte]} + function calculette_aides_au_logement_g(calculette_aides_au_logement_g) + {var + menage=calculette_aides_au_logement_g[1], + demandeur=calculette_aides_au_logement_g[2], + date_courante=calculette_aides_au_logement_g[3], + ressources_menage_prises_en_co=calculette_aides_au_logement_g[4]; + try + {var + _acd_= + function(param) + {var + _ade_=menage[7], + _adf_=menage[6], + _adg_=menage[5], + _adh_=menage[4], + _adi_=menage[3]; + function _adj_(personne_a_charge) + {if(0 === personne_a_charge[0]) + {var enfant=personne_a_charge[1];return 0 === enfant[7][0]?1:0} + return 1} + var _adk_=caml_call2(Runtime_ocaml_Runtime[90],_adj_,_adi_); + return [0,menage[1],menage[2],_adk_,_adh_,_adg_,_adf_,_ade_]}, + _ace_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UK_,1)}, + _acf_=caml_call4(Runtime_ocaml_Runtime[63],_UL_,[0],_ace_,_acd_)} + catch(_add_) + {_add_ = caml_wrap_exception(_add_); + if(_add_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UJ_]; + throw _add_} + var + menage_sans_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_UM_,embed_menage,_acf_); + try + {var + _acg_=function(param){return menage}, + _ach_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UO_,1)}, + _aci_=caml_call4(Runtime_ocaml_Runtime[63],_UP_,[0],_ach_,_acg_), + calculette_dot_menage= + caml_call3(Runtime_ocaml_Runtime[28],_UQ_,embed_menage,_aci_)} + catch(_adc_) + {_adc_ = caml_wrap_exception(_adc_); + if(_adc_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UN_]; + throw _adc_} + try + {var + _acj_=function(param){return demandeur}, + _ack_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_US_,1)}, + _acl_=caml_call4(Runtime_ocaml_Runtime[63],_UT_,[0],_ack_,_acj_), + calculette_dot_demandeur= + caml_call3(Runtime_ocaml_Runtime[28],_UU_,embed_demandeur,_acl_)} + catch(_adb_) + {_adb_ = caml_wrap_exception(_adb_); + if(_adb_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UR_]; + throw _adb_} + try + {var + _acm_=function(param){return date_courante}, + _acn_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_UW_,1)}, + _aco_=caml_call4(Runtime_ocaml_Runtime[63],_UX_,[0],_acn_,_acm_), + calculette_dot_date_courante= + caml_call3 + (Runtime_ocaml_Runtime[28],_UY_,Runtime_ocaml_Runtime[16],_aco_)} + catch(_ada_) + {_ada_ = caml_wrap_exception(_ada_); + if(_ada_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UV_]; + throw _ada_} + try + {var + _acp_=function(param){return ressources_menage_prises_en_co}, + _acq_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U0_,1)}, + _acr_=caml_call4(Runtime_ocaml_Runtime[63],_U1_,[0],_acq_,_acp_), + calculette_dot_ressources_mena= + caml_call3 + (Runtime_ocaml_Runtime[28],_U2_,Runtime_ocaml_Runtime[13],_acr_)} + catch(_ac$_) + {_ac$_ = caml_wrap_exception(_ac$_); + if(_ac$_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_UZ_]; + throw _ac$_} + var + _acs_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_U3_,calculette_aides_au_logement), + [0, + calculette_dot_menage, + calculette_dot_demandeur, + calculette_dot_date_courante, + calculette_dot_ressources_mena]), + result=caml_call2(Runtime_ocaml_Runtime[27],_U4_,_acs_), + calculette_dot_eligibilite=result[1], + calculette_dot_aide_finale_for=result[2], + calculette_dot_traitement_aide=result[3], + calculette_dot_coefficents_enf=result[4]; + try + {var + _act_=function(param){return menage_sans_enfants_garde_alte}, + _acu_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U6_,1)}, + _acv_=caml_call4(Runtime_ocaml_Runtime[63],_U7_,[0],_acu_,_act_), + calculette_sans_garde_alternee= + caml_call3(Runtime_ocaml_Runtime[28],_U8_,embed_menage,_acv_)} + catch(_ac__) + {_ac__ = caml_wrap_exception(_ac__); + if(_ac__ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_U5_]; + throw _ac__} + try + {var + _acw_=function(param){return demandeur}, + _acx_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_U__,1)}, + _acy_=caml_call4(Runtime_ocaml_Runtime[63],_U$_,[0],_acx_,_acw_), + calculette_sans_garde_alternee$0= + caml_call3(Runtime_ocaml_Runtime[28],_Va_,embed_demandeur,_acy_)} + catch(_ac9_) + {_ac9_ = caml_wrap_exception(_ac9_); + if(_ac9_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_U9_]; + throw _ac9_} + try + {var + _acz_=function(param){return date_courante}, + _acA_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vc_,1)}, + _acB_=caml_call4(Runtime_ocaml_Runtime[63],_Vd_,[0],_acA_,_acz_), + calculette_sans_garde_alternee$1= + caml_call3 + (Runtime_ocaml_Runtime[28],_Ve_,Runtime_ocaml_Runtime[16],_acB_)} + catch(_ac8_) + {_ac8_ = caml_wrap_exception(_ac8_); + if(_ac8_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vb_]; + throw _ac8_} + try + {var + _acC_=function(param){return ressources_menage_prises_en_co}, + _acD_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vg_,1)}, + _acE_=caml_call4(Runtime_ocaml_Runtime[63],_Vh_,[0],_acD_,_acC_), + calculette_sans_garde_alternee$2= + caml_call3 + (Runtime_ocaml_Runtime[28],_Vi_,Runtime_ocaml_Runtime[13],_acE_)} + catch(_ac7_) + {_ac7_ = caml_wrap_exception(_ac7_); + if(_ac7_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vf_]; + throw _ac7_} + var + _acF_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26],_Vj_,calculette_aides_au_logement), + [0, + calculette_sans_garde_alternee, + calculette_sans_garde_alternee$0, + calculette_sans_garde_alternee$1, + calculette_sans_garde_alternee$2]), + result$0=caml_call2(Runtime_ocaml_Runtime[27],_Vk_,_acF_), + calculette_sans_garde_alternee$3=result$0[2]; + try + {var + _acG_=function(param){return calculette_dot_eligibilite}, + _acH_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vm_,1)}, + _acI_=caml_call4(Runtime_ocaml_Runtime[63],_Vn_,[0],_acH_,_acG_)} + catch(_ac6_) + {_ac6_ = caml_wrap_exception(_ac6_); + if(_ac6_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vl_]; + throw _ac6_} + var + eligibilite= + caml_call3 + (Runtime_ocaml_Runtime[28],_Vo_,Runtime_ocaml_Runtime[12],_acI_); + try + {var + _acJ_=function(param){return calculette_dot_coefficents_enf}, + _acK_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vq_,1)}, + _acL_=caml_call4(Runtime_ocaml_Runtime[63],_Vr_,[0],_acK_,_acJ_)} + catch(_ac5_) + {_ac5_ = caml_wrap_exception(_ac5_); + if(_ac5_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vp_]; + throw _ac5_} + var + _acM_=caml_call1(Runtime_ocaml_Runtime[18],Runtime_ocaml_Runtime[15]), + coefficents_enfants_garde_alte= + caml_call3(Runtime_ocaml_Runtime[28],_Vs_,_acM_,_acL_); + try + {var + _acN_= + function(param) + {var + _acR_=caml_call1(Runtime_ocaml_Runtime[46],cst_0$398), + _acS_= + caml_call1 + (Runtime_ocaml_Runtime[68],coefficents_enfants_garde_alte); + if(caml_call2(Runtime_ocaml_Runtime[86],_acS_,_acR_)) + var _acT_=caml_call1(Runtime_ocaml_Runtime[31],cst_0$399); + else + var + _acY_= + caml_call1 + (Runtime_ocaml_Runtime[68],coefficents_enfants_garde_alte), + _acZ_=caml_call1(Runtime_ocaml_Runtime[69],_acY_), + _ac0_=caml_call1(Runtime_ocaml_Runtime[39],cst_0$400), + _ac1_= + function(sum1,sum2) + {return caml_call2(Runtime_ocaml_Runtime[92],sum1,sum2)}, + _ac2_= + caml_call3 + (Runtime_ocaml_Runtime[88], + _ac1_, + _ac0_, + coefficents_enfants_garde_alte), + _ac3_=caml_call2(Runtime_ocaml_Runtime[107],_ac2_,_acZ_), + _ac4_= + caml_call2 + (Runtime_ocaml_Runtime[98], + calculette_dot_aide_finale_for, + calculette_sans_garde_alternee$3), + _acT_=caml_call2(Runtime_ocaml_Runtime[104],_ac4_,_ac3_); + var + _acU_= + caml_call2 + (Runtime_ocaml_Runtime[93], + calculette_sans_garde_alternee$3, + _acT_), + _acV_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Vu_, + Runtime_ocaml_Runtime[13], + _acU_), + _acW_= + caml_call1 + (caml_call2 + (Runtime_ocaml_Runtime[26], + _Vv_, + calculette_dot_traitement_aide), + _acV_), + _acX_= + caml_call3 + (Runtime_ocaml_Runtime[28], + _Vw_, + Runtime_ocaml_Runtime[13], + _acW_); + return caml_call2(Runtime_ocaml_Runtime[27],_Vx_,_acX_)}, + _acO_= + function(param){return caml_call2(Runtime_ocaml_Runtime[29],_Vy_,1)}, + _acP_=caml_call4(Runtime_ocaml_Runtime[63],_Vz_,[0],_acO_,_acN_)} + catch(_acQ_) + {_acQ_ = caml_wrap_exception(_acQ_); + if(_acQ_ === Runtime_ocaml_Runtime[2]) + throw [0,Runtime_ocaml_Runtime[8],_Vt_]; + throw _acQ_} + var + aide_finale= + caml_call3 + (Runtime_ocaml_Runtime[28],_VA_,Runtime_ocaml_Runtime[13],_acP_); + return [0,eligibilite,aide_finale]} + var + Law_source_Aides_logement= + [0, + TypePret, + embed_type_pret, + TitulairePret, + embed_titulaire_pret, + TypeTravauxLogementD83215, + embed_type_travaux_logement_d8, + TypeTravauxLogementR8425, + embed_type_travaux_logement_r8, + AmelioreParOccupant, + embed_ameliore_par_occupant, + LimiteTranche, + embed_limite_tranche, + LimiteTrancheDecimal, + embed_limite_tranche_decimal, + PrestationRecue, + embed_prestation_recue, + ParentOuAutre, + embed_parent_ou_autre, + SituationGardeAlternee, + embed_situation_garde_alternee, + Parente, + embed_parente, + DateDeNaissanceOuMoisDeGrosses, + embed_date_de_naissance_ou_moi, + ZoneDHabitation, + embed_zone_d_habitation, + PaiementLogementDistinctProfes, + embed_paiement_logement_distin, + VersementA, + embed_versement_a, + DepenseLogement, + embed_depense_logement, + ModeOccupationImpaye, + embed_mode_occupation_impaye, + TypeEligibiliteAllocationLogem, + embed_type_eligibilite_allocat, + TypeAidesPersonnelleLogement, + embed_type_aides_personnelle_l, + SituationFamiliale, + embed_situation_familiale, + PriseEnCharge$0, + embed_prise_en_charge$0, + TypeLogementFoyer, + embed_type_logement_foyer, + CategorieEquivalenceLoyerAlloc, + embed_categorie_equivalence_lo, + SituationFamilialeCalculAPL, + embed_situation_familiale_calc, + Collectivite$0, + embed_collectivite$0, + PriseEnChargeEnfant, + embed_prise_en_charge_enfant, + SituationObligationScolaire$0, + embed_situation_obligation_sco$0, + ElementPrestationsFamiliales$0, + embed_element_prestations_fami$0, + ConventionBailleurSocial, + embed_convention_bailleur_soci, + ConventionANHA, + embed_convention_a_n_h_a, + PersonneSousLocation, + embed_personne_sous_location, + Patrimoine, + embed_patrimoine, + ConditionsEtrangers, + embed_conditions_etrangers, + PersonneVivantHabituellementAu, + embed_personne_vivant_habituel, + EligibiliteAidePersonnaliseeLo, + embed_eligibilite_aide_personn, + EligibilitePrimeDeDemenagement, + embed_eligibilite_prime_de_dem, + RessourcesAidesPersonnelleLoge, + embed_ressources_aides_personn, + ContributionsSocialesAidesPers, + embed_contributions_sociales_a, + CalculAidePersonnaliseeLogemen, + embed_calcul_aide_personnalise, + CalculEquivalenceLoyerMinimale, + embed_calcul_equivalence_loyer, + CalculNombrePartLogementFoyer, + embed_calcul_nombre_part_logem, + CalculAidePersonnaliseeLogemen$0, + embed_calcul_aide_personnalise$0, + CalculNombrePartsAccessionProp, + embed_calcul_nombre_parts_acce, + CalculAidePersonnaliseeLogemen$1, + embed_calcul_aide_personnalise$1, + TraitementFormuleAideFinale, + embed_traitement_formule_aide_, + CalculAidePersonnaliseeLogemen$2, + embed_calcul_aide_personnalise$2, + InfosChangementLogementD8424, + embed_infos_changement_logemen, + CalculAllocationLogementLocati, + embed_calcul_allocation_logeme, + CalculAllocationLogementAccess, + embed_calcul_allocation_logeme$0, + CalculAllocationLogementFoyer, + embed_calcul_allocation_logeme$1, + CalculAllocationLogement, + embed_calcul_allocation_logeme$2, + OuvertureDroitsRetraite, + embed_ouverture_droits_retrait, + ImpayeDepenseLogement, + embed_impaye_depense_logement, + CalculetteAidesAuLogement, + embed_calculette_aides_au_loge, + CalculetteAidesAuLogementGarde, + embed_calculette_aides_au_loge$0, + BaseMensuelleAllocationsFamili$1, + embed_base_mensuelle_allocatio$1, + Smic$0, + embed_smic$0, + Pret, + embed_pret, + NeufOuAncien, + embed_neuf_ou_ancien, + TrancheRevenu, + embed_tranche_revenu, + TrancheRevenuDecimal, + embed_tranche_revenu_decimal, + AutrePersonneACharge, + embed_autre_personne_a_charge, + DateNaissanceTroisiemeOuDernie, + embed_date_naissance_troisieme, + EligibiliteAllocationLogement, + embed_eligibilite_allocation_l, + LogementFoyer, + embed_logement_foyer, + EnfantPrestationsFamiliales, + embed_enfant_prestations_famil, + EnfantACharge, + embed_enfant_a_charge, + TypeBailleur, + embed_type_bailleur, + LoueOuSousLoueADesTiers, + embed_loue_ou_sous_loue_a_des_, + Nationalite, + embed_nationalite, + ChangementLogementD8424, + embed_changement_logement_d842, + Proprietaire, + embed_proprietaire, + InformationsPrimeDeDemenagemen, + embed_informations_prime_de_de, + EligibilitePrestationsFamilial, + embed_eligibilite_prestations_, + PersonneACharge, + embed_personne_a_charge, + Demandeur, + embed_demandeur, + Location, + embed_location, + EligibiliteAidesPersonnelleLog, + embed_eligibilite_aides_person, + CategorieCalculAPL, + embed_categorie_calcul_a_p_l, + ModeOccupation, + embed_mode_occupation, + Logement, + embed_logement, + Menage, + embed_menage, + EligibiliteAidesPersonnelleLog$0, + embed_eligibilite_aides_person$0, + EligibiliteAidePersonnaliseeLo$0, + embed_eligibilite_aide_personn$0, + EligibiliteAllocationLogementI, + embed_eligibilite_allocation_l$0, + EligibilitePrimeDeDemenagement$0, + embed_eligibilite_prime_de_dem$0, + RessourcesAidesPersonnelleLoge$0, + embed_ressources_aides_personn$0, + ContributionsSocialesAidesPers$0, + embed_contributions_sociales_a$0, + CalculAidePersonnaliseeLogemen$3, + embed_calcul_aide_personnalise$3, + CalculEquivalenceLoyerMinimale$0, + embed_calcul_equivalence_loyer$0, + CalculNombrePartLogementFoyerI, + embed_calcul_nombre_part_logem$0, + CalculAidePersonnaliseeLogemen$4, + embed_calcul_aide_personnalise$4, + CalculNombrePartsAccessionProp$0, + embed_calcul_nombre_parts_acce$0, + CalculAidePersonnaliseeLogemen$5, + embed_calcul_aide_personnalise$5, + CalculAidePersonnaliseeLogemen$6, + embed_calcul_aide_personnalise$6, + CalculAllocationLogementLocati$0, + embed_calcul_allocation_logeme$3, + CalculAllocationLogementAccess$0, + embed_calcul_allocation_logeme$4, + CalculAllocationLogementFoyerI, + embed_calcul_allocation_logeme$5, + CalculAllocationLogementIn, + embed_calcul_allocation_logeme$6, + OuvertureDroitsRetraiteIn, + embed_ouverture_droits_retrait$0, + ImpayeDepenseLogementIn, + embed_impaye_depense_logement_, + CalculetteAidesAuLogementIn, + embed_calculette_aides_au_loge$1, + CalculetteAidesAuLogementGarde$0, + embed_calculette_aides_au_loge$2, + BaseMensuelleAllocationsFamili$2, + embed_base_mensuelle_allocatio$2, + SmicIn$0, + embed_smic_in$0, + EligibilitePrestationsFamilial$0, + embed_eligibilite_prestations_$0, + contributions_sociales_aides_p, + calcul_equivalence_loyer_minim, + calcul_nombre_part_logement_fo, + calcul_nombre_parts_accession_, + ouverture_droits_retraite, + impaye_depense_logement, + base_mensuelle_allocations_fam$5, + smic$1, + calcul_aide_personnalisee_loge, + calcul_aide_personnalisee_loge$0, + calcul_aide_personnalisee_loge$1, + eligibilite_aides_personnelle_, + ressources_aides_personnelle_l, + eligibilite_prestations_famili, + calcul_allocation_logement_loc, + calcul_allocation_logement_foy, + calcul_allocation_logement_acc, + calcul_aide_personnalisee_loge$2, + eligibilite_prime_de_demenagem, + eligibilite_aide_personnalisee, + eligibilite_allocation_logemen, + calcul_allocation_logement, + calculette_aides_au_logement, + calculette_aides_au_logement_g]; + caml_register_global + (8576,Law_source_Aides_logement,"Law_source__Aides_logement"); + function type_pret_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"D331_32","payload":arg}; + case 1: + var arg$0=param[1];return {"kind":"D331_63_64","payload":arg$0}; + case 2:var arg$1=param[1];return {"kind":"D331_59_8","payload":arg$1}; + case 3:var arg$2=param[1];return {"kind":"D331_76_1","payload":arg$2}; + default:var arg$3=param[1];return {"kind":"Autre","payload":arg$3}}} + function type_pret_of_jsoo(type_pret) + {var cons=caml_string_of_jsstring(type_pret.kind); + if(caml_string_notequal(cons,cst_Autre$2)) + {if(caml_string_notequal(cons,cst_D331_32$0)) + {if(caml_string_notequal(cons,cst_D331_59_8$0)) + {if(caml_string_notequal(cons,cst_D331_63_64$0)) + {if(caml_string_notequal(cons,cst_D331_76_1$0)) + {var _acc_=caml_call2(Stdlib_Printf[4],_VB_,cons); + return caml_call1(Stdlib[2],_acc_)} + return _VC_} + return _VD_} + return _VE_} + return _VF_} + return _VG_} + function titulaire_pret_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"Demandeur","payload":arg}} + var arg$0=param[1]; + return {"kind":"VendeurQuandDemandeurAContratLocationAccession", + "payload":arg$0}} + function titulaire_pret_of_jsoo(titulaire_pret) + {var cons=caml_string_of_jsstring(titulaire_pret.kind); + if(caml_string_notequal(cons,cst_Demandeur$0)) + {if(caml_string_notequal(cons,cst_VendeurQuandDemandeurACont$0)) + {var _acb_=caml_call2(Stdlib_Printf[4],_VH_,cons); + return caml_call1(Stdlib[2],_acb_)} + return _VI_} + return _VJ_} + function type_travaux_logement_d832_15_(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"TravauxPourAcquisitionD832_15_1","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"TravauxSurLogementDejaAcquisD832_15_2", + "payload":arg$0}; + default: + var arg$1=param[1];return {"kind":"PasDeTravaux","payload":arg$1}}} + function type_travaux_logement_d832_15_$0(type_travaux_logement_d832_15) + {var cons=caml_string_of_jsstring(type_travaux_logement_d832_15.kind); + if(caml_string_notequal(cons,cst_PasDeTravaux$1)) + {if(caml_string_notequal(cons,cst_TravauxPourAcquisitionD832$0)) + {if(caml_string_notequal(cons,cst_TravauxSurLogementDejaAcqu)) + {var _aca_=caml_call2(Stdlib_Printf[4],_VK_,cons); + return caml_call1(Stdlib[2],_aca_)} + return _VL_} + return _VM_} + return _VN_} + function type_travaux_logement_r842_5_t(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"ObjectifDecenceLogement","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"PrevuDansListeR321_15","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"AgrandirOuRendreHabitableD331_63","payload":arg$1}; + default: + var arg$2=param[1];return {"kind":"PasDeTravaux","payload":arg$2}}} + function type_travaux_logement_r842_5_o(type_travaux_logement_r842_5) + {var cons=caml_string_of_jsstring(type_travaux_logement_r842_5.kind); + if(caml_string_notequal(cons,cst_AgrandirOuRendreHabitableD$0)) + {if(caml_string_notequal(cons,cst_ObjectifDecenceLogement)) + {if(caml_string_notequal(cons,cst_PasDeTravaux$2)) + {if(caml_string_notequal(cons,cst_PrevuDansListeR321_15)) + {var _ab$_=caml_call2(Stdlib_Printf[4],_VO_,cons); + return caml_call1(Stdlib[2],_ab$_)} + return _VP_} + return _VQ_} + return _VR_} + return _VS_} + function ameliore_par_occupant_to_jsoo(param) + {if(0 === param[0]){var arg=param[1];return {"kind":"Oui","payload":arg}} + var arg$0=param[1]; + return {"kind":"Non","payload":arg$0}} + function ameliore_par_occupant_of_jsoo(ameliore_par_occupant) + {var cons=caml_string_of_jsstring(ameliore_par_occupant.kind); + if(caml_string_notequal(cons,cst_Non$2)) + {if(caml_string_notequal(cons,cst_Oui$1)) + {var _ab__=caml_call2(Stdlib_Printf[4],_VT_,cons); + return caml_call1(Stdlib[2],_ab__)} + return _VU_} + return _VV_} + function limite_tranche_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1],t38=caml_call1(Runtime_ocaml_Runtime[35],arg); + return {"kind":"Revenu","payload":t38}} + var arg$0=param[1]; + return {"kind":"Infini","payload":arg$0}} + function limite_tranche_of_jsoo(limite_tranche) + {var cons=caml_string_of_jsstring(limite_tranche.kind); + if(caml_string_notequal(cons,cst_Infini$1)) + {if(caml_string_notequal(cons,cst_Revenu$1)) + {var _ab8_=caml_call2(Stdlib_Printf[4],_VW_,cons); + return caml_call1(Stdlib[2],_ab8_)} + var + _ab9_= + caml_call1(Runtime_ocaml_Runtime[42],limite_tranche.payload); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_ab9_)]} + return _VX_} + function limite_tranche_decimal_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1],t44=caml_call1(Runtime_ocaml_Runtime[43],arg); + return {"kind":"Revenu","payload":t44}} + var arg$0=param[1]; + return {"kind":"Infini","payload":arg$0}} + function limite_tranche_decimal_of_jsoo(limite_tranche_decimal) + {var cons=caml_string_of_jsstring(limite_tranche_decimal.kind); + if(caml_string_notequal(cons,cst_Infini$2)) + {if(caml_string_notequal(cons,cst_Revenu$2)) + {var _ab7_=caml_call2(Stdlib_Printf[4],_VY_,cons); + return caml_call1(Stdlib[2],_ab7_)} + return [0, + caml_call1 + (Runtime_ocaml_Runtime[42],limite_tranche_decimal.payload)]} + return _VZ_} + function prestation_recue_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"AllocationsFamiliales","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"ComplementFamilial","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"AllocationJeuneEnfant","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"AllocationSoutienFamilial","payload":arg$2}; + case 4: + var arg$3=param[1]; + return {"kind":"AllocationSoutienEnfantHandicape","payload":arg$3}; + default: + var arg$4=param[1]; + return {"kind":"AllocationAdulteHandicape","payload":arg$4}}} + function prestation_recue_of_jsoo(prestation_recue) + {var cons=caml_string_of_jsstring(prestation_recue.kind); + if(caml_string_notequal(cons,cst_AllocationAdulteHandicape)) + {if(caml_string_notequal(cons,cst_AllocationJeuneEnfant$0)) + {if(caml_string_notequal(cons,cst_AllocationSoutienEnfantHan$0)) + {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$3)) + {if(caml_string_notequal(cons,cst_AllocationsFamiliales$3)) + {if(caml_string_notequal(cons,cst_ComplementFamilial$0)) + {var _ab6_=caml_call2(Stdlib_Printf[4],_V0_,cons); + return caml_call1(Stdlib[2],_ab6_)} + return _V1_} + return _V2_} + return _V3_} + return _V4_} + return _V5_} + return _V6_} + function parent_ou_autre_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1],t63=caml_call1(Runtime_ocaml_Runtime[43],arg); + return {"kind":"DemandeurOuConjointOuParentOuViaPartsSocietes", + "payload":t63}} + var arg$0=param[1]; + return {"kind":"Autre","payload":arg$0}} + function parent_ou_autre_of_jsoo(parent_ou_autre) + {var cons=caml_string_of_jsstring(parent_ou_autre.kind); + if(caml_string_notequal(cons,cst_Autre$3)) + {if(caml_string_notequal(cons,cst_DemandeurOuConjointOuParen$0)) + {var _ab5_=caml_call2(Stdlib_Printf[4],_V7_,cons); + return caml_call1(Stdlib[2],_ab5_)} + return [0, + caml_call1(Runtime_ocaml_Runtime[42],parent_ou_autre.payload)]} + return _V8_} + function situation_garde_alternee_to_js(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"PasDeGardeAlternee","payload":arg}} + var arg$0=param[1],t71=caml_call1(Runtime_ocaml_Runtime[43],arg$0); + return {"kind":"GardeAlterneeCoefficientPriseEnCharge","payload":t71}} + function situation_garde_alternee_of_js(situation_garde_alternee) + {var cons=caml_string_of_jsstring(situation_garde_alternee.kind); + if(caml_string_notequal(cons,cst_GardeAlterneeCoefficientPr)) + {if(caml_string_notequal(cons,cst_PasDeGardeAlternee)) + {var _ab4_=caml_call2(Stdlib_Printf[4],_V9_,cons); + return caml_call1(Stdlib[2],_ab4_)} + return _V__} + return [1, + caml_call1 + (Runtime_ocaml_Runtime[42],situation_garde_alternee.payload)]} + function parente_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Ascendant","payload":arg}; + case 1: + var arg$0=param[1];return {"kind":"Descendant","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"CollateralDeuxiemeTroisiemeDegre","payload":arg$1}}} + function parente_of_jsoo(parente) + {var cons=caml_string_of_jsstring(parente.kind); + if(caml_string_notequal(cons,cst_Ascendant$0)) + {if(caml_string_notequal(cons,cst_CollateralDeuxiemeTroisiem)) + {if(caml_string_notequal(cons,cst_Descendant$0)) + {var _ab3_=caml_call2(Stdlib_Printf[4],_V$_,cons); + return caml_call1(Stdlib[2],_ab3_)} + return _Wa_} + return _Wb_} + return _Wc_} + function date_de_naissance_ou_mois_de_g(param) + {switch(param[0]) + {case 0: + var arg=param[1],t82=caml_call1(Runtime_jsoo_Runtime[5],arg); + return {"kind":"DateDeNaissance","payload":t82}; + case 1: + var arg$0=param[1]; + return {"kind":"AvantPremierJourMoisCivilTroisiemeMoisDeGrossesse", + "payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"ApresPremierJourMoisCivilTroisiemeMoisDeGrossesse", + "payload":arg$1}}} + function date_de_naissance_ou_mois_de_g$0(date_de_naissance_ou_mois_de_g) + {var cons=caml_string_of_jsstring(date_de_naissance_ou_mois_de_g.kind); + if(caml_string_notequal(cons,cst_ApresPremierJourMoisCivilT)) + {if(caml_string_notequal(cons,cst_AvantPremierJourMoisCivilT$0)) + {if(caml_string_notequal(cons,cst_DateDeNaissance$0)) + {var _ab2_=caml_call2(Stdlib_Printf[4],_Wd_,cons); + return caml_call1(Stdlib[2],_ab2_)} + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + date_de_naissance_ou_mois_de_g.payload)]} + return _We_} + return _Wf_} + function zone_d_habitation_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Zone1","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Zone2","payload":arg$0}; + default:var arg$1=param[1];return {"kind":"Zone3","payload":arg$1}}} + function zone_d_habitation_of_jsoo(zone_d_habitation) + {var cons=caml_string_of_jsstring(zone_d_habitation.kind); + if(caml_string_notequal(cons,cst_Zone1$0)) + {if(caml_string_notequal(cons,cst_Zone2$0)) + {if(caml_string_notequal(cons,cst_Zone3$0)) + {var _ab1_=caml_call2(Stdlib_Printf[4],_Wg_,cons); + return caml_call1(Stdlib[2],_ab1_)} + return _Wh_} + return _Wi_} + return _Wj_} + function paiement_logement_distinct_pro(param) + {if(0 === param[0]) + {var arg=param[1],t97=caml_call1(Runtime_ocaml_Runtime[35],arg); + return {"kind":"OuiAvecLoyerOuCharges","payload":t97}} + var arg$0=param[1]; + return {"kind":"Non","payload":arg$0}} + function paiement_logement_distinct_pro$0(paiement_logement_distinct_pro) + {var cons=caml_string_of_jsstring(paiement_logement_distinct_pro.kind); + if(caml_string_notequal(cons,cst_Non$3)) + {if(caml_string_notequal(cons,cst_OuiAvecLoyerOuCharges$0)) + {var _abZ_=caml_call2(Stdlib_Printf[4],_Wk_,cons); + return caml_call1(Stdlib[2],_abZ_)} + var + _ab0_= + caml_call1 + (Runtime_ocaml_Runtime[42],paiement_logement_distinct_pro.payload); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_ab0_)]} + return _Wl_} + function versement_a_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Bailleur","payload":arg}; + case 1: + var arg$0=param[1];return {"kind":"Beneficiaire","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"EtablissementHabilite","payload":arg$1}}} + function versement_a_of_jsoo(versement_a) + {var cons=caml_string_of_jsstring(versement_a.kind); + if(caml_string_notequal(cons,cst_Bailleur$0)) + {if(caml_string_notequal(cons,cst_Beneficiaire)) + {if(caml_string_notequal(cons,cst_EtablissementHabilite)) + {var _abY_=caml_call2(Stdlib_Printf[4],_Wm_,cons); + return caml_call1(Stdlib[2],_abY_)} + return _Wn_} + return _Wo_} + return _Wp_} + function depense_logement_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1],t110=caml_call1(Runtime_ocaml_Runtime[35],arg); + return {"kind":"TotalAnnuelEcheances","payload":t110}; + case 1: + var arg$0=param[1],t112=caml_call1(Runtime_ocaml_Runtime[35],arg$0); + return {"kind":"Mensualite","payload":t112}; + default: + var arg$1=param[1],t114=caml_call1(Runtime_ocaml_Runtime[35],arg$1); + return {"kind":"Loyer","payload":t114}}} + function depense_logement_of_jsoo(depense_logement) + {var cons=caml_string_of_jsstring(depense_logement.kind); + if(caml_string_notequal(cons,cst_Loyer$0)) + {if(caml_string_notequal(cons,cst_Mensualite)) + {if(caml_string_notequal(cons,cst_TotalAnnuelEcheances)) + {var _abU_=caml_call2(Stdlib_Printf[4],_Wq_,cons); + return caml_call1(Stdlib[2],_abU_)} + var + _abV_= + caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_abV_)]} + var + _abW_= + caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); + return [1,caml_call1(Runtime_ocaml_Runtime[33],_abW_)]} + var + _abX_= + caml_call1(Runtime_ocaml_Runtime[42],depense_logement.payload); + return [2,caml_call1(Runtime_ocaml_Runtime[33],_abX_)]} + function mode_occupation_impaye_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"ImpayeLoyer","payload":arg}} + var arg$0=param[1]; + return {"kind":"ImpayePret","payload":arg$0}} + function mode_occupation_impaye_of_jsoo(mode_occupation_impaye) + {var cons=caml_string_of_jsstring(mode_occupation_impaye.kind); + if(caml_string_notequal(cons,cst_ImpayeLoyer)) + {if(caml_string_notequal(cons,cst_ImpayePret)) + {var _abT_=caml_call2(Stdlib_Printf[4],_Wr_,cons); + return caml_call1(Stdlib[2],_abT_)} + return _Ws_} + return _Wt_} + function type_eligibilite_allocation_lo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"PasEligible","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"AllocationLogementFamiliale","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"AllocationLogementSociale","payload":arg$1}}} + function type_eligibilite_allocation_lo$0(type_eligibilite_allocation_lo) + {var cons=caml_string_of_jsstring(type_eligibilite_allocation_lo.kind); + if(caml_string_notequal(cons,cst_AllocationLogementFamilial$1)) + {if(caml_string_notequal(cons,cst_AllocationLogementSociale$1)) + {if(caml_string_notequal(cons,cst_PasEligible)) + {var _abS_=caml_call2(Stdlib_Printf[4],_Wu_,cons); + return caml_call1(Stdlib[2],_abS_)} + return _Wv_} + return _Ww_} + return _Wx_} + function type_aides_personnelle_logemen(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"AidePersonnaliseeLogement","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"AllocationLogementFamiliale","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"AllocationLogementSociale","payload":arg$1}}} + function type_aides_personnelle_logemen$0(type_aides_personnelle_logemen) + {var cons=caml_string_of_jsstring(type_aides_personnelle_logemen.kind); + if(caml_string_notequal(cons,cst_AidePersonnaliseeLogement)) + {if(caml_string_notequal(cons,cst_AllocationLogementFamilial$2)) + {if(caml_string_notequal(cons,cst_AllocationLogementSociale$2)) + {var _abR_=caml_call2(Stdlib_Printf[4],_Wy_,cons); + return caml_call1(Stdlib[2],_abR_)} + return _Wz_} + return _WA_} + return _WB_} + function situation_familiale_to_jsoo(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Celibataire","payload":arg}; + case 1: + var arg$0=param[1],t141=caml_call1(Runtime_jsoo_Runtime[5],arg$0); + return {"kind":"Maries","payload":t141}; + case 2:var arg$1=param[1];return {"kind":"Pacses","payload":arg$1}; + case 3:var arg$2=param[1];return {"kind":"Concubins","payload":arg$2}; + case 4: + var arg$3=param[1]; + return {"kind":"CelibataireSepareDeFait","payload":arg$3}; + default: + var arg$4=param[1]; + return {"kind":"ConcubinageDontSepareDeFait","payload":arg$4}}} + function situation_familiale_of_jsoo(situation_familiale) + {var cons=caml_string_of_jsstring(situation_familiale.kind); + if(caml_string_notequal(cons,cst_Celibataire)) + {if(caml_string_notequal(cons,cst_CelibataireSepareDeFait)) + {if(caml_string_notequal(cons,cst_ConcubinageDontSepareDeFai)) + {if(caml_string_notequal(cons,cst_Concubins$0)) + {if(caml_string_notequal(cons,cst_Maries)) + {if(caml_string_notequal(cons,cst_Pacses)) + {var _abQ_=caml_call2(Stdlib_Printf[4],_WC_,cons); + return caml_call1(Stdlib[2],_abQ_)} + return _WD_} + return [1, + caml_call1 + (Runtime_jsoo_Runtime[4],situation_familiale.payload)]} + return _WE_} + return _WF_} + return _WG_} + return _WH_} + function prise_en_charge_to_jsoo$0(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"EffectiveEtPermanente","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"ResidenceAlterneeAllocataireUnique","payload":arg$0}; + default: + var arg$1=param[1]; + return {"kind":"ResidenceAlterneeAllocationsPartagee", + "payload":arg$1}}} + function prise_en_charge_of_jsoo$0(prise_en_charge) + {var cons=caml_string_of_jsstring(prise_en_charge.kind); + if(caml_string_notequal(cons,cst_EffectiveEtPermanente$3)) + {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatai)) + {if(caml_string_notequal(cons,cst_ResidenceAlterneeAllocatio)) + {var _abP_=caml_call2(Stdlib_Printf[4],_WI_,cons); + return caml_call1(Stdlib[2],_abP_)} + return _WJ_} + return _WK_} + return _WL_} + function type_logement_foyer_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"LogementPersonnesAgeesOuHandicapees","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"ResidenceSociale","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind": + "FoyerJeunesTrvailleursOuMigrantsConventionneL353_2Avant1995", + "payload":arg$1}; + default:var arg$2=param[1];return {"kind":"Autre","payload":arg$2}}} + function type_logement_foyer_of_jsoo(type_logement_foyer) + {var cons=caml_string_of_jsstring(type_logement_foyer.kind); + if(caml_string_notequal(cons,cst_Autre$4)) + {if(caml_string_notequal(cons,cst_FoyerJeunesTrvailleursOuMi$0)) + {if(caml_string_notequal(cons,cst_LogementPersonnesAgeesOuHa)) + {if(caml_string_notequal(cons,cst_ResidenceSociale)) + {var _abO_=caml_call2(Stdlib_Printf[4],_WM_,cons); + return caml_call1(Stdlib[2],_abO_)} + return _WN_} + return _WO_} + return _WP_} + return _WQ_} + function categorie_equivalence_loyer_al(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"EtudiantLogeEnChambreCROUS","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"EtudiantLogeEnChambreCROUSRehabilitee", + "payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"PersonnesAgeesSelon3DeD842_16","payload":arg$1}; + default: + var arg$2=param[1];return {"kind":"AutresPersonnes","payload":arg$2}}} + function categorie_equivalence_loyer_al$0(categorie_equivalence_loyer_al) + {var cons=caml_string_of_jsstring(categorie_equivalence_loyer_al.kind); + if(caml_string_notequal(cons,cst_AutresPersonnes$0)) + {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambreCROUS)) + {if(caml_string_notequal(cons,cst_EtudiantLogeEnChambreCROUS$0)) + {if(caml_string_notequal(cons,cst_PersonnesAgeesSelon3DeD842)) + {var _abN_=caml_call2(Stdlib_Printf[4],_WR_,cons); + return caml_call1(Stdlib[2],_abN_)} + return _WS_} + return _WT_} + return _WU_} + return _WV_} + function situation_familiale_calcul_a_p(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"PersonneSeule","payload":arg}} + var arg$0=param[1]; + return {"kind":"Couple","payload":arg$0}} + function situation_familiale_calcul_a_p$0(situation_familiale_calcul_a_p) + {var cons=caml_string_of_jsstring(situation_familiale_calcul_a_p.kind); + if(caml_string_notequal(cons,cst_Couple$0)) + {if(caml_string_notequal(cons,cst_PersonneSeule$0)) + {var _abM_=caml_call2(Stdlib_Printf[4],_WW_,cons); + return caml_call1(Stdlib[2],_abM_)} + return _WX_} + return _WY_} + function collectivite_to_jsoo$0(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Guadeloupe","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Guyane","payload":arg$0}; + case 2: + var arg$1=param[1];return {"kind":"Martinique","payload":arg$1}; + case 3:var arg$2=param[1];return {"kind":"LaReunion","payload":arg$2}; + case 4: + var arg$3=param[1];return {"kind":"SaintBarthelemy","payload":arg$3}; + case 5: + var arg$4=param[1];return {"kind":"SaintMartin","payload":arg$4}; + case 6:var arg$5=param[1];return {"kind":"Metropole","payload":arg$5}; + case 7: + var arg$6=param[1]; + return {"kind":"SaintPierreEtMiquelon","payload":arg$6}; + default:var arg$7=param[1];return {"kind":"Mayotte","payload":arg$7}}} + function collectivite_of_jsoo$0(collectivite) + {var cons=caml_string_of_jsstring(collectivite.kind); + if(caml_string_notequal(cons,cst_Guadeloupe$2)) + {if(caml_string_notequal(cons,cst_Guyane$2)) + {if(caml_string_notequal(cons,cst_LaReunion$0)) + {if(caml_string_notequal(cons,cst_Martinique$2)) + {if(caml_string_notequal(cons,cst_Mayotte$2)) + {if(caml_string_notequal(cons,cst_Metropole$0)) + {if(caml_string_notequal(cons,cst_SaintBarthelemy$0)) + {if(caml_string_notequal(cons,cst_SaintMartin$2)) + {if(caml_string_notequal(cons,cst_SaintPierreEtMiquelon$2)) + {var _abL_=caml_call2(Stdlib_Printf[4],_WZ_,cons); + return caml_call1(Stdlib[2],_abL_)} + return _W0_} + return _W1_} + return _W2_} + return _W3_} + return _W4_} + return _W5_} + return _W6_} + return _W7_} + return _W8_} + function prise_en_charge_enfant_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"GardeAlterneePartageAllocations","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"GardeAlterneeAllocataireUnique","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"EffectiveEtPermanente","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"ServicesSociauxAllocationVerseeALaFamille", + "payload":arg$2}; + default: + var arg$3=param[1]; + return {"kind":"ServicesSociauxAllocationVerseeAuxServicesSociaux", + "payload":arg$3}}} + function prise_en_charge_enfant_of_jsoo(prise_en_charge_enfant) + {var cons=caml_string_of_jsstring(prise_en_charge_enfant.kind); + if(caml_string_notequal(cons,cst_EffectiveEtPermanente$4)) + {if(caml_string_notequal(cons,cst_GardeAlterneeAllocataireUn$0)) + {if(caml_string_notequal(cons,cst_GardeAlterneePartageAlloca$0)) + {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$5)) + {if(caml_string_notequal(cons,cst_ServicesSociauxAllocationV$6)) + {var _abK_=caml_call2(Stdlib_Printf[4],_W9_,cons); + return caml_call1(Stdlib[2],_abK_)} + return _W__} + return _W$_} + return _Xa_} + return _Xb_} + return _Xc_} + function situation_obligation_scolaire_$1(param) + {switch(param[0]) + {case 0:var arg=param[1];return {"kind":"Avant","payload":arg}; + case 1:var arg$0=param[1];return {"kind":"Pendant","payload":arg$0}; + default:var arg$1=param[1];return {"kind":"Apres","payload":arg$1}}} + function situation_obligation_scolaire_$2(situation_obligation_scolaire) + {var cons=caml_string_of_jsstring(situation_obligation_scolaire.kind); + if(caml_string_notequal(cons,cst_Apres$0)) + {if(caml_string_notequal(cons,cst_Avant$2)) + {if(caml_string_notequal(cons,cst_Pendant$2)) + {var _abJ_=caml_call2(Stdlib_Printf[4],_Xd_,cons); + return caml_call1(Stdlib[2],_abJ_)} + return _Xe_} + return _Xf_} + return _Xg_} + function element_prestations_familiales$1(param) + {switch(param[0]) + {case 0: + var arg=param[1]; + return {"kind":"PrestationAccueilJeuneEnfant","payload":arg}; + case 1: + var arg$0=param[1]; + return {"kind":"AllocationsFamiliales","payload":arg$0}; + case 2: + var arg$1=param[1]; + return {"kind":"ComplementFamilial","payload":arg$1}; + case 3: + var arg$2=param[1]; + return {"kind":"AllocationLogement","payload":arg$2}; + case 4: + var arg$3=param[1]; + return {"kind":"AllocationEducationEnfantHandicape","payload":arg$3}; + case 5: + var arg$4=param[1]; + return {"kind":"AllocationSoutienFamilial","payload":arg$4}; + case 6: + var arg$5=param[1]; + return {"kind":"AllocationRentreeScolaire","payload":arg$5}; + default: + var arg$6=param[1]; + return {"kind":"AllocationJournalierePresenceParentale", + "payload":arg$6}}} + function element_prestations_familiales$2(element_prestations_familiales) + {var cons=caml_string_of_jsstring(element_prestations_familiales.kind); + if(caml_string_notequal(cons,cst_AllocationEducationEnfantH$0)) + {if(caml_string_notequal(cons,cst_AllocationJournalierePrese$0)) + {if(caml_string_notequal(cons,cst_AllocationLogement$2)) + {if(caml_string_notequal(cons,cst_AllocationRentreeScolaire$0)) + {if(caml_string_notequal(cons,cst_AllocationSoutienFamilial$4)) + {if(caml_string_notequal(cons,cst_AllocationsFamiliales$4)) + {if(caml_string_notequal(cons,cst_ComplementFamilial$1)) + {if + (caml_string_notequal(cons,cst_PrestationAccueilJeuneEnfa$2)) + {var _abI_=caml_call2(Stdlib_Printf[4],_Xh_,cons); + return caml_call1(Stdlib[2],_abI_)} + return _Xi_} + return _Xj_} + return _Xk_} + return _Xl_} + return _Xm_} + return _Xn_} + return _Xo_} + return _Xp_} + function convention_bailleur_social_to_(convention_bailleur_social) + {var + t237= + caml_call1(Runtime_ocaml_Runtime[35],convention_bailleur_social[2]), + t236=! ! convention_bailleur_social[1]; + return {"conventionneLivreIIITitreVChapIII":t236, + "reductionLoyerSolidaritePercue":t237}} + function convention_bailleur_social_of_(convention_bailleur_social) + {var + _abG_= + caml_call1 + (Runtime_ocaml_Runtime[42], + convention_bailleur_social.reductionLoyerSolidaritePercue), + _abH_=caml_call1(Runtime_ocaml_Runtime[33],_abG_); + return [0, + convention_bailleur_social.conventionneLivreIIITitreVChapIII | 0, + _abH_]} + function convention_a_n_h_a_to_jsoo(convention_a_n_h_a) + {var t240=! ! convention_a_n_h_a[1]; + return {"conventionneLivreIIITitreIIChapISec3":t240}} + function convention_a_n_h_a_of_jsoo(convention_a_n_h_a) + {return [0,convention_a_n_h_a.conventionneLivreIIITitreIIChapISec3 | 0]} + function personne_sous_location_to_jsoo(personne_sous_location) + {var + t243=! ! personne_sous_location[2], + t242=caml_call1(Runtime_jsoo_Runtime[5],personne_sous_location[1]); + return {"dateNaissancePersonneSousLocation":t242, + "conformeArticleL4421":t243}} + function personne_sous_location_of_jsoo(personne_sous_location) + {var _abF_=personne_sous_location.conformeArticleL4421 | 0; + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + personne_sous_location.dateNaissancePersonneSousLocation), + _abF_]} + function patrimoine_to_jsoo(patrimoine) + {var + t247=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[2]), + t246=caml_call1(Runtime_ocaml_Runtime[35],patrimoine[1]); + return {"produisantRevenuPeriodeR82233R8224":t246, + "neProduisantPasRevenuPeriodeR82233R8224":t247}} + function patrimoine_of_jsoo(patrimoine) + {var + _abC_= + caml_call1 + (Runtime_ocaml_Runtime[42], + patrimoine.neProduisantPasRevenuPeriodeR82233R8224), + _abD_=caml_call1(Runtime_ocaml_Runtime[33],_abC_), + _abE_= + caml_call1 + (Runtime_ocaml_Runtime[42], + patrimoine.produisantRevenuPeriodeR82233R8224); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_abE_),_abD_]} + function conditions_etrangers_to_jsoo(conditions_etrangers) + {var t250=! ! conditions_etrangers[1]; + return {"satisfaitConditionsL5122CodeSecuriteSociale":t250}} + function conditions_etrangers_of_jsoo(conditions_etrangers) + {return [0, + conditions_etrangers.satisfaitConditionsL5122CodeSecuriteSociale + | + 0]} + function personne_vivant_habituellement(personne_vivant_habituellement) + {var + t253= + caml_call1 + (Runtime_ocaml_Runtime[35],personne_vivant_habituellement[2]), + t252=! ! personne_vivant_habituellement[1]; + return {"dureeResidenceDurantPeriodeR82231SuperieureA6Mois":t252, + "ressources":t253}} + function personne_vivant_habituellement$0(personne_vivant_habituellement) + {var + _abA_= + caml_call1 + (Runtime_ocaml_Runtime[42],personne_vivant_habituellement.ressources), + _abB_=caml_call1(Runtime_ocaml_Runtime[33],_abA_); + return [0, + personne_vivant_habituellement.dureeResidenceDurantPeriodeR82231SuperieureA6Mois + | + 0, + _abB_]} + function eligibilite_aide_personnalisee$0(eligibilite_aide_personnalisee) + {var _aby_=eligibilite_aide_personnalisee[4]; + function _abz_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} + var + t259=caml_js_from_array(caml_call2(Stdlib_Array[15],_abz_,_aby_)), + t258= + caml_call1 + (Runtime_ocaml_Runtime[48],eligibilite_aide_personnalisee[3]), + t257=! ! eligibilite_aide_personnalisee[2], + t256= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[1]); + return {"dateCourante":t256, + "eligibilite":t257, + "nombrePersonnesAChargePrisesEnCompte":t258, + "coefficentsEnfantsGardeAlterneePrisEnCompte":t259}} + function eligibilite_aide_personnalisee$1(eligibilite_aide_personnalisee) + {var + _abt_= + caml_js_to_array + (eligibilite_aide_personnalisee.coefficentsEnfantsGardeAlterneePrisEnCompte); + function _abu_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} + var + _abv_=caml_call1(caml_call1(Stdlib_Array[15],_abu_),_abt_), + _abw_= + caml_call1 + (Runtime_ocaml_Runtime[49], + eligibilite_aide_personnalisee.nombrePersonnesAChargePrisesEnCompte), + _abx_=eligibilite_aide_personnalisee.eligibilite | 0; + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_aide_personnalisee.dateCourante), + _abx_, + _abw_, + _abv_]} + function eligibilite_prime_de_demenagem$0(eligibilite_prime_de_demenagem) + {var + t264= + caml_call1 + (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[1]); + return {"montantPrimeDemenagement":t264}} + function eligibilite_prime_de_demenagem$1(eligibilite_prime_de_demenagem) + {var + _abs_= + caml_call1 + (Runtime_ocaml_Runtime[42], + eligibilite_prime_de_demenagem.montantPrimeDemenagement); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_abs_)]} + function ressources_aides_personnelle_l$0(ressources_aides_personnelle_l) + {var + t266= + caml_call1 + (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]); + return {"ressourcesPrisesEnCompte":t266}} + function ressources_aides_personnelle_l$1(ressources_aides_personnelle_l) + {var + _abr_= + caml_call1 + (Runtime_ocaml_Runtime[42], + ressources_aides_personnelle_l.ressourcesPrisesEnCompte); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_abr_)]} + function contributions_sociales_aides_p$0(contributions_sociales_aides_p) + {function t268(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _abo_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _abp_=caml_call1(Runtime_ocaml_Runtime[33],_abo_), + _abq_=caml_call1(contributions_sociales_aides_p[1],_abp_); + return caml_call1(Runtime_ocaml_Runtime[35],_abq_)})} + return {"montant":caml_js_wrap_meth_callback(t268)}} + function contributions_sociales_aides_p$1(contributions_sociales_aides_p) + {return [0,caml_call1(Stdlib[2],cst_The_function_montant_trans)]} + function calcul_aide_personnalisee_loge$3(calcul_aide_personnalisee_loge) + {function t275(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _abl_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _abm_=caml_call1(Runtime_ocaml_Runtime[33],_abl_), + _abn_=caml_call1(calcul_aide_personnalisee_loge[7],_abm_); + return caml_call1(Runtime_ocaml_Runtime[35],_abn_)})} + var + t274= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]), + t273= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]), + t272= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[4]), + t271= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), + t270= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t269= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"montantForfaitaireChargesD82316":t269, + "plafondLoyerD823162":t270, + "participationMinimale":t271, + "tauxCompositionFamiliale":t272, + "participationPersonnelle":t273, + "aideFinaleFormule":t274, + "traitementAideFinale":caml_js_wrap_meth_callback(t275)}} + function calcul_aide_personnalisee_loge$4(calcul_aide_personnalisee_loge) + {var + _aba_=caml_call1(Stdlib[2],cst_The_function_traitement_ai), + _abb_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.aideFinaleFormule), + _abc_=caml_call1(Runtime_ocaml_Runtime[33],_abb_), + _abd_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.participationPersonnelle), + _abe_=caml_call1(Runtime_ocaml_Runtime[33],_abd_), + _abf_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.tauxCompositionFamiliale), + _abg_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.participationMinimale), + _abh_=caml_call1(Runtime_ocaml_Runtime[33],_abg_), + _abi_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.plafondLoyerD823162), + _abj_=caml_call1(Runtime_ocaml_Runtime[33],_abi_), + _abk_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.montantForfaitaireChargesD82316); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_abk_), + _abj_, + _abh_, + _abf_, + _abe_, + _abc_, + _aba_]} + function calcul_equivalence_loyer_minim$0(calcul_equivalence_loyer_minim) + {var + t282= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]); + return {"montant":t282}} + function calcul_equivalence_loyer_minim$1(calcul_equivalence_loyer_minim) + {var + _aa$_= + caml_call1 + (Runtime_ocaml_Runtime[42],calcul_equivalence_loyer_minim.montant); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aa$_)]} + function calcul_nombre_part_logement_fo$0(calcul_nombre_part_logement_fo) + {var + t284= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_nombre_part_logement_fo[1]); + return {"nNombrePartsD83225":t284}} + function calcul_nombre_part_logement_fo$1(calcul_nombre_part_logement_fo) + {return [0, + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_nombre_part_logement_fo.nNombrePartsD83225)]} + function calcul_aide_personnalisee_loge$5(calcul_aide_personnalisee_loge) + {function t294(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _aa8_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _aa9_=caml_call1(Runtime_ocaml_Runtime[33],_aa8_), + _aa__=caml_call1(calcul_aide_personnalisee_loge[9],_aa9_); + return caml_call1(Runtime_ocaml_Runtime[35],_aa__)})} + var + t293= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[8]), + t292= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[7]), + t291= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[6]), + t290= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[5]), + t289= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), + t288= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]), + t287= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t286= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"coefficientMultiplicateurD83225":t286, + "coefficientRD83225":t287, + "nNombrePartsD83225":t288, + "equivalenceLoyerEligible":t289, + "plafondEquivalenceLoyerEligible":t290, + "equivalenceLoyerMinimale":t291, + "coefficientPriseEnChargeD83225":t292, + "aideFinaleFormule":t293, + "traitementAideFinale":caml_js_wrap_meth_callback(t294)}} + function calcul_aide_personnalisee_loge$6(calcul_aide_personnalisee_loge) + {var + _aaU_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$0), + _aaV_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.aideFinaleFormule), + _aaW_=caml_call1(Runtime_ocaml_Runtime[33],_aaV_), + _aaX_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83225), + _aaY_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.equivalenceLoyerMinimale), + _aaZ_=caml_call1(Runtime_ocaml_Runtime[33],_aaY_), + _aa0_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.plafondEquivalenceLoyerEligible), + _aa1_=caml_call1(Runtime_ocaml_Runtime[33],_aa0_), + _aa2_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.equivalenceLoyerEligible), + _aa3_=caml_call1(Runtime_ocaml_Runtime[33],_aa2_), + _aa4_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.nNombrePartsD83225), + _aa5_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.coefficientRD83225), + _aa6_=caml_call1(Runtime_ocaml_Runtime[33],_aa5_), + _aa7_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.coefficientMultiplicateurD83225); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_aa7_), + _aa6_, + _aa4_, + _aa3_, + _aa1_, + _aaZ_, + _aaX_, + _aaW_, + _aaU_]} + function calcul_nombre_parts_accession_$0(calcul_nombre_parts_accession_) + {var + t303= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_nombre_parts_accession_[1]); + return {"nNombrePartsD83211":t303}} + function calcul_nombre_parts_accession_$1(calcul_nombre_parts_accession_) + {return [0, + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_nombre_parts_accession_.nNombrePartsD83211)]} + function calcul_aide_personnalisee_loge$7(calcul_aide_personnalisee_loge) + {function t309(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _aaR_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _aaS_=caml_call1(Runtime_ocaml_Runtime[33],_aaR_), + _aaT_=caml_call1(calcul_aide_personnalisee_loge[5],_aaS_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaT_)})} + var + t308= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[4]), + t307= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_aide_personnalisee_loge[3]), + t306= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t305= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"mensualiteEligible":t305, + "mensualiteMinimale":t306, + "coefficientPriseEnChargeD83210":t307, + "aideFinaleFormule":t308, + "traitementAideFinale":caml_js_wrap_meth_callback(t309)}} + function calcul_aide_personnalisee_loge$8(calcul_aide_personnalisee_loge) + {var + _aaK_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$1), + _aaL_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.aideFinaleFormule), + _aaM_=caml_call1(Runtime_ocaml_Runtime[33],_aaL_), + _aaN_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.coefficientPriseEnChargeD83210), + _aaO_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.mensualiteMinimale), + _aaP_=caml_call1(Runtime_ocaml_Runtime[33],_aaO_), + _aaQ_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.mensualiteEligible); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_aaQ_), + _aaP_, + _aaN_, + _aaM_, + _aaK_]} + function traitement_formule_aide_finale(traitement_formule_aide_finale) + {function t315(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _aaH_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _aaI_=caml_call1(Runtime_ocaml_Runtime[33],_aaH_), + _aaJ_=caml_call1(traitement_formule_aide_finale[2],_aaI_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaJ_)})} + var + t314= + caml_call1 + (Runtime_ocaml_Runtime[35],traitement_formule_aide_finale[1]); + return {"aideFinaleFormule":t314, + "traitementAideFinale":caml_js_wrap_meth_callback(t315)}} + function traitement_formule_aide_finale$0(traitement_formule_aide_finale) + {var + _aaF_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$2), + _aaG_= + caml_call1 + (Runtime_ocaml_Runtime[42], + traitement_formule_aide_finale.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaG_),_aaF_]} + function calcul_aide_personnalisee_loge$9(calcul_aide_personnalisee_loge) + {function t318(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _aaC_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _aaD_=caml_call1(Runtime_ocaml_Runtime[33],_aaC_), + _aaE_=caml_call1(calcul_aide_personnalisee_loge[2],_aaD_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaE_)})} + var + t317= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"aideFinaleFormule":t317, + "traitementAideFinale":caml_js_wrap_meth_callback(t318)}} + function calcul_aide_personnalisee_loge$10(calcul_aide_personnalisee_loge) + {var + _aaA_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$3), + _aaB_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaB_),_aaA_]} + function infos_changement_logement_d842(infos_changement_logement_d842) + {var + t321= + caml_call1 + (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[2]), + t320= + caml_call1 + (Runtime_ocaml_Runtime[35],infos_changement_logement_d842[1]); + return {"ancienLoyerPrincipal":t320,"ancienneAllocationLogement":t321}} + function infos_changement_logement_d842$0(infos_changement_logement_d842) + {var + _aax_= + caml_call1 + (Runtime_ocaml_Runtime[42], + infos_changement_logement_d842.ancienneAllocationLogement), + _aay_=caml_call1(Runtime_ocaml_Runtime[33],_aax_), + _aaz_= + caml_call1 + (Runtime_ocaml_Runtime[42], + infos_changement_logement_d842.ancienLoyerPrincipal); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aaz_),_aay_]} + function calcul_allocation_logement_loc$0(calcul_allocation_logement_loc) + {function t325(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _aau_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _aav_=caml_call1(Runtime_ocaml_Runtime[33],_aau_), + _aaw_=caml_call1(calcul_allocation_logement_loc[2],_aav_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaw_)})} + var + t324= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]); + return {"aideFinaleFormule":t324, + "traitementAideFinale":caml_js_wrap_meth_callback(t325)}} + function calcul_allocation_logement_loc$1(calcul_allocation_logement_loc) + {var + _aas_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$4), + _aat_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_loc.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aat_),_aas_]} + function calcul_allocation_logement_acc$0(calcul_allocation_logement_acc) + {function t328(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _aap_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _aaq_=caml_call1(Runtime_ocaml_Runtime[33],_aap_), + _aar_=caml_call1(calcul_allocation_logement_acc[2],_aaq_); + return caml_call1(Runtime_ocaml_Runtime[35],_aar_)})} + var + t327= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]); + return {"aideFinaleFormule":t327, + "traitementAideFinale":caml_js_wrap_meth_callback(t328)}} + function calcul_allocation_logement_acc$1(calcul_allocation_logement_acc) + {var + _aan_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$5), + _aao_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_acc.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_aao_),_aan_]} + function calcul_allocation_logement_foy$0(calcul_allocation_logement_foy) + {function t335(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _aak_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _aal_=caml_call1(Runtime_ocaml_Runtime[33],_aak_), + _aam_=caml_call1(calcul_allocation_logement_foy[6],_aal_); + return caml_call1(Runtime_ocaml_Runtime[35],_aam_)})} + var + t334= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[5]), + t333= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[4]), + t332= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]), + t331= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[2]), + t330= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_allocation_logement_foy[1]); + return {"coefficientPriseEnCharge":t330, + "equivalenceLoyer":t331, + "montantForfaitaireCharges":t332, + "loyerMinimal":t333, + "aideFinaleFormule":t334, + "traitementAideFinale":caml_js_wrap_meth_callback(t335)}} + function calcul_allocation_logement_foy$1(calcul_allocation_logement_foy) + {var + _aab_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$6), + _aac_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.aideFinaleFormule), + _aad_=caml_call1(Runtime_ocaml_Runtime[33],_aac_), + _aae_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.loyerMinimal), + _aaf_=caml_call1(Runtime_ocaml_Runtime[33],_aae_), + _aag_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.montantForfaitaireCharges), + _aah_=caml_call1(Runtime_ocaml_Runtime[33],_aag_), + _aai_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.equivalenceLoyer), + _aaj_=caml_call1(Runtime_ocaml_Runtime[33],_aai_); + return [0, + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.coefficientPriseEnCharge), + _aaj_, + _aah_, + _aaf_, + _aad_, + _aab_]} + function calcul_allocation_logement_to_(calcul_allocation_logement) + {function t342(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _$__=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _$$_=caml_call1(Runtime_ocaml_Runtime[33],_$__), + _aaa_=caml_call1(calcul_allocation_logement[2],_$$_); + return caml_call1(Runtime_ocaml_Runtime[35],_aaa_)})} + var + t341= + caml_call1(Runtime_ocaml_Runtime[35],calcul_allocation_logement[1]); + return {"aideFinaleFormule":t341, + "traitementAideFinale":caml_js_wrap_meth_callback(t342)}} + function calcul_allocation_logement_of_(calcul_allocation_logement) + {var + _$8_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$7), + _$9_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement.aideFinaleFormule); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_$9_),_$8_]} + function ouverture_droits_retraite_to_j(ouverture_droits_retraite) + {var + t344= + caml_call1(Runtime_jsoo_Runtime[3],ouverture_droits_retraite[1]); + return {"ageOuvertureDroit":t344}} + function ouverture_droits_retraite_of_j(ouverture_droits_retraite) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[2], + ouverture_droits_retraite.ageOuvertureDroit)]} + function impaye_depense_logement_to_jso(impaye_depense_logement) + {var + t346= + caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement[1]); + return {"montantImpaye":t346}} + function impaye_depense_logement_of_jso(impaye_depense_logement) + {var + _$7_= + caml_call1 + (Runtime_ocaml_Runtime[42],impaye_depense_logement.montantImpaye); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_$7_)]} + function calculette_aides_au_logement_t(calculette_aides_au_logement) + {var _$2_=calculette_aides_au_logement[4]; + function _$3_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} + var t351=caml_js_from_array(caml_call2(Stdlib_Array[15],_$3_,_$2_)); + function t350(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _$4_=caml_call1(Runtime_ocaml_Runtime[42],function_input0), + _$5_=caml_call1(Runtime_ocaml_Runtime[33],_$4_), + _$6_=caml_call1(calculette_aides_au_logement[3],_$5_); + return caml_call1(Runtime_ocaml_Runtime[35],_$6_)})} + var + t349= + caml_call1(Runtime_ocaml_Runtime[35],calculette_aides_au_logement[2]), + t348=! ! calculette_aides_au_logement[1]; + return {"eligibilite":t348, + "aideFinaleFormule":t349, + "traitementAideFinale":caml_js_wrap_meth_callback(t350), + "coefficentsEnfantsGardeAlterneePrisEnCompte":t351}} + function calculette_aides_au_logement_o(calculette_aides_au_logement) + {var + _$W_= + caml_js_to_array + (calculette_aides_au_logement.coefficentsEnfantsGardeAlterneePrisEnCompte); + function _$X_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} + var + _$Y_=caml_call1(caml_call1(Stdlib_Array[15],_$X_),_$W_), + _$Z_=caml_call1(Stdlib[2],cst_The_function_traitement_ai$8), + _$0_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calculette_aides_au_logement.aideFinaleFormule), + _$1_=caml_call1(Runtime_ocaml_Runtime[33],_$0_); + return [0,calculette_aides_au_logement.eligibilite | 0,_$1_,_$Z_,_$Y_]} + function calculette_aides_au_logement_g$0(calculette_aides_au_logement_g) + {var + t356= + caml_call1 + (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[2]), + t355=! ! calculette_aides_au_logement_g[1]; + return {"eligibilite":t355,"aideFinale":t356}} + function calculette_aides_au_logement_g$1(calculette_aides_au_logement_g) + {var + _$U_= + caml_call1 + (Runtime_ocaml_Runtime[42],calculette_aides_au_logement_g.aideFinale), + _$V_=caml_call1(Runtime_ocaml_Runtime[33],_$U_); + return [0,calculette_aides_au_logement_g.eligibilite | 0,_$V_]} + function base_mensuelle_allocations_fam$6(base_mensuelle_allocations_fam) + {var + t359= + caml_call1 + (Runtime_ocaml_Runtime[35],base_mensuelle_allocations_fam[1]); + return {"montant":t359}} + function base_mensuelle_allocations_fam$7(base_mensuelle_allocations_fam) + {var + _$T_= + caml_call1 + (Runtime_ocaml_Runtime[42],base_mensuelle_allocations_fam.montant); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_$T_)]} + function smic_to_jsoo$0(smic) + {var t361=caml_call1(Runtime_ocaml_Runtime[35],smic[1]); + return {"brutHoraire":t361}} + function smic_of_jsoo$0(smic) + {var _$S_=caml_call1(Runtime_ocaml_Runtime[42],smic.brutHoraire); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_$S_)]} + function pret_to_jsoo(pret) + {var + t365=titulaire_pret_to_jsoo(pret[3]), + t364=caml_call1(Runtime_jsoo_Runtime[5],pret[2]), + t363=type_pret_to_jsoo(pret[1]); + return {"typePret":t363,"dateSignature":t364,"titulairePret":t365}} + function pret_of_jsoo(pret) + {var + _$Q_=titulaire_pret_of_jsoo(pret.titulairePret), + _$R_=caml_call1(Runtime_jsoo_Runtime[4],pret.dateSignature); + return [0,type_pret_of_jsoo(pret.typePret),_$R_,_$Q_]} + function neuf_ou_ancien_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"Neuf","payload":arg}} + var arg$0=param[1],t372=ameliore_par_occupant_to_jsoo(arg$0); + return {"kind":"Ancien","payload":t372}} + function neuf_ou_ancien_of_jsoo(neuf_ou_ancien) + {var cons=caml_string_of_jsstring(neuf_ou_ancien.kind); + if(caml_string_notequal(cons,cst_Ancien$0)) + {if(caml_string_notequal(cons,cst_Neuf$0)) + {var _$P_=caml_call2(Stdlib_Printf[4],_Xq_,cons); + return caml_call1(Stdlib[2],_$P_)} + return _Xr_} + return [1,ameliore_par_occupant_of_jsoo(neuf_ou_ancien.payload)]} + function tranche_revenu_to_jsoo(tranche_revenu) + {var + t377=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu[3]), + t376=caml_call1(Runtime_ocaml_Runtime[35],tranche_revenu[2]), + t375=limite_tranche_to_jsoo(tranche_revenu[1]); + return {"haut":t375,"bas":t376,"taux":t377}} + function tranche_revenu_of_jsoo(tranche_revenu) + {var + _$M_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.taux), + _$N_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu.bas), + _$O_=caml_call1(Runtime_ocaml_Runtime[33],_$N_); + return [0,limite_tranche_of_jsoo(tranche_revenu.haut),_$O_,_$M_]} + function tranche_revenu_decimal_to_jsoo(tranche_revenu_decimal) + {var + t383=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[3]), + t382=caml_call1(Runtime_ocaml_Runtime[43],tranche_revenu_decimal[2]), + t381=limite_tranche_decimal_to_jsoo(tranche_revenu_decimal[1]); + return {"haut":t381,"bas":t382,"taux":t383}} + function tranche_revenu_decimal_of_jsoo(tranche_revenu_decimal) + {var + _$K_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.taux), + _$L_=caml_call1(Runtime_ocaml_Runtime[42],tranche_revenu_decimal.bas); + return [0, + limite_tranche_decimal_of_jsoo(tranche_revenu_decimal.haut), + _$L_, + _$K_]} + function autre_personne_a_charge_to_jso(autre_personne_a_charge) + {var + t393=! ! autre_personne_a_charge[7], + t392=! ! autre_personne_a_charge[6], + t391=! ! autre_personne_a_charge[5], + t390=parente_to_jsoo(autre_personne_a_charge[4]), + t389=! ! autre_personne_a_charge[3], + t388=caml_call1(Runtime_ocaml_Runtime[35],autre_personne_a_charge[2]), + t387=caml_call1(Runtime_jsoo_Runtime[5],autre_personne_a_charge[1]); + return {"dateNaissance":t387, + "ressources":t388, + "ascendantDescendantCollateralDeuxiemeTroisiemeDegre":t389, + "parente":t390, + "incapacite80PourcentOuRestrictionEmploi":t391, + "beneficiaireL16119L3518L6433Secu":t392, + "titulaireAllocationPersonneAgee":t393}} + function autre_personne_a_charge_of_jso(autre_personne_a_charge) + {var + _$D_=autre_personne_a_charge.titulaireAllocationPersonneAgee | 0, + _$E_=autre_personne_a_charge.beneficiaireL16119L3518L6433Secu | 0, + _$F_= + autre_personne_a_charge.incapacite80PourcentOuRestrictionEmploi + | + 0, + _$G_=parente_of_jsoo(autre_personne_a_charge.parente), + _$H_= + autre_personne_a_charge.ascendantDescendantCollateralDeuxiemeTroisiemeDegre + | + 0, + _$I_= + caml_call1 + (Runtime_ocaml_Runtime[42],autre_personne_a_charge.ressources), + _$J_=caml_call1(Runtime_ocaml_Runtime[33],_$I_); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4],autre_personne_a_charge.dateNaissance), + _$J_, + _$H_, + _$G_, + _$F_, + _$E_, + _$D_]} + function date_naissance_troisieme_ou_de(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"MoinsDeTroisEnfants","payload":arg}} + var arg$0=param[1],t404=date_de_naissance_ou_mois_de_g(arg$0); + return {"kind":"PlusDeTroisEnfants","payload":t404}} + function date_naissance_troisieme_ou_de$0(date_naissance_troisieme_ou_de) + {var cons=caml_string_of_jsstring(date_naissance_troisieme_ou_de.kind); + if(caml_string_notequal(cons,cst_MoinsDeTroisEnfants$0)) + {if(caml_string_notequal(cons,cst_PlusDeTroisEnfants$0)) + {var _$C_=caml_call2(Stdlib_Printf[4],_Xs_,cons); + return caml_call1(Stdlib[2],_$C_)} + return [1, + date_de_naissance_ou_mois_de_g$0 + (date_naissance_troisieme_ou_de.payload)]} + return _Xt_} + function eligibilite_allocation_logemen$0(eligibilite_allocation_logemen) + {var _$A_=eligibilite_allocation_logemen[3]; + function _$B_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} + var + t409=caml_js_from_array(caml_call2(Stdlib_Array[15],_$B_,_$A_)), + t408= + caml_call1 + (Runtime_ocaml_Runtime[48],eligibilite_allocation_logemen[2]), + t407=type_eligibilite_allocation_lo(eligibilite_allocation_logemen[1]); + return {"eligibilite":t407, + "nombrePersonnesAChargePrisesEnCompte":t408, + "coefficentsEnfantsGardeAlterneePrisEnCompte":t409}} + function eligibilite_allocation_logemen$1(eligibilite_allocation_logemen) + {var + _$w_= + caml_js_to_array + (eligibilite_allocation_logemen.coefficentsEnfantsGardeAlterneePrisEnCompte); + function _$x_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} + var + _$y_=caml_call1(caml_call1(Stdlib_Array[15],_$x_),_$w_), + _$z_= + caml_call1 + (Runtime_ocaml_Runtime[49], + eligibilite_allocation_logemen.nombrePersonnesAChargePrisesEnCompte); + return [0, + type_eligibilite_allocation_lo$0 + (eligibilite_allocation_logemen.eligibilite), + _$z_, + _$y_]} + function logement_foyer_to_jsoo(logement_foyer) + {var + t419=categorie_equivalence_loyer_al(logement_foyer[7]), + t418=caml_call1(Runtime_ocaml_Runtime[35],logement_foyer[6]), + t417=! ! logement_foyer[5], + t416=caml_call1(Runtime_jsoo_Runtime[5],logement_foyer[4]), + t415=! ! logement_foyer[3], + t414=! ! logement_foyer[2], + t413=type_logement_foyer_to_jsoo(logement_foyer[1]); + return {"typeUser":t413, + "remplitConditionsR83221":t414, + "conventionneLivreIIITitreVChapIII":t415, + "dateConventionnement":t416, + "construitApplicationLoi195712III":t417, + "redevance":t418, + "categorieEquivalenceLoyerD84216":t419}} + function logement_foyer_of_jsoo(logement_foyer) + {var + _$p_= + categorie_equivalence_loyer_al$0 + (logement_foyer.categorieEquivalenceLoyerD84216), + _$q_=caml_call1(Runtime_ocaml_Runtime[42],logement_foyer.redevance), + _$r_=caml_call1(Runtime_ocaml_Runtime[33],_$q_), + _$s_=logement_foyer.construitApplicationLoi195712III | 0, + _$t_= + caml_call1 + (Runtime_jsoo_Runtime[4],logement_foyer.dateConventionnement), + _$u_=logement_foyer.conventionneLivreIIITitreVChapIII | 0, + _$v_=logement_foyer.remplitConditionsR83221 | 0; + return [0, + type_logement_foyer_of_jsoo(logement_foyer.typeUser), + _$v_, + _$u_, + _$t_, + _$s_, + _$r_, + _$p_]} + function enfant_prestations_familiales_(enfant_prestations_familiales) + {var + t433=! ! enfant_prestations_familiales[7], + t432=! ! enfant_prestations_familiales[6], + t431=prise_en_charge_enfant_to_jsoo(enfant_prestations_familiales[5]), + t430= + caml_call1(Runtime_jsoo_Runtime[5],enfant_prestations_familiales[4]), + t429= + caml_call1(Runtime_ocaml_Runtime[35],enfant_prestations_familiales[3]), + t428=situation_obligation_scolaire_$1(enfant_prestations_familiales[2]), + t427= + caml_call1(Runtime_ocaml_Runtime[48],enfant_prestations_familiales[1]); + return {"identifiant":t427, + "obligationScolaire":t428, + "remunerationMensuelle":t429, + "dateDeNaissance":t430, + "priseEnCharge":t431, + "aDejaOuvertDroitAuxAllocationsFamiliales":t432, + "beneficieTitrePersonnelAidePersonnelleLogement":t433}} + function enfant_prestations_familiales_$0(enfant_prestations_familiales) + {var + _$i_= + enfant_prestations_familiales.beneficieTitrePersonnelAidePersonnelleLogement + | + 0, + _$j_= + enfant_prestations_familiales.aDejaOuvertDroitAuxAllocationsFamiliales + | + 0, + _$k_= + prise_en_charge_enfant_of_jsoo + (enfant_prestations_familiales.priseEnCharge), + _$l_= + caml_call1 + (Runtime_jsoo_Runtime[4], + enfant_prestations_familiales.dateDeNaissance), + _$m_= + caml_call1 + (Runtime_ocaml_Runtime[42], + enfant_prestations_familiales.remunerationMensuelle), + _$n_=caml_call1(Runtime_ocaml_Runtime[33],_$m_), + _$o_= + situation_obligation_scolaire_$2 + (enfant_prestations_familiales.obligationScolaire); + return [0, + caml_call1 + (Runtime_ocaml_Runtime[49], + enfant_prestations_familiales.identifiant), + _$o_, + _$n_, + _$l_, + _$k_, + _$j_, + _$i_]} + function enfant_a_charge_to_jsoo(enfant_a_charge) + {var + t447=situation_garde_alternee_to_js(enfant_a_charge[7]), + t446=situation_obligation_scolaire_$1(enfant_a_charge[6]), + t445=caml_call1(Runtime_ocaml_Runtime[35],enfant_a_charge[5]), + t444=caml_call1(Runtime_jsoo_Runtime[5],enfant_a_charge[4]), + t443=! ! enfant_a_charge[3], + t442=! ! enfant_a_charge[2], + t441=caml_call1(Runtime_ocaml_Runtime[48],enfant_a_charge[1]); + return {"identifiant":t441, + "beneficieTitrePersonnelAidePersonnelleLogement":t442, + "aDejaOuvertDroitAuxAllocationsFamiliales":t443, + "dateDeNaissance":t444, + "remunerationMensuelle":t445, + "obligationScolaire":t446, + "situationGardeAlternee":t447}} + function enfant_a_charge_of_jsoo(enfant_a_charge) + {var + _$b_= + situation_garde_alternee_of_js(enfant_a_charge.situationGardeAlternee), + _$c_= + situation_obligation_scolaire_$2(enfant_a_charge.obligationScolaire), + _$d_= + caml_call1 + (Runtime_ocaml_Runtime[42],enfant_a_charge.remunerationMensuelle), + _$e_=caml_call1(Runtime_ocaml_Runtime[33],_$d_), + _$f_= + caml_call1(Runtime_jsoo_Runtime[4],enfant_a_charge.dateDeNaissance), + _$g_=enfant_a_charge.aDejaOuvertDroitAuxAllocationsFamiliales | 0, + _$h_=enfant_a_charge.beneficieTitrePersonnelAidePersonnelleLogement | 0; + return [0, + caml_call1 + (Runtime_ocaml_Runtime[49],enfant_a_charge.identifiant), + _$h_, + _$g_, + _$f_, + _$e_, + _$c_, + _$b_]} + function type_bailleur_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1],t456=convention_bailleur_social_to_(arg); + return {"kind":"BailleurSocial","payload":t456}; + case 1: + var arg$0=param[1],t458=convention_a_n_h_a_to_jsoo(arg$0); + return {"kind":"BailleurPriveAvecConventionnementSocial", + "payload":t458}; + default: + var arg$1=param[1];return {"kind":"BailleurPrive","payload":arg$1}}} + function type_bailleur_of_jsoo(type_bailleur) + {var cons=caml_string_of_jsstring(type_bailleur.kind); + if(caml_string_notequal(cons,cst_BailleurPrive)) + {if(caml_string_notequal(cons,cst_BailleurPriveAvecConventio)) + {if(caml_string_notequal(cons,cst_BailleurSocial$0)) + {var _$a_=caml_call2(Stdlib_Printf[4],_Xu_,cons); + return caml_call1(Stdlib[2],_$a_)} + return [0,convention_bailleur_social_of_(type_bailleur.payload)]} + return [1,convention_a_n_h_a_of_jsoo(type_bailleur.payload)]} + return _Xv_} + function loue_ou_sous_loue_a_des_tiers_(param) + {if(0 === param[0]){var arg=param[1];return {"kind":"Non","payload":arg}} + var arg$0=param[1],t467=personne_sous_location_to_jsoo(arg$0); + return {"kind":"Oui","payload":t467}} + function loue_ou_sous_loue_a_des_tiers_$0(loue_ou_sous_loue_a_des_tiers) + {var cons=caml_string_of_jsstring(loue_ou_sous_loue_a_des_tiers.kind); + if(caml_string_notequal(cons,cst_Non$4)) + {if(caml_string_notequal(cons,cst_Oui$2)) + {var __$_=caml_call2(Stdlib_Printf[4],_Xw_,cons); + return caml_call1(Stdlib[2],__$_)} + return [1, + personne_sous_location_of_jsoo + (loue_ou_sous_loue_a_des_tiers.payload)]} + return _Xx_} + function nationalite_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1];return {"kind":"Francaise","payload":arg}} + var arg$0=param[1],t473=conditions_etrangers_to_jsoo(arg$0); + return {"kind":"Etrangere","payload":t473}} + function nationalite_of_jsoo(nationalite) + {var cons=caml_string_of_jsstring(nationalite.kind); + if(caml_string_notequal(cons,cst_Etrangere)) + {if(caml_string_notequal(cons,cst_Francaise)) + {var ____=caml_call2(Stdlib_Printf[4],_Xy_,cons); + return caml_call1(Stdlib[2],____)} + return _Xz_} + return [1,conditions_etrangers_of_jsoo(nationalite.payload)]} + function changement_logement_d842_4_to_(param) + {if(0 === param[0]) + {var arg=param[1],t477=infos_changement_logement_d842(arg); + return {"kind":"Changement","payload":t477}} + var arg$0=param[1]; + return {"kind":"PasDeChangement","payload":arg$0}} + function changement_logement_d842_4_of_(changement_logement_d842_4) + {var cons=caml_string_of_jsstring(changement_logement_d842_4.kind); + if(caml_string_notequal(cons,cst_Changement$0)) + {if(caml_string_notequal(cons,cst_PasDeChangement$0)) + {var __9_=caml_call2(Stdlib_Printf[4],_XA_,cons); + return caml_call1(Stdlib[2],__9_)} + return _XB_} + return [0, + infos_changement_logement_d842$0 + (changement_logement_d842_4.payload)]} + function proprietaire_to_jsoo(proprietaire) + {var + t492=pret_to_jsoo(proprietaire[11]), + t491=neuf_ou_ancien_to_jsoo(proprietaire[10]), + t490=! ! proprietaire[9], + t489=! ! proprietaire[8], + t488=! ! proprietaire[7], + t487=type_travaux_logement_r842_5_t(proprietaire[6]), + t486=type_travaux_logement_d832_15_(proprietaire[5]), + t485=caml_call1(Runtime_jsoo_Runtime[5],proprietaire[4]), + t484=caml_call1(Runtime_ocaml_Runtime[35],proprietaire[3]), + t483=caml_call1(Runtime_ocaml_Runtime[35],proprietaire[2]), + t482=! ! proprietaire[1]; + return {"logementSitueCommuneDesequilibreL8312":t482, + "mensualitePrincipale":t483, + "chargesMensuellesPret":t484, + "dateEntreeLogement":t485, + "typeTravauxLogementD83215":t486, + "typeTravauxLogementR8425":t487, + "localHabitePremiereFoisBeneficiaire":t488, + "copropriete":t489, + "situationR822111317":t490, + "ancienneteLogement":t491, + "pret":t492}} + function proprietaire_of_jsoo(proprietaire) + {var + __X_=pret_of_jsoo(proprietaire.pret), + __Y_=neuf_ou_ancien_of_jsoo(proprietaire.ancienneteLogement), + __Z_=proprietaire.situationR822111317 | 0, + __0_=proprietaire.copropriete | 0, + __1_=proprietaire.localHabitePremiereFoisBeneficiaire | 0, + __2_= + type_travaux_logement_r842_5_o(proprietaire.typeTravauxLogementR8425), + __3_= + type_travaux_logement_d832_15_$0 + (proprietaire.typeTravauxLogementD83215), + __4_= + caml_call1(Runtime_jsoo_Runtime[4],proprietaire.dateEntreeLogement), + __5_= + caml_call1 + (Runtime_ocaml_Runtime[42],proprietaire.chargesMensuellesPret), + __6_=caml_call1(Runtime_ocaml_Runtime[33],__5_), + __7_= + caml_call1 + (Runtime_ocaml_Runtime[42],proprietaire.mensualitePrincipale), + __8_=caml_call1(Runtime_ocaml_Runtime[33],__7_); + return [0, + proprietaire.logementSitueCommuneDesequilibreL8312 | 0, + __8_, + __6_, + __4_, + __3_, + __2_, + __1_, + __0_, + __Z_, + __Y_, + __X_]} + function informations_prime_de_demenage(informations_prime_de_demenage) + {var + t505=date_naissance_troisieme_ou_de(informations_prime_de_demenage[2]), + t504= + caml_call1 + (Runtime_ocaml_Runtime[48],informations_prime_de_demenage[1]); + return {"nombreEnfantsANaitreApresTroisiemeMoisGrossesse":t504, + "dateNaissanceTroisiemeEnfantOuDernierSiPlus":t505}} + function informations_prime_de_demenage$0(informations_prime_de_demenage) + {var + __W_= + date_naissance_troisieme_ou_de$0 + (informations_prime_de_demenage.dateNaissanceTroisiemeEnfantOuDernierSiPlus); + return [0, + caml_call1 + (Runtime_ocaml_Runtime[49], + informations_prime_de_demenage.nombreEnfantsANaitreApresTroisiemeMoisGrossesse), + __W_]} + function eligibilite_prestations_famili$0(eligibilite_prestations_famili) + {var + t511=! ! eligibilite_prestations_famili[4], + t510= + caml_call1(Runtime_jsoo_Runtime[3],eligibilite_prestations_famili[3]); + function t509(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var __V_=enfant_prestations_familiales_$0(function_input0); + return ! + ! + caml_call1(eligibilite_prestations_famili[2],__V_)})} + function t508(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var __U_=enfant_prestations_familiales_$0(function_input0); + return ! + ! + caml_call1(eligibilite_prestations_famili[1],__U_)})} + return {"droitOuvert":caml_js_wrap_meth_callback(t508), + "conditionsHorsAge":caml_js_wrap_meth_callback(t509), + "ageL51232":t510, + "regimeOutreMerL7511":t511}} + function eligibilite_prestations_famili$1(eligibilite_prestations_famili) + {var + __R_=eligibilite_prestations_famili.regimeOutreMerL7511 | 0, + __S_= + caml_call1 + (Runtime_jsoo_Runtime[2],eligibilite_prestations_famili.ageL51232), + __T_=caml_call1(Stdlib[2],cst_The_function_conditions_ho$0); + return [0, + caml_call1(Stdlib[2],cst_The_function_droit_ouvert_$0), + __T_, + __S_, + __R_]} + function personne_a_charge_to_jsoo(param) + {if(0 === param[0]) + {var arg=param[1],t515=enfant_a_charge_to_jsoo(arg); + return {"kind":"EnfantACharge","payload":t515}} + var arg$0=param[1],t517=autre_personne_a_charge_to_jso(arg$0); + return {"kind":"AutrePersonneACharge","payload":t517}} + function personne_a_charge_of_jsoo(personne_a_charge) + {var cons=caml_string_of_jsstring(personne_a_charge.kind); + if(caml_string_notequal(cons,cst_AutrePersonneACharge)) + {if(caml_string_notequal(cons,cst_EnfantACharge)) + {var __Q_=caml_call2(Stdlib_Printf[4],_XC_,cons); + return caml_call1(Stdlib[2],__Q_)} + return [0,enfant_a_charge_of_jsoo(personne_a_charge.payload)]} + return [1,autre_personne_a_charge_of_jso(personne_a_charge.payload)]} + function demandeur_to_jsoo(demandeur) + {var + t524=! ! demandeur[4], + t523=patrimoine_to_jsoo(demandeur[3]), + t522=nationalite_to_jsoo(demandeur[2]), + t521=caml_call1(Runtime_jsoo_Runtime[5],demandeur[1]); + return {"dateNaissance":t521, + "nationalite":t522, + "patrimoine":t523, + "personneHebergeeCentreSoinLL162223SecuriteSociale":t524}} + function demandeur_of_jsoo(demandeur) + {var + __N_=demandeur.personneHebergeeCentreSoinLL162223SecuriteSociale | 0, + __O_=patrimoine_of_jsoo(demandeur.patrimoine), + __P_=nationalite_of_jsoo(demandeur.nationalite); + return [0, + caml_call1(Runtime_jsoo_Runtime[4],demandeur.dateNaissance), + __P_, + __O_, + __N_]} + function location_to_jsoo(location) + {var + t536=changement_logement_d842_4_to_(location[8]), + t535=! ! location[7], + t534=! ! location[6], + t533=! ! location[5], + t532=! ! location[4], + t531=! ! location[3], + t530=caml_call1(Runtime_ocaml_Runtime[35],location[2]), + t529=type_bailleur_to_jsoo(location[1]); + return {"bailleur":t529, + "loyerPrincipal":t530, + "beneficiaireAideAdulteOuEnfantHandicapes":t531, + "logementEstChambre":t532, + "colocation":t533, + "ageesOuHandicapAdultesHebergeesOnereuxParticuliers":t534, + "logementMeubleD8422":t535, + "changementLogementD8424":t536}} + function location_of_jsoo(location) + {var + __F_=changement_logement_d842_4_of_(location.changementLogementD8424), + __G_=location.logementMeubleD8422 | 0, + __H_=location.ageesOuHandicapAdultesHebergeesOnereuxParticuliers | 0, + __I_=location.colocation | 0, + __J_=location.logementEstChambre | 0, + __K_=location.beneficiaireAideAdulteOuEnfantHandicapes | 0, + __L_=caml_call1(Runtime_ocaml_Runtime[42],location.loyerPrincipal), + __M_=caml_call1(Runtime_ocaml_Runtime[33],__L_); + return [0, + type_bailleur_of_jsoo(location.bailleur), + __M_, + __K_, + __J_, + __I_, + __H_, + __G_, + __F_]} + function eligibilite_aides_personnelle_$0(eligibilite_aides_personnelle_) + {function t549(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var __E_=personne_a_charge_of_jsoo(function_input0); + return ! + ! + caml_call1(eligibilite_aides_personnelle_[5],__E_)})} + var __C_=eligibilite_aides_personnelle_[4]; + function __D_(x){return caml_call1(Runtime_ocaml_Runtime[43],x)} + var + t548=caml_js_from_array(caml_call2(Stdlib_Array[15],__D_,__C_)), + t547= + caml_call1 + (Runtime_ocaml_Runtime[48],eligibilite_aides_personnelle_[3]), + t546=! ! eligibilite_aides_personnelle_[2], + t545= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[1]); + return {"dateCourante":t545, + "eligibilite":t546, + "nombrePersonnesAChargePrisesEnCompte":t547, + "coefficentsEnfantsGardeAlterneePrisEnCompte":t548, + "condition2R8234":caml_js_wrap_meth_callback(t549)}} + function eligibilite_aides_personnelle_$1(eligibilite_aides_personnelle_) + {var + __w_=caml_call1(Stdlib[2],cst_The_function_condition_2_r), + __x_= + caml_js_to_array + (eligibilite_aides_personnelle_.coefficentsEnfantsGardeAlterneePrisEnCompte); + function __y_(x){return caml_call1(Runtime_ocaml_Runtime[42],x)} + var + __z_=caml_call1(caml_call1(Stdlib_Array[15],__y_),__x_), + __A_= + caml_call1 + (Runtime_ocaml_Runtime[49], + eligibilite_aides_personnelle_.nombrePersonnesAChargePrisesEnCompte), + __B_=eligibilite_aides_personnelle_.eligibilite | 0; + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_aides_personnelle_.dateCourante), + __B_, + __A_, + __z_, + __w_]} + function categorie_calcul_a_p_l_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1],t555=location_to_jsoo(arg); + return {"kind":"Location","payload":t555}; + case 1: + var arg$0=param[1],t557=proprietaire_to_jsoo(arg$0); + return {"kind":"AccessionPropriete","payload":t557}; + default: + var arg$1=param[1],t559=logement_foyer_to_jsoo(arg$1); + return {"kind":"LogementFoyer","payload":t559}}} + function categorie_calcul_a_p_l_of_jsoo(categorie_calcul_a_p_l) + {var cons=caml_string_of_jsstring(categorie_calcul_a_p_l.kind); + if(caml_string_notequal(cons,cst_AccessionPropriete)) + {if(caml_string_notequal(cons,cst_Location$0)) + {if(caml_string_notequal(cons,cst_LogementFoyer$0)) + {var __v_=caml_call2(Stdlib_Printf[4],_XD_,cons); + return caml_call1(Stdlib[2],__v_)} + return [2,logement_foyer_of_jsoo(categorie_calcul_a_p_l.payload)]} + return [0,location_of_jsoo(categorie_calcul_a_p_l.payload)]} + return [1,proprietaire_of_jsoo(categorie_calcul_a_p_l.payload)]} + function mode_occupation_to_jsoo(param) + {switch(param[0]) + {case 0: + var arg=param[1],t565=location_to_jsoo(arg); + return {"kind":"Locataire","payload":t565}; + case 1: + var arg$0=param[1],t567=logement_foyer_to_jsoo(arg$0); + return {"kind":"ResidentLogementFoyer","payload":t567}; + case 2: + var arg$1=param[1],t569=proprietaire_to_jsoo(arg$1); + return {"kind":"AccessionProprieteLocalUsageExclusifHabitation", + "payload":t569}; + case 3: + var arg$2=param[1],t571=location_to_jsoo(arg$2); + return {"kind":"SousLocataire","payload":t571}; + default: + var arg$3=param[1],t573=proprietaire_to_jsoo(arg$3); + return {"kind":"LocationAccession","payload":t573}}} + function mode_occupation_of_jsoo(mode_occupation) + {var cons=caml_string_of_jsstring(mode_occupation.kind); + if(caml_string_notequal(cons,cst_AccessionProprieteLocalUsa)) + {if(caml_string_notequal(cons,cst_Locataire$0)) + {if(caml_string_notequal(cons,cst_LocationAccession$0)) + {if(caml_string_notequal(cons,cst_ResidentLogementFoyer)) + {if(caml_string_notequal(cons,cst_SousLocataire$0)) + {var __u_=caml_call2(Stdlib_Printf[4],_XE_,cons); + return caml_call1(Stdlib[2],__u_)} + return [3,location_of_jsoo(mode_occupation.payload)]} + return [1,logement_foyer_of_jsoo(mode_occupation.payload)]} + return [4,proprietaire_of_jsoo(mode_occupation.payload)]} + return [0,location_of_jsoo(mode_occupation.payload)]} + return [2,proprietaire_of_jsoo(mode_occupation.payload)]} + function logement_to_jsoo(logement) + {var + t588=zone_d_habitation_to_jsoo(logement[9]), + t587=caml_call1(Runtime_ocaml_Runtime[48],logement[8]), + t586=! ! logement[7], + t585=parent_ou_autre_to_jsoo(logement[6]), + t584=loue_ou_sous_loue_a_des_tiers_(logement[5]), + t583=parent_ou_autre_to_jsoo(logement[4]), + t582=mode_occupation_to_jsoo(logement[3]), + t581=! ! logement[2], + t580=! ! logement[1]; + return {"residencePrincipale":t580, + "estEhpadOuMaisonAutonomieL31312Asf":t581, + "modeOccupation":t582, + "proprietaire":t583, + "loueOuSousLoueADesTiers":t584, + "usufruit":t585, + "logementDecentL89462":t586, + "surfaceMCarres":t587, + "zone":t588}} + function logement_of_jsoo(logement) + {var + __n_=zone_d_habitation_of_jsoo(logement.zone), + __o_=caml_call1(Runtime_ocaml_Runtime[49],logement.surfaceMCarres), + __p_=logement.logementDecentL89462 | 0, + __q_=parent_ou_autre_of_jsoo(logement.usufruit), + __r_=loue_ou_sous_loue_a_des_tiers_$0(logement.loueOuSousLoueADesTiers), + __s_=parent_ou_autre_of_jsoo(logement.proprietaire), + __t_=mode_occupation_of_jsoo(logement.modeOccupation); + return [0, + logement.residencePrincipale | 0, + logement.estEhpadOuMaisonAutonomieL31312Asf | 0, + __t_, + __s_, + __r_, + __q_, + __p_, + __o_, + __n_]} + function menage_to_jsoo(menage) + {var + t604=! ! menage[7], + t603=! ! menage[6], + t602=situation_familiale_to_jsoo(menage[5]), + t601=caml_call1(Runtime_ocaml_Runtime[48],menage[4]), + __j_=menage[3]; + function __k_(x){return personne_a_charge_to_jsoo(x)} + var + t600=caml_js_from_array(caml_call2(Stdlib_Array[15],__k_,__j_)), + t599=logement_to_jsoo(menage[2]), + __l_=menage[1]; + function __m_(x){return prestation_recue_to_jsoo(x)} + var t598=caml_js_from_array(caml_call2(Stdlib_Array[15],__m_,__l_)); + return {"prestationsRecues":t598, + "logement":t599, + "personnesACharge":t600, + "nombreAutresOccupantsLogement":t601, + "situationFamiliale":t602, + "conditionRattacheFoyerFiscalParentIfi":t603, + "enfantANaitreApresQuatriemeMoisGrossesse":t604}} + function menage_of_jsoo(menage) + {var + _Z$_=menage.enfantANaitreApresQuatriemeMoisGrossesse | 0, + __a_=menage.conditionRattacheFoyerFiscalParentIfi | 0, + __b_=situation_familiale_of_jsoo(menage.situationFamiliale), + __c_= + caml_call1 + (Runtime_ocaml_Runtime[49],menage.nombreAutresOccupantsLogement), + __d_=caml_js_to_array(menage.personnesACharge); + function __e_(x){return personne_a_charge_of_jsoo(x)} + var + __f_=caml_call1(caml_call1(Stdlib_Array[15],__e_),__d_), + __g_=logement_of_jsoo(menage.logement), + __h_=caml_js_to_array(menage.prestationsRecues); + function __i_(x){return prestation_recue_of_jsoo(x)} + return [0, + caml_call1(caml_call1(Stdlib_Array[15],__i_),__h_), + __g_, + __f_, + __c_, + __b_, + __a_, + _Z$_]} + function eligibilite_aides_personnelle_$2(eligibilite_aides_personnelle_) + {function t616(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {return ! + ! + caml_call1 + (eligibilite_aides_personnelle_[5],function_input0)})} + function t615(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {return ! + ! + caml_call1 + (eligibilite_aides_personnelle_[4],function_input0)})} + var + t614= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aides_personnelle_[3]), + t613=demandeur_to_jsoo(eligibilite_aides_personnelle_[2]), + t612=menage_to_jsoo(eligibilite_aides_personnelle_[1]); + return {"menageIn":t612, + "demandeurIn":t613, + "dateCouranteIn":t614, + "conditionLogementResidencePrincipaleIn": + caml_js_wrap_meth_callback(t615), + "conditionLogementSurfaceIn":caml_js_wrap_meth_callback(t616)}} + function eligibilite_aides_personnelle_$3(eligibilite_aides_personnelle_) + {var + _Z7_=caml_call1(Stdlib[2],cst_The_function_condition_log), + _Z8_=caml_call1(Stdlib[2],cst_The_function_condition_log$0), + _Z9_= + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_aides_personnelle_.dateCouranteIn), + _Z__=demandeur_of_jsoo(eligibilite_aides_personnelle_.demandeurIn); + return [0, + menage_of_jsoo(eligibilite_aides_personnelle_.menageIn), + _Z__, + _Z9_, + _Z8_, + _Z7_]} + function eligibilite_aide_personnalisee$2(eligibilite_aide_personnalisee) + {var + t622= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_aide_personnalisee[3]), + t621=demandeur_to_jsoo(eligibilite_aide_personnalisee[2]), + t620=menage_to_jsoo(eligibilite_aide_personnalisee[1]); + return {"menageIn":t620,"demandeurIn":t621,"dateCouranteIn":t622}} + function eligibilite_aide_personnalisee$3(eligibilite_aide_personnalisee) + {var + _Z5_= + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_aide_personnalisee.dateCouranteIn), + _Z6_=demandeur_of_jsoo(eligibilite_aide_personnalisee.demandeurIn); + return [0, + menage_of_jsoo(eligibilite_aide_personnalisee.menageIn), + _Z6_, + _Z5_]} + function eligibilite_allocation_logemen$2(eligibilite_allocation_logemen) + {var + t629=! ! eligibilite_allocation_logemen[4], + t628=demandeur_to_jsoo(eligibilite_allocation_logemen[3]), + t627=menage_to_jsoo(eligibilite_allocation_logemen[2]), + t626= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_allocation_logemen[1]); + return {"dateCouranteIn":t626, + "menageIn":t627, + "demandeurIn":t628, + "beneficieAidePersonnaliseeLogementIn":t629}} + function eligibilite_allocation_logemen$3(eligibilite_allocation_logemen) + {var + _Z2_= + eligibilite_allocation_logemen.beneficieAidePersonnaliseeLogementIn + | + 0, + _Z3_=demandeur_of_jsoo(eligibilite_allocation_logemen.demandeurIn), + _Z4_=menage_of_jsoo(eligibilite_allocation_logemen.menageIn); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_allocation_logemen.dateCouranteIn), + _Z4_, + _Z3_, + _Z2_]} + function eligibilite_prime_de_demenagem$2(eligibilite_prime_de_demenagem) + {var + t639= + caml_call1 + (Runtime_ocaml_Runtime[35],eligibilite_prime_de_demenagem[6]), + t638= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[5]), + t637=demandeur_to_jsoo(eligibilite_prime_de_demenagem[4]), + t636=menage_to_jsoo(eligibilite_prime_de_demenagem[3]), + t635= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prime_de_demenagem[2]), + t634=informations_prime_de_demenage(eligibilite_prime_de_demenagem[1]); + return {"informationsIn":t634, + "dateEmmenagementIn":t635, + "menageIn":t636, + "demandeurIn":t637, + "dateCouranteIn":t638, + "depensesJustifieesReellementEngageesIn":t639}} + function eligibilite_prime_de_demenagem$3(eligibilite_prime_de_demenagem) + {var + _ZW_= + caml_call1 + (Runtime_ocaml_Runtime[42], + eligibilite_prime_de_demenagem.depensesJustifieesReellementEngageesIn), + _ZX_=caml_call1(Runtime_ocaml_Runtime[33],_ZW_), + _ZY_= + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_prime_de_demenagem.dateCouranteIn), + _ZZ_=demandeur_of_jsoo(eligibilite_prime_de_demenagem.demandeurIn), + _Z0_=menage_of_jsoo(eligibilite_prime_de_demenagem.menageIn), + _Z1_= + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_prime_de_demenagem.dateEmmenagementIn); + return [0, + informations_prime_de_demenage$0 + (eligibilite_prime_de_demenagem.informationsIn), + _Z1_, + _Z0_, + _ZZ_, + _ZY_, + _ZX_]} + function ressources_aides_personnelle_l$2(ressources_aides_personnelle_l) + {var + t658= + caml_call1 + (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[13]), + t657=paiement_logement_distinct_pro(ressources_aides_personnelle_l[12]), + t656= + caml_call1(Runtime_jsoo_Runtime[5],ressources_aides_personnelle_l[11]), + t655=! ! ressources_aides_personnelle_l[10], + t654=! ! ressources_aides_personnelle_l[9], + t653=mode_occupation_to_jsoo(ressources_aides_personnelle_l[8]), + t652=situation_familiale_to_jsoo(ressources_aides_personnelle_l[7]), + _ZS_=ressources_aides_personnelle_l[6]; + function _ZT_(x){return personne_a_charge_to_jsoo(x)} + var + t651=caml_js_from_array(caml_call2(Stdlib_Array[15],_ZT_,_ZS_)), + t650=! ! ressources_aides_personnelle_l[5], + t649=! ! ressources_aides_personnelle_l[4], + _ZU_=ressources_aides_personnelle_l[3]; + function _ZV_(x){return personne_vivant_habituellement(x)} + var + t648=caml_js_from_array(caml_call2(Stdlib_Array[15],_ZV_,_ZU_)), + t647= + caml_call1 + (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[2]), + t646= + caml_call1 + (Runtime_ocaml_Runtime[35],ressources_aides_personnelle_l[1]); + return {"ressourcesDemandeurIn":t646, + "ressourcesConjointIn":t647, + "personnesVivantHabituellementFoyerIn":t648, + "demandeurExerceActiviteRemunereeIn":t649, + "conjointExerceActiviteRemunereeIn":t650, + "personnesAChargeIn":t651, + "situationFamilialeIn":t652, + "modeOccupationIn":t653, + "conditionAgeBourseEnseignementSuperieurIn":t654, + "demandeurPoursuitDesEtudesIn":t655, + "dateDemandeOuReexamenDroitIn":t656, + "paiementLogementDistinctProfessionnelIn":t657, + "ressourcesMenageArrondiesBaseIn":t658}} + function ressources_aides_personnelle_l$3(ressources_aides_personnelle_l) + {var + _Zz_= + caml_call1 + (Runtime_ocaml_Runtime[42], + ressources_aides_personnelle_l.ressourcesMenageArrondiesBaseIn), + _ZA_=caml_call1(Runtime_ocaml_Runtime[33],_Zz_), + _ZB_= + paiement_logement_distinct_pro$0 + (ressources_aides_personnelle_l.paiementLogementDistinctProfessionnelIn), + _ZC_= + caml_call1 + (Runtime_jsoo_Runtime[4], + ressources_aides_personnelle_l.dateDemandeOuReexamenDroitIn), + _ZD_=ressources_aides_personnelle_l.demandeurPoursuitDesEtudesIn | 0, + _ZE_= + ressources_aides_personnelle_l.conditionAgeBourseEnseignementSuperieurIn + | + 0, + _ZF_= + mode_occupation_of_jsoo + (ressources_aides_personnelle_l.modeOccupationIn), + _ZG_= + situation_familiale_of_jsoo + (ressources_aides_personnelle_l.situationFamilialeIn), + _ZH_= + caml_js_to_array(ressources_aides_personnelle_l.personnesAChargeIn); + function _ZI_(x){return personne_a_charge_of_jsoo(x)} + var + _ZJ_=caml_call1(caml_call1(Stdlib_Array[15],_ZI_),_ZH_), + _ZK_= + ressources_aides_personnelle_l.conjointExerceActiviteRemunereeIn + | + 0, + _ZL_= + ressources_aides_personnelle_l.demandeurExerceActiviteRemunereeIn + | + 0, + _ZM_= + caml_js_to_array + (ressources_aides_personnelle_l.personnesVivantHabituellementFoyerIn); + function _ZN_(x){return personne_vivant_habituellement$0(x)} + var + _ZO_=caml_call1(caml_call1(Stdlib_Array[15],_ZN_),_ZM_), + _ZP_= + caml_call1 + (Runtime_ocaml_Runtime[42], + ressources_aides_personnelle_l.ressourcesConjointIn), + _ZQ_=caml_call1(Runtime_ocaml_Runtime[33],_ZP_), + _ZR_= + caml_call1 + (Runtime_ocaml_Runtime[42], + ressources_aides_personnelle_l.ressourcesDemandeurIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_ZR_), + _ZQ_, + _ZO_, + _ZL_, + _ZK_, + _ZJ_, + _ZG_, + _ZF_, + _ZE_, + _ZD_, + _ZC_, + _ZB_, + _ZA_]} + function contributions_sociales_aides_p$2(contributions_sociales_aides_p) + {var + t672= + caml_call1(Runtime_jsoo_Runtime[5],contributions_sociales_aides_p[1]); + return {"dateCouranteIn":t672}} + function contributions_sociales_aides_p$3(contributions_sociales_aides_p) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + contributions_sociales_aides_p.dateCouranteIn)]} + function calcul_aide_personnalisee_loge$11(calcul_aide_personnalisee_loge) + {var + t686=! ! calcul_aide_personnalisee_loge[13], + t685= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[12]), + t684=! ! calcul_aide_personnalisee_loge[11], + t683=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[10]), + t682=! ! calcul_aide_personnalisee_loge[9], + t681=! ! calcul_aide_personnalisee_loge[8], + t680=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[7]), + t679=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[6]), + t678= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[5]), + t677= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[4]), + t676=! ! calcul_aide_personnalisee_loge[3], + t675= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t674= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"loyerPrincipalBaseIn":t674, + "ressourcesMenageArrondiesIn":t675, + "beneficiaireAideAdulteOuEnfantHandicapesIn":t676, + "dateCouranteIn":t677, + "nombrePersonnesAChargeIn":t678, + "situationFamilialeCalculAplIn":t679, + "zoneIn":t680, + "logementEstChambreIn":t681, + "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t682, + "typeAideIn":t683, + "colocationIn":t684, + "reductionLoyerSolidariteIn":t685, + "logementMeubleD8422In":t686}} + function calcul_aide_personnalisee_loge$12(calcul_aide_personnalisee_loge) + {var + _Zk_=calcul_aide_personnalisee_loge.logementMeubleD8422In | 0, + _Zl_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.reductionLoyerSolidariteIn), + _Zm_=caml_call1(Runtime_ocaml_Runtime[33],_Zl_), + _Zn_=calcul_aide_personnalisee_loge.colocationIn | 0, + _Zo_= + type_aides_personnelle_logemen$0 + (calcul_aide_personnalisee_loge.typeAideIn), + _Zp_= + calcul_aide_personnalisee_loge.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn + | + 0, + _Zq_=calcul_aide_personnalisee_loge.logementEstChambreIn | 0, + _Zr_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), + _Zs_= + situation_familiale_calcul_a_p$0 + (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), + _Zt_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), + _Zu_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateCouranteIn), + _Zv_= + calcul_aide_personnalisee_loge.beneficiaireAideAdulteOuEnfantHandicapesIn + | + 0, + _Zw_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), + _Zx_=caml_call1(Runtime_ocaml_Runtime[33],_Zw_), + _Zy_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.loyerPrincipalBaseIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_Zy_), + _Zx_, + _Zv_, + _Zu_, + _Zt_, + _Zs_, + _Zr_, + _Zq_, + _Zp_, + _Zo_, + _Zn_, + _Zm_, + _Zk_]} + function calcul_equivalence_loyer_minim$2(calcul_equivalence_loyer_minim) + {var + t702= + caml_call1 + (Runtime_ocaml_Runtime[43],calcul_equivalence_loyer_minim[3]), + t701=! ! calcul_equivalence_loyer_minim[2], + t700= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_equivalence_loyer_minim[1]); + return {"ressourcesMenageArrondiesIn":t700, + "condition2Du83225In":t701, + "nNombrePartsD83225In":t702}} + function calcul_equivalence_loyer_minim$3(calcul_equivalence_loyer_minim) + {var + _Zh_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_equivalence_loyer_minim.nNombrePartsD83225In), + _Zi_=calcul_equivalence_loyer_minim.condition2Du83225In | 0, + _Zj_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_equivalence_loyer_minim.ressourcesMenageArrondiesIn); + return [0,caml_call1(Runtime_ocaml_Runtime[33],_Zj_),_Zi_,_Zh_]} + function calcul_nombre_part_logement_fo$2(calcul_nombre_part_logement_fo) + {var + t708=situation_familiale_calcul_a_p(calcul_nombre_part_logement_fo[3]), + t707= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_nombre_part_logement_fo[2]), + t706=! ! calcul_nombre_part_logement_fo[1]; + return {"condition2Du83225In":t706, + "nombrePersonnesAChargeIn":t707, + "situationFamilialeCalculAplIn":t708}} + function calcul_nombre_part_logement_fo$3(calcul_nombre_part_logement_fo) + {var + _Zf_= + situation_familiale_calcul_a_p$0 + (calcul_nombre_part_logement_fo.situationFamilialeCalculAplIn), + _Zg_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_nombre_part_logement_fo.nombrePersonnesAChargeIn); + return [0, + calcul_nombre_part_logement_fo.condition2Du83225In | 0, + _Zg_, + _Zf_]} + function calcul_aide_personnalisee_loge$13(calcul_aide_personnalisee_loge) + {function t721(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {var + _Ze_= + caml_call1 + (calcul_aide_personnalisee_loge[10],function_input0); + return caml_call1(Runtime_ocaml_Runtime[43],_Ze_)})} + function t720(param) + {return caml_js_wrap_meth_callback + (function(param,function_input0) + {return ! + ! + caml_call1 + (calcul_aide_personnalisee_loge[9],function_input0)})} + var + t719= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[8]), + t718= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[7]), + t717=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[6]), + t716=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[5]), + t715= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[4]), + t714= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), + t713= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[2]), + t712=type_logement_foyer_to_jsoo(calcul_aide_personnalisee_loge[1]); + return {"typeLogementFoyerIn":t712, + "dateConventionnementIn":t713, + "ressourcesMenageArrondiesIn":t714, + "nombrePersonnesAChargeIn":t715, + "situationFamilialeCalculAplIn":t716, + "zoneIn":t717, + "dateCouranteIn":t718, + "redevanceIn":t719, + "condition2Du83225In":caml_js_wrap_meth_callback(t720), + "nNombrePartsD83225In":caml_js_wrap_meth_callback(t721)}} + function calcul_aide_personnalisee_loge$14(calcul_aide_personnalisee_loge) + {var + _Y5_=caml_call1(Stdlib[2],cst_The_function_n_nombre_part), + _Y6_=caml_call1(Stdlib[2],cst_The_function_condition_2_d), + _Y7_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.redevanceIn), + _Y8_=caml_call1(Runtime_ocaml_Runtime[33],_Y7_), + _Y9_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateCouranteIn), + _Y__=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), + _Y$_= + situation_familiale_calcul_a_p$0 + (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), + _Za_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), + _Zb_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), + _Zc_=caml_call1(Runtime_ocaml_Runtime[33],_Zb_), + _Zd_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateConventionnementIn); + return [0, + type_logement_foyer_of_jsoo + (calcul_aide_personnalisee_loge.typeLogementFoyerIn), + _Zd_, + _Zc_, + _Za_, + _Y$_, + _Y__, + _Y9_, + _Y8_, + _Y6_, + _Y5_]} + function calcul_nombre_parts_accession_$2(calcul_nombre_parts_accession_) + {var + t731=situation_familiale_calcul_a_p(calcul_nombre_parts_accession_[2]), + t730= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_nombre_parts_accession_[1]); + return {"nombrePersonnesAChargeIn":t730, + "situationFamilialeCalculAplIn":t731}} + function calcul_nombre_parts_accession_$3(calcul_nombre_parts_accession_) + {var + _Y4_= + situation_familiale_calcul_a_p$0 + (calcul_nombre_parts_accession_.situationFamilialeCalculAplIn); + return [0, + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_nombre_parts_accession_.nombrePersonnesAChargeIn), + _Y4_]} + function calcul_aide_personnalisee_loge$15(calcul_aide_personnalisee_loge) + {var + t747= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[14]), + t746=neuf_ou_ancien_to_jsoo(calcul_aide_personnalisee_loge[13]), + t745=type_pret_to_jsoo(calcul_aide_personnalisee_loge[12]), + t744=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[11]), + t743=! ! calcul_aide_personnalisee_loge[10], + t742=! ! calcul_aide_personnalisee_loge[9], + t741= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[8]), + t740=! ! calcul_aide_personnalisee_loge[7], + t739= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[6]), + t738=type_travaux_logement_d832_15_(calcul_aide_personnalisee_loge[5]), + t737=situation_familiale_calcul_a_p(calcul_aide_personnalisee_loge[4]), + t736= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[3]), + t735= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[2]), + t734= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[1]); + return {"mensualitePrincipaleIn":t734, + "ressourcesMenageArrondiesIn":t735, + "nombrePersonnesAChargeIn":t736, + "situationFamilialeCalculAplIn":t737, + "typeTravauxLogementIn":t738, + "dateSignaturePretIn":t739, + "localHabitePremiereFoisBeneficiaireIn":t740, + "dateEntreeLogementIn":t741, + "coproprieteIn":t742, + "situationR822111317In":t743, + "zoneIn":t744, + "typePretIn":t745, + "ancienneteLogementIn":t746, + "dateCouranteIn":t747}} + function calcul_aide_personnalisee_loge$16(calcul_aide_personnalisee_loge) + {var + _YP_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateCouranteIn), + _YQ_= + neuf_ou_ancien_of_jsoo + (calcul_aide_personnalisee_loge.ancienneteLogementIn), + _YR_=type_pret_of_jsoo(calcul_aide_personnalisee_loge.typePretIn), + _YS_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), + _YT_=calcul_aide_personnalisee_loge.situationR822111317In | 0, + _YU_=calcul_aide_personnalisee_loge.coproprieteIn | 0, + _YV_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateEntreeLogementIn), + _YW_= + calcul_aide_personnalisee_loge.localHabitePremiereFoisBeneficiaireIn + | + 0, + _YX_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateSignaturePretIn), + _YY_= + type_travaux_logement_d832_15_$0 + (calcul_aide_personnalisee_loge.typeTravauxLogementIn), + _YZ_= + situation_familiale_calcul_a_p$0 + (calcul_aide_personnalisee_loge.situationFamilialeCalculAplIn), + _Y0_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), + _Y1_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.ressourcesMenageArrondiesIn), + _Y2_=caml_call1(Runtime_ocaml_Runtime[33],_Y1_), + _Y3_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.mensualitePrincipaleIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_Y3_), + _Y2_, + _Y0_, + _YZ_, + _YY_, + _YX_, + _YW_, + _YV_, + _YU_, + _YT_, + _YS_, + _YR_, + _YQ_, + _YP_]} + function calcul_aide_personnalisee_loge$17(calcul_aide_personnalisee_loge) + {var + t768= + caml_call1(Runtime_jsoo_Runtime[5],calcul_aide_personnalisee_loge[7]), + t767=zone_d_habitation_to_jsoo(calcul_aide_personnalisee_loge[6]), + t766= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_aide_personnalisee_loge[5]), + t765=situation_familiale_to_jsoo(calcul_aide_personnalisee_loge[4]), + t764= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_aide_personnalisee_loge[3]), + t763=type_aides_personnelle_logemen(calcul_aide_personnalisee_loge[2]), + t762=mode_occupation_to_jsoo(calcul_aide_personnalisee_loge[1]); + return {"modeOccupationIn":t762, + "typeAideIn":t763, + "ressourcesMenageSansArrondiIn":t764, + "situationFamilialeIn":t765, + "nombrePersonnesAChargeIn":t766, + "zoneIn":t767, + "dateCouranteIn":t768}} + function calcul_aide_personnalisee_loge$18(calcul_aide_personnalisee_loge) + {var + _YI_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_aide_personnalisee_loge.dateCouranteIn), + _YJ_=zone_d_habitation_of_jsoo(calcul_aide_personnalisee_loge.zoneIn), + _YK_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_aide_personnalisee_loge.nombrePersonnesAChargeIn), + _YL_= + situation_familiale_of_jsoo + (calcul_aide_personnalisee_loge.situationFamilialeIn), + _YM_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_aide_personnalisee_loge.ressourcesMenageSansArrondiIn), + _YN_=caml_call1(Runtime_ocaml_Runtime[33],_YM_), + _YO_= + type_aides_personnelle_logemen$0 + (calcul_aide_personnalisee_loge.typeAideIn); + return [0, + mode_occupation_of_jsoo + (calcul_aide_personnalisee_loge.modeOccupationIn), + _YO_, + _YN_, + _YL_, + _YK_, + _YJ_, + _YI_]} + function calcul_allocation_logement_loc$2(calcul_allocation_logement_loc) + {var + t789=changement_logement_d842_4_to_(calcul_allocation_logement_loc[14]), + t788=! ! calcul_allocation_logement_loc[13], + t787= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[12]), + t786=! ! calcul_allocation_logement_loc[11], + t785=type_aides_personnelle_logemen(calcul_allocation_logement_loc[10]), + t784=! ! calcul_allocation_logement_loc[9], + t783=! ! calcul_allocation_logement_loc[8], + t782=zone_d_habitation_to_jsoo(calcul_allocation_logement_loc[7]), + t781=situation_familiale_calcul_a_p(calcul_allocation_logement_loc[6]), + t780= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_allocation_logement_loc[5]), + t779= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_loc[4]), + t778=! ! calcul_allocation_logement_loc[3], + t777= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[2]), + t776= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_loc[1]); + return {"loyerPrincipalIn":t776, + "ressourcesMenageArrondiesIn":t777, + "beneficiaireAideAdulteOuEnfantHandicapesIn":t778, + "dateCouranteIn":t779, + "nombrePersonnesAChargeIn":t780, + "situationFamilialeCalculAplIn":t781, + "zoneIn":t782, + "logementEstChambreIn":t783, + "ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn":t784, + "typeAideIn":t785, + "colocationIn":t786, + "reductionLoyerSolidariteIn":t787, + "logementMeubleD8422In":t788, + "changementLogementD8424In":t789}} + function calcul_allocation_logement_loc$3(calcul_allocation_logement_loc) + {var + _Ys_= + changement_logement_d842_4_of_ + (calcul_allocation_logement_loc.changementLogementD8424In), + _Yt_=calcul_allocation_logement_loc.logementMeubleD8422In | 0, + _Yu_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_loc.reductionLoyerSolidariteIn), + _Yv_=caml_call1(Runtime_ocaml_Runtime[33],_Yu_), + _Yw_=calcul_allocation_logement_loc.colocationIn | 0, + _Yx_= + type_aides_personnelle_logemen$0 + (calcul_allocation_logement_loc.typeAideIn), + _Yy_= + calcul_allocation_logement_loc.ageesOuHandicapAdultesHebergeesOnereuxParticuliersIn + | + 0, + _Yz_=calcul_allocation_logement_loc.logementEstChambreIn | 0, + _YA_=zone_d_habitation_of_jsoo(calcul_allocation_logement_loc.zoneIn), + _YB_= + situation_familiale_calcul_a_p$0 + (calcul_allocation_logement_loc.situationFamilialeCalculAplIn), + _YC_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_allocation_logement_loc.nombrePersonnesAChargeIn), + _YD_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_loc.dateCouranteIn), + _YE_= + calcul_allocation_logement_loc.beneficiaireAideAdulteOuEnfantHandicapesIn + | + 0, + _YF_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_loc.ressourcesMenageArrondiesIn), + _YG_=caml_call1(Runtime_ocaml_Runtime[33],_YF_), + _YH_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_loc.loyerPrincipalIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_YH_), + _YG_, + _YE_, + _YD_, + _YC_, + _YB_, + _YA_, + _Yz_, + _Yy_, + _Yx_, + _Yw_, + _Yv_, + _Yt_, + _Ys_]} + function calcul_allocation_logement_acc$2(calcul_allocation_logement_acc) + {var + t816=! ! calcul_allocation_logement_acc[13], + t815= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[12]), + t814= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[11]), + t813=! ! calcul_allocation_logement_acc[10], + t812=type_travaux_logement_r842_5_t(calcul_allocation_logement_acc[9]), + t811= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[8]), + t810=! ! calcul_allocation_logement_acc[7], + t809= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[6]), + t808= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_acc[5]), + t807=zone_d_habitation_to_jsoo(calcul_allocation_logement_acc[4]), + t806=situation_familiale_calcul_a_p(calcul_allocation_logement_acc[3]), + t805= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_allocation_logement_acc[2]), + t804= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_acc[1]); + return {"ressourcesMenageArrondiesBaseIn":t804, + "nombrePersonnesAChargeIn":t805, + "situationFamilialeCalculAplIn":t806, + "zoneIn":t807, + "dateCouranteIn":t808, + "mensualitePrincipaleIn":t809, + "situationR822111317In":t810, + "dateSignaturePretIn":t811, + "typeTravauxLogementIn":t812, + "localHabitePremiereFoisBeneficiaireIn":t813, + "dateEntreeLogementIn":t814, + "chargesMensuellesPretIn":t815, + "coproprieteIn":t816}} + function calcul_allocation_logement_acc$3(calcul_allocation_logement_acc) + {var + _Yd_=calcul_allocation_logement_acc.coproprieteIn | 0, + _Ye_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_acc.chargesMensuellesPretIn), + _Yf_=caml_call1(Runtime_ocaml_Runtime[33],_Ye_), + _Yg_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_acc.dateEntreeLogementIn), + _Yh_= + calcul_allocation_logement_acc.localHabitePremiereFoisBeneficiaireIn + | + 0, + _Yi_= + type_travaux_logement_r842_5_o + (calcul_allocation_logement_acc.typeTravauxLogementIn), + _Yj_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_acc.dateSignaturePretIn), + _Yk_=calcul_allocation_logement_acc.situationR822111317In | 0, + _Yl_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_acc.mensualitePrincipaleIn), + _Ym_=caml_call1(Runtime_ocaml_Runtime[33],_Yl_), + _Yn_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_acc.dateCouranteIn), + _Yo_=zone_d_habitation_of_jsoo(calcul_allocation_logement_acc.zoneIn), + _Yp_= + situation_familiale_calcul_a_p$0 + (calcul_allocation_logement_acc.situationFamilialeCalculAplIn), + _Yq_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_allocation_logement_acc.nombrePersonnesAChargeIn), + _Yr_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_acc.ressourcesMenageArrondiesBaseIn); + return [0, + caml_call1(Runtime_ocaml_Runtime[33],_Yr_), + _Yq_, + _Yp_, + _Yo_, + _Yn_, + _Ym_, + _Yk_, + _Yj_, + _Yi_, + _Yh_, + _Yg_, + _Yf_, + _Yd_]} + function calcul_allocation_logement_foy$2(calcul_allocation_logement_foy) + {var + t838=categorie_equivalence_loyer_al(calcul_allocation_logement_foy[9]), + t837= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_foy[8]), + t836=zone_d_habitation_to_jsoo(calcul_allocation_logement_foy[7]), + t835=situation_familiale_calcul_a_p(calcul_allocation_logement_foy[6]), + t834= + caml_call1 + (Runtime_ocaml_Runtime[48],calcul_allocation_logement_foy[5]), + t833= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[4]), + t832= + caml_call1 + (Runtime_ocaml_Runtime[35],calcul_allocation_logement_foy[3]), + t831= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_foy[2]), + t830=type_logement_foyer_to_jsoo(calcul_allocation_logement_foy[1]); + return {"typeLogementFoyerIn":t830, + "dateConventionnementIn":t831, + "redevanceIn":t832, + "ressourcesMenageArrondiesIn":t833, + "nombrePersonnesAChargeIn":t834, + "situationFamilialeCalculAplIn":t835, + "zoneIn":t836, + "dateCouranteIn":t837, + "categorieEquivalenceLoyerD84216In":t838}} + function calcul_allocation_logement_foy$3(calcul_allocation_logement_foy) + {var + _X5_= + categorie_equivalence_loyer_al$0 + (calcul_allocation_logement_foy.categorieEquivalenceLoyerD84216In), + _X6_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_foy.dateCouranteIn), + _X7_=zone_d_habitation_of_jsoo(calcul_allocation_logement_foy.zoneIn), + _X8_= + situation_familiale_calcul_a_p$0 + (calcul_allocation_logement_foy.situationFamilialeCalculAplIn), + _X9_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_allocation_logement_foy.nombrePersonnesAChargeIn), + _X__= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.ressourcesMenageArrondiesIn), + _X$_=caml_call1(Runtime_ocaml_Runtime[33],_X__), + _Ya_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_foy.redevanceIn), + _Yb_=caml_call1(Runtime_ocaml_Runtime[33],_Ya_), + _Yc_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_foy.dateConventionnementIn); + return [0, + type_logement_foyer_of_jsoo + (calcul_allocation_logement_foy.typeLogementFoyerIn), + _Yc_, + _Yb_, + _X$_, + _X9_, + _X8_, + _X7_, + _X6_, + _X5_]} + function calcul_allocation_logement_in_(calcul_allocation_logement_in) + {var + t854=type_aides_personnelle_logemen(calcul_allocation_logement_in[7]), + t853= + caml_call1(Runtime_jsoo_Runtime[5],calcul_allocation_logement_in[6]), + t852=zone_d_habitation_to_jsoo(calcul_allocation_logement_in[5]), + t851= + caml_call1(Runtime_ocaml_Runtime[48],calcul_allocation_logement_in[4]), + t850=situation_familiale_to_jsoo(calcul_allocation_logement_in[3]), + t849= + caml_call1(Runtime_ocaml_Runtime[35],calcul_allocation_logement_in[2]), + t848=mode_occupation_to_jsoo(calcul_allocation_logement_in[1]); + return {"modeOccupationIn":t848, + "ressourcesMenageSansArrondiIn":t849, + "situationFamilialeIn":t850, + "nombrePersonnesAChargeIn":t851, + "zoneIn":t852, + "dateCouranteIn":t853, + "typeAideIn":t854}} + function calcul_allocation_logement_in_$0(calcul_allocation_logement_in) + {var + _XY_= + type_aides_personnelle_logemen$0 + (calcul_allocation_logement_in.typeAideIn), + _XZ_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calcul_allocation_logement_in.dateCouranteIn), + _X0_=zone_d_habitation_of_jsoo(calcul_allocation_logement_in.zoneIn), + _X1_= + caml_call1 + (Runtime_ocaml_Runtime[49], + calcul_allocation_logement_in.nombrePersonnesAChargeIn), + _X2_= + situation_familiale_of_jsoo + (calcul_allocation_logement_in.situationFamilialeIn), + _X3_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calcul_allocation_logement_in.ressourcesMenageSansArrondiIn), + _X4_=caml_call1(Runtime_ocaml_Runtime[33],_X3_); + return [0, + mode_occupation_of_jsoo + (calcul_allocation_logement_in.modeOccupationIn), + _X4_, + _X2_, + _X1_, + _X0_, + _XZ_, + _XY_]} + function ouverture_droits_retraite_in_t(ouverture_droits_retraite_in) + {var + t862= + caml_call1(Runtime_jsoo_Runtime[5],ouverture_droits_retraite_in[1]); + return {"dateNaissanceAssureIn":t862}} + function ouverture_droits_retraite_in_o(ouverture_droits_retraite_in) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + ouverture_droits_retraite_in.dateNaissanceAssureIn)]} + function impaye_depense_logement_in_to_(impaye_depense_logement_in) + {var + t869= + caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[6]), + t868=depense_logement_to_jsoo(impaye_depense_logement_in[5]), + t867= + caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[4]), + t866= + caml_call1(Runtime_ocaml_Runtime[35],impaye_depense_logement_in[3]), + t865=versement_a_to_jsoo(impaye_depense_logement_in[2]), + t864=mode_occupation_to_jsoo(impaye_depense_logement_in[1]); + return {"modeOccupationIn":t864, + "aideVerseeIn":t865, + "montantAplIn":t866, + "montantChargesIn":t867, + "depenseLogementIn":t868, + "montantDetteIn":t869}} + function impaye_depense_logement_in_of_(impaye_depense_logement_in) + {var + _XQ_= + caml_call1 + (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantDetteIn), + _XR_=caml_call1(Runtime_ocaml_Runtime[33],_XQ_), + _XS_= + depense_logement_of_jsoo(impaye_depense_logement_in.depenseLogementIn), + _XT_= + caml_call1 + (Runtime_ocaml_Runtime[42], + impaye_depense_logement_in.montantChargesIn), + _XU_=caml_call1(Runtime_ocaml_Runtime[33],_XT_), + _XV_= + caml_call1 + (Runtime_ocaml_Runtime[42],impaye_depense_logement_in.montantAplIn), + _XW_=caml_call1(Runtime_ocaml_Runtime[33],_XV_), + _XX_=versement_a_of_jsoo(impaye_depense_logement_in.aideVerseeIn); + return [0, + mode_occupation_of_jsoo + (impaye_depense_logement_in.modeOccupationIn), + _XX_, + _XW_, + _XU_, + _XS_, + _XR_]} + function calculette_aides_au_logement_i(calculette_aides_au_logement_i) + {var + t879= + caml_call1 + (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_i[4]), + t878= + caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_i[3]), + t877=demandeur_to_jsoo(calculette_aides_au_logement_i[2]), + t876=menage_to_jsoo(calculette_aides_au_logement_i[1]); + return {"menageIn":t876, + "demandeurIn":t877, + "dateCouranteIn":t878, + "ressourcesMenagePrisesEnCompteIn":t879}} + function calculette_aides_au_logement_i$0(calculette_aides_au_logement_i) + {var + _XM_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calculette_aides_au_logement_i.ressourcesMenagePrisesEnCompteIn), + _XN_=caml_call1(Runtime_ocaml_Runtime[33],_XM_), + _XO_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calculette_aides_au_logement_i.dateCouranteIn), + _XP_=demandeur_of_jsoo(calculette_aides_au_logement_i.demandeurIn); + return [0, + menage_of_jsoo(calculette_aides_au_logement_i.menageIn), + _XP_, + _XO_, + _XN_]} + function calculette_aides_au_logement_g$2(calculette_aides_au_logement_g) + {var + t887= + caml_call1 + (Runtime_ocaml_Runtime[35],calculette_aides_au_logement_g[4]), + t886= + caml_call1(Runtime_jsoo_Runtime[5],calculette_aides_au_logement_g[3]), + t885=demandeur_to_jsoo(calculette_aides_au_logement_g[2]), + t884=menage_to_jsoo(calculette_aides_au_logement_g[1]); + return {"menageIn":t884, + "demandeurIn":t885, + "dateCouranteIn":t886, + "ressourcesMenagePrisesEnCompteIn":t887}} + function calculette_aides_au_logement_g$3(calculette_aides_au_logement_g) + {var + _XI_= + caml_call1 + (Runtime_ocaml_Runtime[42], + calculette_aides_au_logement_g.ressourcesMenagePrisesEnCompteIn), + _XJ_=caml_call1(Runtime_ocaml_Runtime[33],_XI_), + _XK_= + caml_call1 + (Runtime_jsoo_Runtime[4], + calculette_aides_au_logement_g.dateCouranteIn), + _XL_=demandeur_of_jsoo(calculette_aides_au_logement_g.demandeurIn); + return [0, + menage_of_jsoo(calculette_aides_au_logement_g.menageIn), + _XL_, + _XK_, + _XJ_]} + function base_mensuelle_allocations_fam$8(base_mensuelle_allocations_fam) + {var + t892= + caml_call1(Runtime_jsoo_Runtime[5],base_mensuelle_allocations_fam[1]); + return {"dateCouranteIn":t892}} + function base_mensuelle_allocations_fam$9(base_mensuelle_allocations_fam) + {return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + base_mensuelle_allocations_fam.dateCouranteIn)]} + function smic_in_to_jsoo$0(smic_in) + {var + t895=collectivite_to_jsoo$0(smic_in[2]), + t894=caml_call1(Runtime_jsoo_Runtime[5],smic_in[1]); + return {"dateCouranteIn":t894,"residenceIn":t895}} + function smic_in_of_jsoo$0(smic_in) + {var _XH_=collectivite_of_jsoo$0(smic_in.residenceIn); + return [0, + caml_call1(Runtime_jsoo_Runtime[4],smic_in.dateCouranteIn), + _XH_]} + function eligibilite_prestations_famili$2(eligibilite_prestations_famili) + {var + t900=collectivite_to_jsoo$0(eligibilite_prestations_famili[3]), + t899= + element_prestations_familiales$1(eligibilite_prestations_famili[2]), + t898= + caml_call1(Runtime_jsoo_Runtime[5],eligibilite_prestations_famili[1]); + return {"dateCouranteIn":t898, + "prestationCouranteIn":t899, + "residenceIn":t900}} + function eligibilite_prestations_famili$3(eligibilite_prestations_famili) + {var + _XF_=collectivite_of_jsoo$0(eligibilite_prestations_famili.residenceIn), + _XG_= + element_prestations_familiales$2 + (eligibilite_prestations_famili.prestationCouranteIn); + return [0, + caml_call1 + (Runtime_jsoo_Runtime[4], + eligibilite_prestations_famili.dateCouranteIn), + _XG_, + _XF_]} + function contributions_sociales_aides_p$4 + (contributions_sociales_aides_p$1) + {return contributions_sociales_aides_p$0 + (contributions_sociales_aides_p + (contributions_sociales_aides_p$3 + (contributions_sociales_aides_p$1)))} + function calcul_equivalence_loyer_minim$4 + (calcul_equivalence_loyer_minim$1) + {return calcul_equivalence_loyer_minim$0 + (calcul_equivalence_loyer_minim + (calcul_equivalence_loyer_minim$3 + (calcul_equivalence_loyer_minim$1)))} + function calcul_nombre_part_logement_fo$4 + (calcul_nombre_part_logement_fo$1) + {return calcul_nombre_part_logement_fo$0 + (calcul_nombre_part_logement_fo + (calcul_nombre_part_logement_fo$3 + (calcul_nombre_part_logement_fo$1)))} + function calcul_nombre_parts_accession_$4 + (calcul_nombre_parts_accession_$1) + {return calcul_nombre_parts_accession_$0 + (calcul_nombre_parts_accession_ + (calcul_nombre_parts_accession_$3 + (calcul_nombre_parts_accession_$1)))} + function ouverture_droits_retraite$0(ouverture_droits_retraite_in) + {return ouverture_droits_retraite_to_j + (ouverture_droits_retraite + (ouverture_droits_retraite_in_o(ouverture_droits_retraite_in)))} + function impaye_depense_logement$0(impaye_depense_logement_in) + {return impaye_depense_logement_to_jso + (impaye_depense_logement + (impaye_depense_logement_in_of_(impaye_depense_logement_in)))} + function base_mensuelle_allocations_fam$10(base_mensuelle_allocations_fam) + {return base_mensuelle_allocations_fam$6 + (base_mensuelle_allocations_fam$5 + (base_mensuelle_allocations_fam$9 + (base_mensuelle_allocations_fam)))} + function smic$2(smic_in) + {return smic_to_jsoo$0(smic$1(smic_in_of_jsoo$0(smic_in)))} + function calcul_aide_personnalisee_loge$19 + (calcul_aide_personnalisee_loge$0) + {return calcul_aide_personnalisee_loge$3 + (calcul_aide_personnalisee_loge + (calcul_aide_personnalisee_loge$12 + (calcul_aide_personnalisee_loge$0)))} + function calcul_aide_personnalisee_loge$20(calcul_aide_personnalisee_loge) + {return calcul_aide_personnalisee_loge$5 + (calcul_aide_personnalisee_loge$0 + (calcul_aide_personnalisee_loge$14 + (calcul_aide_personnalisee_loge)))} + function calcul_aide_personnalisee_loge$21(calcul_aide_personnalisee_loge) + {return calcul_aide_personnalisee_loge$7 + (calcul_aide_personnalisee_loge$1 + (calcul_aide_personnalisee_loge$16 + (calcul_aide_personnalisee_loge)))} + function eligibilite_aides_personnelle_$4 + (eligibilite_aides_personnelle_$1) + {return eligibilite_aides_personnelle_$0 + (eligibilite_aides_personnelle_ + (eligibilite_aides_personnelle_$3 + (eligibilite_aides_personnelle_$1)))} + function ressources_aides_personnelle_l$4 + (ressources_aides_personnelle_l$1) + {return ressources_aides_personnelle_l$0 + (ressources_aides_personnelle_l + (ressources_aides_personnelle_l$3 + (ressources_aides_personnelle_l$1)))} + function eligibilite_prestations_famili$4 + (eligibilite_prestations_famili$1) + {return eligibilite_prestations_famili$0 + (eligibilite_prestations_famili + (eligibilite_prestations_famili$3 + (eligibilite_prestations_famili$1)))} + function calcul_allocation_logement_loc$4 + (calcul_allocation_logement_loc$1) + {return calcul_allocation_logement_loc$0 + (calcul_allocation_logement_loc + (calcul_allocation_logement_loc$3 + (calcul_allocation_logement_loc$1)))} + function calcul_allocation_logement_foy$4 + (calcul_allocation_logement_foy$1) + {return calcul_allocation_logement_foy$0 + (calcul_allocation_logement_foy + (calcul_allocation_logement_foy$3 + (calcul_allocation_logement_foy$1)))} + function calcul_allocation_logement_acc$4 + (calcul_allocation_logement_acc$1) + {return calcul_allocation_logement_acc$0 + (calcul_allocation_logement_acc + (calcul_allocation_logement_acc$3 + (calcul_allocation_logement_acc$1)))} + function calcul_aide_personnalisee_loge$22(calcul_aide_personnalisee_loge) + {return calcul_aide_personnalisee_loge$9 + (calcul_aide_personnalisee_loge$2 + (calcul_aide_personnalisee_loge$18 + (calcul_aide_personnalisee_loge)))} + function eligibilite_prime_de_demenagem$4 + (eligibilite_prime_de_demenagem$1) + {return eligibilite_prime_de_demenagem$0 + (eligibilite_prime_de_demenagem + (eligibilite_prime_de_demenagem$3 + (eligibilite_prime_de_demenagem$1)))} + function eligibilite_aide_personnalisee$4 + (eligibilite_aide_personnalisee$1) + {return eligibilite_aide_personnalisee$0 + (eligibilite_aide_personnalisee + (eligibilite_aide_personnalisee$3 + (eligibilite_aide_personnalisee$1)))} + function eligibilite_allocation_logemen$4 + (eligibilite_allocation_logemen$1) + {return eligibilite_allocation_logemen$0 + (eligibilite_allocation_logemen + (eligibilite_allocation_logemen$3 + (eligibilite_allocation_logemen$1)))} + function calcul_allocation_logement$0(calcul_allocation_logement_in) + {return calcul_allocation_logement_to_ + (calcul_allocation_logement + (calcul_allocation_logement_in_$0 + (calcul_allocation_logement_in)))} + function calculette_aides_au_logement$0(calculette_aides_au_logement_i) + {return calculette_aides_au_logement_t + (calculette_aides_au_logement + (calculette_aides_au_logement_i$0 + (calculette_aides_au_logement_i)))} + function calculette_aides_au_logement_g$4 + (calculette_aides_au_logement_g$1) + {return calculette_aides_au_logement_g$0 + (calculette_aides_au_logement_g + (calculette_aides_au_logement_g$3 + (calculette_aides_au_logement_g$1)))} + function t927(param) + {return caml_js_wrap_callback(calculette_aides_au_logement_g$4)} + function t926(param) + {return caml_js_wrap_callback(calculette_aides_au_logement$0)} + function t925(param) + {return caml_js_wrap_callback(calcul_allocation_logement$0)} + function t924(param) + {return caml_js_wrap_callback(eligibilite_allocation_logemen$4)} + function t923(param) + {return caml_js_wrap_callback(eligibilite_aide_personnalisee$4)} + function t922(param) + {return caml_js_wrap_callback(eligibilite_prime_de_demenagem$4)} + function t921(param) + {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$22)} + function t920(param) + {return caml_js_wrap_callback(calcul_allocation_logement_acc$4)} + function t919(param) + {return caml_js_wrap_callback(calcul_allocation_logement_foy$4)} + function t918(param) + {return caml_js_wrap_callback(calcul_allocation_logement_loc$4)} + function t917(param) + {return caml_js_wrap_callback(eligibilite_prestations_famili$4)} + function t916(param) + {return caml_js_wrap_callback(ressources_aides_personnelle_l$4)} + function t915(param) + {return caml_js_wrap_callback(eligibilite_aides_personnelle_$4)} + function t914(param) + {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$21)} + function t913(param) + {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$20)} + function t912(param) + {return caml_js_wrap_callback(calcul_aide_personnalisee_loge$19)} + function t911(param){return caml_js_wrap_callback(smic$2)} + function t910(param) + {return caml_js_wrap_callback(base_mensuelle_allocations_fam$10)} + function t909(param) + {return caml_js_wrap_callback(impaye_depense_logement$0)} + function t908(param) + {return caml_js_wrap_callback(ouverture_droits_retraite$0)} + function t907(param) + {return caml_js_wrap_callback(calcul_nombre_parts_accession_$4)} + function t906(param) + {return caml_js_wrap_callback(calcul_nombre_part_logement_fo$4)} + function t905(param) + {return caml_js_wrap_callback(calcul_equivalence_loyer_minim$4)} + function t904(param) + {return caml_js_wrap_callback(contributions_sociales_aides_p$4)} + caml_call2 + (Js_of_ocaml_Js[46], + cst_AidesLogementLib, + {"contributionsSocialesAidesPersonnelleLogement": + caml_js_wrap_meth_callback(t904), + "calculEquivalenceLoyerMinimale":caml_js_wrap_meth_callback(t905), + "calculNombrePartLogementFoyer":caml_js_wrap_meth_callback(t906), + "calculNombrePartsAccessionPropriete":caml_js_wrap_meth_callback(t907), + "ouvertureDroitsRetraite":caml_js_wrap_meth_callback(t908), + "impayeDepenseLogement":caml_js_wrap_meth_callback(t909), + "baseMensuelleAllocationsFamiliales":caml_js_wrap_meth_callback(t910), + "smic":caml_js_wrap_meth_callback(t911), + "calculAidePersonnaliseeLogementLocatif": + caml_js_wrap_meth_callback(t912), + "calculAidePersonnaliseeLogementFoyer":caml_js_wrap_meth_callback(t913), + "calculAidePersonnaliseeLogementAccessionPropriete": + caml_js_wrap_meth_callback(t914), + "eligibiliteAidesPersonnelleLogement":caml_js_wrap_meth_callback(t915), + "ressourcesAidesPersonnelleLogement":caml_js_wrap_meth_callback(t916), + "eligibilitePrestationsFamiliales":caml_js_wrap_meth_callback(t917), + "calculAllocationLogementLocatif":caml_js_wrap_meth_callback(t918), + "calculAllocationLogementFoyer":caml_js_wrap_meth_callback(t919), + "calculAllocationLogementAccessionPropriete": + caml_js_wrap_meth_callback(t920), + "calculAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t921), + "eligibilitePrimeDeDemenagement":caml_js_wrap_meth_callback(t922), + "eligibiliteAidePersonnaliseeLogement":caml_js_wrap_meth_callback(t923), + "eligibiliteAllocationLogement":caml_js_wrap_meth_callback(t924), + "calculAllocationLogement":caml_js_wrap_meth_callback(t925), + "calculetteAidesAuLogement":caml_js_wrap_meth_callback(t926), + "calculetteAidesAuLogementGardeAlternee": + caml_js_wrap_meth_callback(t927)}); + var + Law_source_Aides_logement_api_= + [0, + type_pret_to_jsoo, + type_pret_of_jsoo, + titulaire_pret_to_jsoo, + titulaire_pret_of_jsoo, + type_travaux_logement_d832_15_, + type_travaux_logement_d832_15_$0, + type_travaux_logement_r842_5_t, + type_travaux_logement_r842_5_o, + ameliore_par_occupant_to_jsoo, + ameliore_par_occupant_of_jsoo, + limite_tranche_to_jsoo, + limite_tranche_of_jsoo, + limite_tranche_decimal_to_jsoo, + limite_tranche_decimal_of_jsoo, + prestation_recue_to_jsoo, + prestation_recue_of_jsoo, + parent_ou_autre_to_jsoo, + parent_ou_autre_of_jsoo, + situation_garde_alternee_to_js, + situation_garde_alternee_of_js, + parente_to_jsoo, + parente_of_jsoo, + date_de_naissance_ou_mois_de_g, + date_de_naissance_ou_mois_de_g$0, + zone_d_habitation_to_jsoo, + zone_d_habitation_of_jsoo, + paiement_logement_distinct_pro, + paiement_logement_distinct_pro$0, + versement_a_to_jsoo, + versement_a_of_jsoo, + depense_logement_to_jsoo, + depense_logement_of_jsoo, + mode_occupation_impaye_to_jsoo, + mode_occupation_impaye_of_jsoo, + type_eligibilite_allocation_lo, + type_eligibilite_allocation_lo$0, + type_aides_personnelle_logemen, + type_aides_personnelle_logemen$0, + situation_familiale_to_jsoo, + situation_familiale_of_jsoo, + prise_en_charge_to_jsoo$0, + prise_en_charge_of_jsoo$0, + type_logement_foyer_to_jsoo, + type_logement_foyer_of_jsoo, + categorie_equivalence_loyer_al, + categorie_equivalence_loyer_al$0, + situation_familiale_calcul_a_p, + situation_familiale_calcul_a_p$0, + collectivite_to_jsoo$0, + collectivite_of_jsoo$0, + prise_en_charge_enfant_to_jsoo, + prise_en_charge_enfant_of_jsoo, + situation_obligation_scolaire_$1, + situation_obligation_scolaire_$2, + element_prestations_familiales$1, + element_prestations_familiales$2, + convention_bailleur_social_to_, + convention_bailleur_social_of_, + convention_a_n_h_a_to_jsoo, + convention_a_n_h_a_of_jsoo, + personne_sous_location_to_jsoo, + personne_sous_location_of_jsoo, + patrimoine_to_jsoo, + patrimoine_of_jsoo, + conditions_etrangers_to_jsoo, + conditions_etrangers_of_jsoo, + personne_vivant_habituellement, + personne_vivant_habituellement$0, + eligibilite_aide_personnalisee$0, + eligibilite_aide_personnalisee$1, + eligibilite_prime_de_demenagem$0, + eligibilite_prime_de_demenagem$1, + ressources_aides_personnelle_l$0, + ressources_aides_personnelle_l$1, + contributions_sociales_aides_p$0, + contributions_sociales_aides_p$1, + calcul_aide_personnalisee_loge$3, + calcul_aide_personnalisee_loge$4, + calcul_equivalence_loyer_minim$0, + calcul_equivalence_loyer_minim$1, + calcul_nombre_part_logement_fo$0, + calcul_nombre_part_logement_fo$1, + calcul_aide_personnalisee_loge$5, + calcul_aide_personnalisee_loge$6, + calcul_nombre_parts_accession_$0, + calcul_nombre_parts_accession_$1, + calcul_aide_personnalisee_loge$7, + calcul_aide_personnalisee_loge$8, + traitement_formule_aide_finale, + traitement_formule_aide_finale$0, + calcul_aide_personnalisee_loge$9, + calcul_aide_personnalisee_loge$10, + infos_changement_logement_d842, + infos_changement_logement_d842$0, + calcul_allocation_logement_loc$0, + calcul_allocation_logement_loc$1, + calcul_allocation_logement_acc$0, + calcul_allocation_logement_acc$1, + calcul_allocation_logement_foy$0, + calcul_allocation_logement_foy$1, + calcul_allocation_logement_to_, + calcul_allocation_logement_of_, + ouverture_droits_retraite_to_j, + ouverture_droits_retraite_of_j, + impaye_depense_logement_to_jso, + impaye_depense_logement_of_jso, + calculette_aides_au_logement_t, + calculette_aides_au_logement_o, + calculette_aides_au_logement_g$0, + calculette_aides_au_logement_g$1, + base_mensuelle_allocations_fam$6, + base_mensuelle_allocations_fam$7, + smic_to_jsoo$0, + smic_of_jsoo$0, + pret_to_jsoo, + pret_of_jsoo, + neuf_ou_ancien_to_jsoo, + neuf_ou_ancien_of_jsoo, + tranche_revenu_to_jsoo, + tranche_revenu_of_jsoo, + tranche_revenu_decimal_to_jsoo, + tranche_revenu_decimal_of_jsoo, + autre_personne_a_charge_to_jso, + autre_personne_a_charge_of_jso, + date_naissance_troisieme_ou_de, + date_naissance_troisieme_ou_de$0, + eligibilite_allocation_logemen$0, + eligibilite_allocation_logemen$1, + logement_foyer_to_jsoo, + logement_foyer_of_jsoo, + enfant_prestations_familiales_, + enfant_prestations_familiales_$0, + enfant_a_charge_to_jsoo, + enfant_a_charge_of_jsoo, + type_bailleur_to_jsoo, + type_bailleur_of_jsoo, + loue_ou_sous_loue_a_des_tiers_, + loue_ou_sous_loue_a_des_tiers_$0, + nationalite_to_jsoo, + nationalite_of_jsoo, + changement_logement_d842_4_to_, + changement_logement_d842_4_of_, + proprietaire_to_jsoo, + proprietaire_of_jsoo, + informations_prime_de_demenage, + informations_prime_de_demenage$0, + eligibilite_prestations_famili$0, + eligibilite_prestations_famili$1, + personne_a_charge_to_jsoo, + personne_a_charge_of_jsoo, + demandeur_to_jsoo, + demandeur_of_jsoo, + location_to_jsoo, + location_of_jsoo, + eligibilite_aides_personnelle_$0, + eligibilite_aides_personnelle_$1, + categorie_calcul_a_p_l_to_jsoo, + categorie_calcul_a_p_l_of_jsoo, + mode_occupation_to_jsoo, + mode_occupation_of_jsoo, + logement_to_jsoo, + logement_of_jsoo, + menage_to_jsoo, + menage_of_jsoo, + eligibilite_aides_personnelle_$2, + eligibilite_aides_personnelle_$3, + eligibilite_aide_personnalisee$2, + eligibilite_aide_personnalisee$3, + eligibilite_allocation_logemen$2, + eligibilite_allocation_logemen$3, + eligibilite_prime_de_demenagem$2, + eligibilite_prime_de_demenagem$3, + ressources_aides_personnelle_l$2, + ressources_aides_personnelle_l$3, + contributions_sociales_aides_p$2, + contributions_sociales_aides_p$3, + calcul_aide_personnalisee_loge$11, + calcul_aide_personnalisee_loge$12, + calcul_equivalence_loyer_minim$2, + calcul_equivalence_loyer_minim$3, + calcul_nombre_part_logement_fo$2, + calcul_nombre_part_logement_fo$3, + calcul_aide_personnalisee_loge$13, + calcul_aide_personnalisee_loge$14, + calcul_nombre_parts_accession_$2, + calcul_nombre_parts_accession_$3, + calcul_aide_personnalisee_loge$15, + calcul_aide_personnalisee_loge$16, + calcul_aide_personnalisee_loge$17, + calcul_aide_personnalisee_loge$18, + calcul_allocation_logement_loc$2, + calcul_allocation_logement_loc$3, + calcul_allocation_logement_acc$2, + calcul_allocation_logement_acc$3, + calcul_allocation_logement_foy$2, + calcul_allocation_logement_foy$3, + calcul_allocation_logement_in_, + calcul_allocation_logement_in_$0, + ouverture_droits_retraite_in_t, + ouverture_droits_retraite_in_o, + impaye_depense_logement_in_to_, + impaye_depense_logement_in_of_, + calculette_aides_au_logement_i, + calculette_aides_au_logement_i$0, + calculette_aides_au_logement_g$2, + calculette_aides_au_logement_g$3, + base_mensuelle_allocations_fam$8, + base_mensuelle_allocations_fam$9, + smic_in_to_jsoo$0, + smic_in_of_jsoo$0, + eligibilite_prestations_famili$2, + eligibilite_prestations_famili$3, + contributions_sociales_aides_p$4, + calcul_equivalence_loyer_minim$4, + calcul_nombre_part_logement_fo$4, + calcul_nombre_parts_accession_$4, + ouverture_droits_retraite$0, + impaye_depense_logement$0, + base_mensuelle_allocations_fam$10, + smic$2, + calcul_aide_personnalisee_loge$19, + calcul_aide_personnalisee_loge$20, + calcul_aide_personnalisee_loge$21, + eligibilite_aides_personnelle_$4, + ressources_aides_personnelle_l$4, + eligibilite_prestations_famili$4, + calcul_allocation_logement_loc$4, + calcul_allocation_logement_foy$4, + calcul_allocation_logement_acc$4, + calcul_aide_personnalisee_loge$22, + eligibilite_prime_de_demenagem$4, + eligibilite_aide_personnalisee$4, + eligibilite_allocation_logemen$4, + calcul_allocation_logement$0, + calculette_aides_au_logement$0, + calculette_aides_au_logement_g$4]; + caml_register_global + (8577, + Law_source_Aides_logement_api_, + "Law_source__Aides_logement_api_web"); + return} + (globalThis)); + + +//# 1 ".api_web.eobjs/byte/dune__exe__Api_web.cmo.js" +(function(globalThis) + {"use strict"; + var + runtime=globalThis.jsoo_runtime, + caml_js_wrap_callback=runtime.caml_js_wrap_callback, + caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + var + global_data=runtime.caml_get_global_data(), + Law_source_Allocations_familia= + global_data.Law_source__Allocations_familiales_api_web, + Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, + Law_source_Aides_logement_api_= + global_data.Law_source__Aides_logement_api_web, + Js_of_ocaml_Js=global_data.Js_of_ocaml__Js; + function t4(param) + {return caml_js_wrap_callback + (function(calculette_aides_au_logement_g) + {function _b_(param) + {var + t1= + caml_call1 + (Law_source_Aides_logement_api_[236], + calculette_aides_au_logement_g); + return t1.aideFinale} + return caml_call1(Runtime_jsoo_Runtime[6],_b_)})} + function t3(param) + {return caml_js_wrap_callback + (function(interface_allocations_familial) + {function _a_(param) + {var + t0= + caml_call1 + (Law_source_Allocations_familia[51], + interface_allocations_familial); + return t0.iMontantVerse} + return caml_call1(Runtime_jsoo_Runtime[6],_a_)})} + caml_call1 + (Js_of_ocaml_Js[47], + {"eventsManager":Runtime_jsoo_Runtime[1], + "computeAllocationsFamiliales":caml_js_wrap_meth_callback(t3), + "computeAidesAuLogement":caml_js_wrap_meth_callback(t4)}); + var Dune_exe_Api_web=[0]; + runtime.caml_register_global(12,Dune_exe_Api_web,"Dune__exe__Api_web"); + return} + (globalThis)); + + +//# 1 "../../.js/stdlib/std_exit.cmo.js" +(function(globalThis) + {"use strict"; + var runtime=globalThis.jsoo_runtime; + function caml_call1(f,a0) + {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} + var global_data=runtime.caml_get_global_data(),Stdlib=global_data.Stdlib; + caml_call1(Stdlib[103],0); + var Std_exit=[0]; + runtime.caml_register_global(1,Std_exit,"Std_exit"); + return} + (globalThis)); + + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsIm1sX3pfY29uZ3J1ZW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJtbF96X2FicyIsImNhbWxfc3lzX2NvbnN0X2ludF9zaXplIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwibWxfel9zcXJ0IiwidW5peF9sb2NhbHRpbWUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJtbF96X2x1Y251bSIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsIm1sX3pfcHJvYmFiX3ByaW1lIiwidW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJtbF96X3JlbSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsIm1sX3pfbXVsX292ZXJmbG93cyIsIm1sX3pfdG9faW50IiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJtbF96X2ZhYyIsImNhbWxfcmFpc2VfZW5kX29mX2ZpbGUiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsIm1sX3pfZmFjMiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJtbF96X2JpbiIsImNvZWZmIiwiY2FtbF9zdGRfb3V0cHV0Iiwic2xlbiIsImpzX3ByaW50X3N0ZGVyciIsImNhbWxfc3lzX29wZW5faW50ZXJuYWwiLCJpZHgiLCJpbmZvIiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIl9tYWdpYyIsIl9ibG9ja19sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJtbF96X211bCIsIm1sX3pfaGFtZGlzdCIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsInJlX3NlYXJjaF9iYWNrd2FyZCIsIm1sX3pfbG9nYW5kIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJtdWwiLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJ0YSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWQ1X2NoYW4iLCJjaGFuX2xlbiIsImNhbWxfb2JqX2R1cCIsImNhbWxfd2Vha19nZXRfY29weSIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsInN0cmluZyIsImpzc3RyaW5nIiwiaWQiLCJjYW1sX21sX291dHB1dCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX2ludDY0X211bCIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwibWxfel9zdWIiLCJtbF96X2ZkaXYiLCJtbF96X3RvX2JpdHMiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfZXZlbnRsb2dfcmVzdW1lIiwiY2FtbF9oYXNoX3VuaXZfcGFyYW0iLCJjb3VudCIsImxpbWl0Iiwib2JqIiwiaGFzaF9hY2N1IiwiaGFzaF9hdXgiLCJqc2J5dGVzIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJtbF96X2RpdmV4YWN0IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIiwicmVfcmVwbGFjZW1lbnRfdGV4dCIsInJlcGwiLCJvcmlnIiwiY3VyIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJibGl0X25hdCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwiYnl0ZXMyIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF90b19qc19zdHJpbmciLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJyZV9zZWFyY2hfZm9yd2FyZCIsImNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF96YXJpdGhfbWFyc2hhbCIsImJsb2NrIiwiY2FtbF9lcGhlX2JsaXRfZGF0YSIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMiIsIndpbl9oYW5kbGVfZmQiLCJjYW1sX2JhX3VpbnQ4X3NldDE2Iiwid2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2ludF9vZl9zdHJpbmciLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJwcmV2IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfanNfZXF1YWxzIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN0eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwiZ2V0MzIiLCJjYW1sX2lucHV0X3ZhbHVlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwibWxfel9pbnZlcnQiLCJtbF96X3Bvd20iLCJ6MyIsImludiIsIm1sX3pfcG93bV9zZWMiLCJjYW1sX2pzX3B1cmVfZXhwciIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJ1bml4X2dtdGltZSIsImNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSIsImNhbWxfc3lzX2dldF9jb25maWciLCJ1bml4X3RpbWUiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsIm1sX3pfaGFzaCIsImFjYyIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwibWxfel9lcXVhbCIsIm1sX3pfZml0c19pbnQ2NCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZyIsIm1sX3pfc3FydF9yZW0iLCJkaWZmIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJtbF96X3BlcmZlY3Rfc3F1YXJlIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJmcyIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwibWxfel9vZl9iaXRzIiwiYmFzZTEiLCJ1bml4X3N0YXQiLCJ1bml4X3N0YXRfNjQiLCJjYW1sX29qc19uZXdfYXJyIiwiRiIsImNvbXBsZW1lbnRfbmF0IiwibWxfel9sb2d4b3IiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfemFyaXRoX3VubWFyc2hhbCIsIm5lZ2F0ZSIsIm1sX3pfdHJhaWxpbmdfemVyb3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIiwibGFuZF9kaWdpdF9uYXQiLCJjYW1sX2ludDY0X21vZCIsInVuaXhfcmVhZGxpbmsiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsIndpbl9zdGFydHVwIiwiY2FtbF9iYV9zZXRfMyIsIm1sX3pfamFjb2JpIiwibjEiLCJtbF96X2xlZ2VuZHJlIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX3dlYWtfYmxpdCIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZm1hX2Zsb2F0IiwiU1BMSVQiLCJNSU5fVkFMVUUiLCJFUFNJTE9OIiwiQyIsIkEiLCJCIiwibXVsdGlwbHkiLCJhdCIsImFoaSIsImFsbyIsImJoaSIsImJsbyIsImFkanVzdCIsInNjYWxlIiwieHMiLCJ5cyIsInpzIiwieHkiLCJ1IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfZXBoZV91bnNldF9kYXRhIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwibWxfel90b19pbnQzMiIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsImNhbWxfY2hlY2tfYm91bmQiLCJ1bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2giLCJzZWVkIiwicXVldWUiLCJyZCIsIndyIiwiY2FtbF9vYmpfdGFnIiwiRnVuY3Rpb24iLCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInJldl9zb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInNvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wX2RhdGEiLCJkdW1wIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJ0cmFucyIsInJlc3QyIiwicmVzdDIkMCIsInJlc3QyJDEiLCJyZXN0MiQyIiwicmVzdDIkMyIsInJlc3QyJDQiLCJyZXN0MiQ1IiwicmVzdDIkNiIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImZtdHR5X3JlbF9kZXQiLCJmNCIsImYyIiwicmVzdDIkOSIsInJlc3QyJDEwIiwicmVzdDIkMTEiLCJyZXN0MiQxMiIsInJlc3QyJDEzIiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpIiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViX2ZtdHR5X3Jlc3QkMCIsImZtdHR5X3Jlc3QkMCIsInN1Yl9mbXR0eV9yZXN0JDEiLCJzdWJfZm10dHlfcmVzdCQyIiwiZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMyIsImZtdCQyIiwic3ViX2ZtdHR5X3Jlc3QkNCIsImZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDUiLCJmbXQkMyIsInN1Yl9mbXR0eV9yZXN0JDYiLCJmbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ3IiwiZm10JDQiLCJzdWJfZm10dHlfcmVzdCQ4IiwiZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOSIsImZtdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJmbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQxMSIsImZtdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJmbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQxMyIsImZtdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkMTQiLCJmbXR0eV9yZXN0JDciLCJzdWIyX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTUiLCJzdWIyX2ZtdHR5JDAiLCJmbXQkOCIsInN1Yl9mbXR0eV9yZXN0JDE2IiwiZm10dHlfcmVzdCQ4Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwiZm10JDkiLCJzdWJfZm10dHlfcmVzdCQxOCIsImZtdHR5X3Jlc3QkOSIsInN1Yl9mbXR0eV9yZXN0JDE5IiwiZm10JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJmbXQkMTEiLCJzdWJfZm10dHlfcmVzdCQyMiIsImZtdHR5X3Jlc3QkMTEiLCJzdWJfZm10dHlfcmVzdCQyMyIsImZtdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI0IiwiZm10dHlfcmVzdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI1IiwiZm10JDEzIiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJmbXRfcmVzdCIsImZtdF9yZXN0JDAiLCJmbXRfcmVzdCQxIiwiZm10X3Jlc3QkMiIsImZtdF9yZXN0JDMiLCJmbXRfcmVzdCQ0IiwiZm10X3Jlc3QkNSIsInByZWMkNCIsImZtdHR5JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdF9yZXN0JDciLCJwcmVjJDciLCJwcmVjJDgiLCJmbXR0eSQ4IiwiZm10X3Jlc3QkOCIsImZtdHR5JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdHR5JDE0IiwiZm10JDE0IiwiZm10X3Jlc3QkMTQiLCJmbXR0eSQxNSIsImZtdCQxNSIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsImZtdHR5X3Jlc3QkMTYiLCJmbXR0eSQyMSIsImZtdCQyMSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJmbXR0eSQyMiIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwidHlwZV9mb3JtYXQiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZV9wb3NpdGl2ZSIsInN0cl9pbmQkMCIsInN0cl9pbmQkMSIsInBhcnNlX2ludGVnZXIiLCJuZXh0X2luZCIsImluY29tcGF0aWJsZV9mbGFnIiwicGN0X2luZCIsIm9wdGlvbiIsInN1YmZtdCIsImNvbXB1dGVfaW50X2NvbnYiLCJwbHVzIiwic3BhY2UiLCJwbHVzJDAiLCJzcGFjZSQwIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZW5kIiwic3RyX2luZCQyIiwic3ViX2VuZCQwIiwic3RyX2luZCQzIiwic3ViX2VuZCQxIiwic3RyX2luZCQ0Iiwic3RyX2luZCQ1Iiwic3ViX2VuZCQyIiwic3RyX2luZCQ2Iiwic3RyX2luZCQ3IiwicGFyc2VfbWFnaWNfc2l6ZSIsInN0cl9pbmRfMSIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsInBhcnNlIiwicGFyc2VfZ29vZF9icmVhayIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJwYXJzZV90YWciLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm10Iiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInBhcnNlX2ZsYWdzIiwibWludXMiLCJzZXRfZmxhZyIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsIm1pbnVzJDAiLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImNoZWNrX25vXzAiLCJvcHRfb2ZfcGFkIiwid2lkdGgkMSIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwicGFkJDkiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsInBhZCQxMCIsImZtdF9yZXN0JDI1Iiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQxIiwiaWduJDAiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiY29tbWVudCIsImVzY2FwZSIsImVuZF9leHBvbmVudF9wYXJ0IiwiZXhwb25lbnRfcGFydCIsIm51bWJlciIsImlkZW50MiIsIm5lZ19udW1iZXIiLCJuZXh0X3Rva2VuJDAiLCJtYXliZV9jb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsInlvanNvbl9vZl9zb3VyY2VfcG9zaXRpb24iLCJ2X2xhd19oZWFkaW5ncyIsInZfZW5kX2NvbHVtbiIsInZfZW5kX2xpbmUiLCJ2X3N0YXJ0X2NvbHVtbiIsInZfc3RhcnRfbGluZSIsInZfZmlsZW5hbWUiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJhcmckNCIsImJuZHMkNCIsIm1vbmV5X29mX2NlbnRzX3N0cmluZyIsImNlbnRzIiwibW9uZXlfb2ZfdW5pdHNfaW50IiwidW5pdHMiLCJtb25leV9vZl9jZW50c19pbnRlZ2VyIiwibW9uZXlfdG9fZmxvYXQiLCJtIiwibW9uZXlfb2ZfZGVjaW1hbCIsImQiLCJtb25leV90b19zdHJpbmciLCJtb25leV90b19jZW50cyIsIm1vbmV5X3JvdW5kIiwiZGVjaW1hbF9vZl9zdHJpbmciLCJkZWNpbWFsX3RvX2Zsb2F0IiwiZGVjaW1hbF9vZl9mbG9hdCIsImRlY2ltYWxfb2ZfaW50ZWdlciIsImRlY2ltYWxfdG9fc3RyaW5nIiwibWF4X3ByZWNfZGlnaXRzIiwiaSIsInNpZ24iLCJuIiwiaW50X3BhcnQiLCJuJDAiLCJkaWdpdHMiLCJsZWFkaW5nX3plcm9lcyIsImRpZ2l0IiwibnVtX2xlYWRpbmdfemVyb2VzIiwiaSQwIiwiZm10IiwiZGVjaW1hbF9yb3VuZCIsInEiLCJkZWNpbWFsX29mX21vbmV5IiwiaW50ZWdlcl9vZl9zdHJpbmciLCJzIiwiaW50ZWdlcl90b19zdHJpbmciLCJpbnRlZ2VyX3RvX2ludCIsImludGVnZXJfb2ZfaW50IiwiaW50ZWdlcl9leHBvbmVudGlhdGlvbiIsImUiLCJpbnRlZ2VyX2xvZzIiLCJ5ZWFyX29mX2RhdGUiLCJ5IiwibW9udGhfbnVtYmVyX29mX2RhdGUiLCJpc19sZWFwX3llYXIiLCJ5JDAiLCJkYXlfb2ZfbW9udGhfb2ZfZGF0ZSIsImQkMCIsImRhdGVfb2ZfbnVtYmVycyIsInllYXIiLCJtb250aCIsImRheSIsImRhdGVfdG9fc3RyaW5nIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkdXJhdGlvbl9vZl9udW1iZXJzIiwiZHVyYXRpb25fdG9fc3RyaW5nIiwiZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMiLCJ5b2pzb25fb2ZfcnVudGltZV92YWx1ZSIsInYwJDQiLCJ2MCQ1IiwidjAkNiIsInYwIiwidjAkNyIsInYwJDAiLCJ2MCQ4IiwidjAkMSIsInYwJDkiLCJ2MCQyIiwidjAkMTAiLCJ2MCQzIiwidjEiLCJ2MCQxMSIsInYwJDEyIiwidjEkMCIsInYwJDEzIiwidjAkMTQiLCJ2MSQxIiwidjEkMiIsInYxJDMiLCJ2MCQxNSIsInYwJDE2IiwidjEkNCIsInYwJDE3IiwidjAkMTgiLCJ1bmVtYmVkZGFibGUiLCJlbWJlZF91bml0IiwiZW1iZWRfYm9vbCIsIngiLCJlbWJlZF9tb25leSIsImVtYmVkX2ludGVnZXIiLCJlbWJlZF9kZWNpbWFsIiwiZW1iZWRfZGF0ZSIsImVtYmVkX2R1cmF0aW9uIiwiZW1iZWRfYXJyYXkiLCJmIiwieW9qc29uX29mX2luZm9ybWF0aW9uIiwidiIsInlvanNvbl9vZl92YXJfZGVmIiwidl9mdW5fY2FsbHMiLCJ2X3ZhbHVlIiwidl9uYW1lIiwidl9wb3MiLCJ5b2pzb25fb2ZfZnVuX2NhbGwiLCJ2X291dHB1dCIsInZfYm9keSIsInZfZnVuX2lucHV0cyIsInZfZnVuX25hbWUiLCJ5b2pzb25fb2ZfZXZlbnQiLCJ2X2lucHV0cyIsImxvZ19yZWYiLCJyZXNldF9sb2ciLCJyZXRyaWV2ZV9sb2ciLCJsb2dfYmVnaW5fY2FsbCIsImluZm8iLCJsb2dfZW5kX2NhbGwiLCJsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiIsImVtYmVkIiwibG9nX2RlY2lzaW9uX3Rha2VuIiwicG9zIiwicHBfZXZlbnRzIiwib3B0IiwicHBmIiwiZXZlbnRzIiwic3RoIiwiaXNfZmlyc3RfY2FsbCIsImZvcm1hdF92YXJfZGVmIiwidmFyJDAiLCJmb3JtYXRfcG9zX29wdCIsImZvcm1hdF92YWx1ZSIsImZvcm1hdF92YXJfZGVmcyIsImZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIiwidmFyX3dpdGhfZnVuIiwiZnVuX2NhbGwiLCJmb3JtYXRfZXZlbnQiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJuYW1lIiwiYXR0cnMiLCJuYW1lJDAiLCJ2YWx1ZSIsImVsdHMiLCJ2YXJfZGVmX3dpdGhfZnVuIiwib3V0cHV0IiwiYm9keSIsImZ1bl9pbnB1dHMiLCJmdW5fbmFtZSIsImJvZHkkMCIsImlucHV0cyIsImVtcHR5IiwiZW1wdHlfY3R4IiwicmF3X2V2ZW50X3RvX3N0cmluZyIsIm5hbWUkMSIsInRha2Vfd2hpbGUiLCJwIiwibCIsInQiLCJoIiwicmVzdCIsInQkMCIsInBhcnNlX3Jhd19ldmVudHMiLCJyYXdfZXZlbnRzIiwibmJfcmF3X2V2ZW50cyIsImlzX2Z1bmN0aW9uX2NhbGwiLCJpbmZvcyIsImlzX3Zhcl9kZWYiLCJwYXJzZV9mdW5fY2FsbCIsImJvZHlfY3R4IiwicGFyc2VfZXZlbnRzIiwiYm9keV9yZXYiLCJyZXN0JDAiLCJ2YXJfZGVmIiwib3V0cHV0JDAiLCJjdHgiLCJjdHgkMCIsInZhcl9uYW1lIiwibHMkMCIsImN0eCQxIiwicmVzdCQxIiwiY3R4JDIiLCJpbmZvcyQwIiwicmVzdCQyIiwiY3R4JDMiLCJyZXN0JDMiLCJ2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lIiwibHMiLCJjdHgkNCIsImluZm9zJDEiLCJyYXdfZXZlbnRzJDAiLCJmdW5fY2FsbHMiLCJyZXN0JDQiLCJpbmZvcyQyIiwiZnVuX2NhbGwkMCIsImZ1bl9jYWxscyQwIiwiZnVuX2NhbGxzJDEiLCJyZXN0JDYiLCJ2YWx1ZSQwIiwibmFtZSQyIiwidmFyX2NvbXAiLCJyZXN0JDUiLCJjdHgkNiIsImN0eCQ1IiwibXNnIiwiaGFuZGxlX2RlZmF1bHQiLCJleGNlcHRpb25zIiwianVzdCIsImNvbnMiLCJhY2MiLCJleGNlcHQiLCJuZXdfdmFsIiwiaGFuZGxlX2RlZmF1bHRfb3B0IiwiYiIsIm5vX2lucHV0IiwiY29tcGFyZV9wZXJpb2RzIiwicDEiLCJwMiIsInAxX2RheXMiLCJwMl9kYXlzIiwiZXF1YWxfcGVyaW9kcyIsIm9fbm90Iiwib19sZW5ndGgiLCJhIiwib19taW51c19pbnQiLCJpMSIsIm9fbWludXNfcmF0Iiwib19taW51c19tb24iLCJtMSIsIm9fbWludXNfZHVyIiwib19hbmQiLCJvX29yIiwib194b3IiLCJvX2VxIiwib19tYXAiLCJvX3JlZHVjZSIsImRmdCIsImxlbiIsInIiLCJvX2NvbmNhdCIsIm9fZmlsdGVyIiwib19hZGRfaW50X2ludCIsImkyIiwib19hZGRfcmF0X3JhdCIsIm9fYWRkX21vbl9tb24iLCJtMiIsIm9fYWRkX2RhdF9kdXIiLCJkYSIsImR1Iiwib19hZGRfZHVyX2R1ciIsIm9fc3ViX2ludF9pbnQiLCJvX3N1Yl9yYXRfcmF0Iiwib19zdWJfbW9uX21vbiIsIm9fc3ViX2RhdF9kYXQiLCJvX3N1Yl9kYXRfZHVyIiwiZGF0IiwiZHVyIiwib19zdWJfZHVyX2R1ciIsIm9fbXVsdF9pbnRfaW50Iiwib19tdWx0X3JhdF9yYXQiLCJvX211bHRfbW9uX3JhdCIsImkxX2FicyIsImkyX2FicyIsInNpZ25faW50IiwicmF0X3Jlc3VsdCIsInJlbWFpbmRlciIsInJlcyIsIm9fbXVsdF9kdXJfaW50Iiwib19kaXZfaW50X2ludCIsIm9fZGl2X3JhdF9yYXQiLCJvX2Rpdl9tb25fbW9uIiwib19kaXZfbW9uX3JhdCIsInIxIiwib19kaXZfZHVyX2R1ciIsImQxIiwiZDIiLCJvX2x0X2ludF9pbnQiLCJvX2x0X3JhdF9yYXQiLCJvX2x0X21vbl9tb24iLCJvX2x0X2R1cl9kdXIiLCJvX2x0X2RhdF9kYXQiLCJvX2x0ZV9pbnRfaW50Iiwib19sdGVfcmF0X3JhdCIsIm9fbHRlX21vbl9tb24iLCJvX2x0ZV9kdXJfZHVyIiwib19sdGVfZGF0X2RhdCIsIm9fZ3RfaW50X2ludCIsIm9fZ3RfcmF0X3JhdCIsIm9fZ3RfbW9uX21vbiIsIm9fZ3RfZHVyX2R1ciIsIm9fZ3RfZGF0X2RhdCIsIm9fZ3RlX2ludF9pbnQiLCJvX2d0ZV9yYXRfcmF0Iiwib19ndGVfbW9uX21vbiIsIm9fZ3RlX2R1cl9kdXIiLCJvX2d0ZV9kYXRfZGF0Iiwib19lcV9pbnRfaW50Iiwib19lcV9yYXRfcmF0Iiwib19lcV9tb25fbW9uIiwib19lcV9kdXJfZHVyIiwib19lcV9kYXRfZGF0Iiwib19mb2xkIiwib19ub3QkMCIsIm9fbGVuZ3RoJDAiLCJvX3RvcmF0X2ludCIsIm9fdG9yYXRfbW9uIiwib190b21vbmV5X3JhdCIsIm9fZ2V0RGF5Iiwib19nZXRNb250aCIsIm9fZ2V0WWVhciIsIm9fZmlyc3REYXlPZk1vbnRoIiwib19sYXN0RGF5T2ZNb250aCIsIm9fcm91bmRfbW9uIiwib19yb3VuZF9yYXQiLCJvX21pbnVzX2ludCQwIiwib19taW51c19yYXQkMCIsIm9fbWludXNfbW9uJDAiLCJvX21pbnVzX2R1ciQwIiwib19hbmQkMCIsIm9fb3IkMCIsIm9feG9yJDAiLCJvX2VxJDAiLCJvX21hcCQwIiwib19yZWR1Y2UkMCIsIm9fY29uY2F0JDAiLCJvX2ZpbHRlciQwIiwib19hZGRfaW50X2ludCQwIiwib19hZGRfcmF0X3JhdCQwIiwib19hZGRfbW9uX21vbiQwIiwib19hZGRfZGF0X2R1ciQwIiwib19hZGRfZHVyX2R1ciQwIiwib19zdWJfaW50X2ludCQwIiwib19zdWJfcmF0X3JhdCQwIiwib19zdWJfbW9uX21vbiQwIiwib19zdWJfZGF0X2RhdCQwIiwib19zdWJfZGF0X2R1ciQwIiwib19zdWJfZHVyX2R1ciQwIiwib19tdWx0X2ludF9pbnQkMCIsIm9fbXVsdF9yYXRfcmF0JDAiLCJvX211bHRfbW9uX3JhdCQwIiwib19tdWx0X2R1cl9pbnQkMCIsIm9fZGl2X2ludF9pbnQkMCIsIm9fZGl2X3JhdF9yYXQkMCIsIm9fZGl2X21vbl9tb24kMCIsIm9fZGl2X21vbl9yYXQkMCIsIm9fZGl2X2R1cl9kdXIkMCIsIm9fbHRfaW50X2ludCQwIiwib19sdF9yYXRfcmF0JDAiLCJvX2x0X21vbl9tb24kMCIsIm9fbHRfZHVyX2R1ciQwIiwib19sdF9kYXRfZGF0JDAiLCJvX2x0ZV9pbnRfaW50JDAiLCJvX2x0ZV9yYXRfcmF0JDAiLCJvX2x0ZV9tb25fbW9uJDAiLCJvX2x0ZV9kdXJfZHVyJDAiLCJvX2x0ZV9kYXRfZGF0JDAiLCJvX2d0X2ludF9pbnQkMCIsIm9fZ3RfcmF0X3JhdCQwIiwib19ndF9tb25fbW9uJDAiLCJvX2d0X2R1cl9kdXIkMCIsIm9fZ3RfZGF0X2RhdCQwIiwib19ndGVfaW50X2ludCQwIiwib19ndGVfcmF0X3JhdCQwIiwib19ndGVfbW9uX21vbiQwIiwib19ndGVfZHVyX2R1ciQwIiwib19ndGVfZGF0X2RhdCQwIiwib19lcV9pbnRfaW50JDAiLCJvX2VxX3JhdF9yYXQkMCIsIm9fZXFfbW9uX21vbiQwIiwib19lcV9kdXJfZHVyJDAiLCJvX2VxX2RhdF9kYXQkMCIsIm9fZm9sZCQwIiwiZXhuIiwibW9kdWxlIiwiZ2xvYmFsVGhpcyIsIm51bGwiLCJ1bmRlZmluZWQiLCJqc29vX2V4cG9ydHMiLCJldmVudCIsImR1cmF0aW9uX29mX2pzb28iLCJkIiwiZHVyYXRpb25fdG9fanNvbyIsImRheXMiLCJtb250aHMiLCJ5ZWFycyIsImRhdGVfb2ZfanNvbyIsImQkMCIsImQkMSIsImRheSIsIm1vbnRoIiwieWVhciIsImRhdGVfdG9fanNvbyIsImV2dCIsInBvcyIsInYiLCJpbmZvIiwiZXZlbnQiLCJldmVudF9tYW5hZ2VyIiwiZXhlY3V0ZV9vcl90aHJvd19lcnJvciIsImYiLCJ0aHJvd19lcnJvciIsImRlc2NyIiwicG9zJDAiLCJwb3MkMSIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZSIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28iLCJlbWJlZF9wcmlzZV9lbl9jb21wdGUiLCJlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWkiLCJ4JDUiLCJ4JDYiLCJ4JDciLCJlbWJlZF9jb2xsZWN0aXZpdGUiLCJ4JDgiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYiLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfc21pYyIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSIsImVtYmVkX2VuZmFudF9lbnRyZWUiLCJlbWJlZF9lbmZhbnQiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2UiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pIiwiZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2JDAiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF9zbWljX2luIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDAiLCJlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmEkMCIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCIsImFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyIsImVuZmFudF9sZV9wbHVzX2FnZSIsImVuZmFudF9sZV9wbHVzX2FnZV9pbiIsImVuZmFudHMiLCJwb3RlbnRpZWxfcGx1c19hZ2VfMSIsInBvdGVudGllbF9wbHVzX2FnZV8yIiwibGVfcGx1c19hZ2UiLCJzbWljIiwic21pY19pbiIsImRhdGVfY291cmFudGUiLCJyZXNpZGVuY2UiLCJicnV0X2hvcmFpcmUiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0iLCJtb250YW50IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4iLCJhZ2VfbDUxMl8zXzIiLCJzbWljX2RvdF9kYXRlX2NvdXJhbnRlIiwic21pY19kb3RfcmVzaWRlbmNlIiwicmVzdWx0Iiwic21pY19kb3RfYnJ1dF9ob3JhaXJlIiwicmVnaW1lX291dHJlX21lcl9sNzUxXzEiLCJwbGFmb25kX2w1MTJfM18yIiwiZW5mYW50IiwiY29uZGl0aW9uc19ob3JzX2FnZSIsImRyb2l0X291dmVydCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIiwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtIiwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtJDAiLCJyZXNzb3VyY2VzX21lbmFnZSIsImVuZmFudHNfYV9jaGFyZ2UiLCJhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWUiLCJwcmlzZV9lbl9jb21wdGUiLCJub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzMiLCJ2ZXJzaW9uX2F2cmlsXzIwMDhfZG90X2FnZV9taW4iLCJibWFmX2RvdF9kYXRlX2NvdXJhbnRlIiwicmVzdWx0JDAiLCJibWFmX2RvdF9tb250YW50IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcHJlIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzIiwicmVzdWx0JDEiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm8iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb24iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2UiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWciLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2VuZmFudHMiLCJyZXN1bHQkMiIsImVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1cyIsImVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0XyIsImVzdF9lbmZhbnRfbGVfcGx1c19hZ2UiLCJwbGFmb25kX2lfaV9kNTIxXzMiLCJwbGFmb25kX2lfZDUyMV8zIiwiZHJvaXRfb3V2ZXJ0X2NvbXBsZW1lbnQiLCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmUiLCJtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmllbWUiLCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWUiLCJub21icmVfdG90YWxfZW5mYW50cyIsInN1bTEiLCJzdW0yIiwibm9tYnJlX21veWVuX2VuZmFudHMiLCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2UiLCJkcm9pdF9vdXZlcnRfYmFzZSIsImRyb2l0X291dmVydF9tYWpvcmF0aW9uIiwiYWxsb2NhdGlvbiIsImNvbXBsZW1lbnRfZGVncmVzc2lmIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9wYXJfIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lJDAiLCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV8iLCJyYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW4iLCJtb250YW50X2luaXRpYWxfbWV0cm9wb2xlX21ham8iLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2UiLCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYSIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYSIsIm1vbnRhbnRfdmVyc2VfYmFzZSIsIm1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbiIsIm1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyQwIiwibW9udGFudF92ZXJzZSIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCIsImlfZGF0ZV9jb3VyYW50ZSIsImlfZW5mYW50cyIsImlfcmVzc291cmNlc19tZW5hZ2UiLCJpX3Jlc2lkZW5jZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSQwIiwiaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZiIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2F2YSIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbiIsImlfbW9udGFudF92ZXJzZSIsInByaXNlX2VuX2NoYXJnZV90b19qc29vIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiYXJnJDMiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZSIsImNvbnMiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8iLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIiwicHJpc2VfZW5fY29tcHRlX3RvX2pzb28iLCJwcmlzZV9lbl9jb21wdGVfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9uc190b19qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMiLCJhcmckNCIsImFyZyQ1IiwiYXJnJDYiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vIiwiYXJnJDciLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyIsImNvbGxlY3Rpdml0ZSIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDEiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb28iLCJzbWljX3RvX2pzb28iLCJzbWljX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMSIsImVuZmFudF9lbnRyZWVfdG9fanNvbyIsImVuZmFudF9lbnRyZWUiLCJlbmZhbnRfZW50cmVlX29mX2pzb28iLCJlbmZhbnRfdG9fanNvbyIsImVuZmFudF9vZl9qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2Vfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImZ1bmN0aW9uX2lucHV0MCIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9faiIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfaiIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQyIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDMiLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW5fdG9fanNvbyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwic21pY19pbl90b19qc29vIiwic21pY19pbl9vZl9qc29vIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDIiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMyIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQyIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDMiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkNCIsImVuZmFudF9sZV9wbHVzX2FnZSQwIiwic21pYyQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkNCIsImVtYmVkX3R5cGVfcHJldCIsImVtYmVkX3RpdHVsYWlyZV9wcmV0IiwiZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4IiwiZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4IiwiZW1iZWRfYW1lbGlvcmVfcGFyX29jY3VwYW50IiwiZW1iZWRfbGltaXRlX3RyYW5jaGUiLCJlbWJlZF9saW1pdGVfdHJhbmNoZV9kZWNpbWFsIiwiZW1iZWRfcHJlc3RhdGlvbl9yZWN1ZSIsImVtYmVkX3BhcmVudF9vdV9hdXRyZSIsImVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsImVtYmVkX3BhcmVudGUiLCJlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2kiLCJlbWJlZF96b25lX2RfaGFiaXRhdGlvbiIsImVtYmVkX3BhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbiIsImVtYmVkX3ZlcnNlbWVudF9hIiwiZW1iZWRfZGVwZW5zZV9sb2dlbWVudCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUiLCJlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXQiLCJlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlIiwiZW1iZWRfcHJpc2VfZW5fY2hhcmdlJDAiLCJlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyIiwiZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xvIiwiZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjIiwiZW1iZWRfY29sbGVjdGl2aXRlJDAiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2VfZW5mYW50IiwiZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvJDAiLCJlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWkkMCIsImVtYmVkX2NvbnZlbnRpb25fYmFpbGxldXJfc29jaSIsImVtYmVkX2NvbnZlbnRpb25fYV9uX2hfYSIsImVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24iLCJlbWJlZF9wYXRyaW1vaW5lIiwiZW1iZWRfY29uZGl0aW9uc19ldHJhbmdlcnMiLCJlbWJlZF9wZXJzb25uZV92aXZhbnRfaGFiaXR1ZWwiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4iLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW0iLCJlbWJlZF9yZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm4iLCJlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2EiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UiLCJlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXIiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW0iLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMCIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQxIiwiZW1iZWRfdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDIiLCJlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW4iLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMCIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQxIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDIiLCJlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXQiLCJlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudCIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQwIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDEiLCJlbWJlZF9zbWljJDAiLCJlbWJlZF9wcmV0IiwiZW1iZWRfbmV1Zl9vdV9hbmNpZW4iLCJlbWJlZF90cmFuY2hlX3JldmVudSIsImVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCIsImVtYmVkX2xvZ2VtZW50X2ZveWVyIiwiZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsIiwiZW1iZWRfZW5mYW50X2FfY2hhcmdlIiwiZW1iZWRfdHlwZV9iYWlsbGV1ciIsImVtYmVkX2xvdWVfb3Vfc291c19sb3VlX2FfZGVzXyIsImVtYmVkX25hdGlvbmFsaXRlIiwiZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyIiwiZW1iZWRfcHJvcHJpZXRhaXJlIiwiZW1iZWRfaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfIiwiZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UiLCJlbWJlZF9kZW1hbmRldXIiLCJlbWJlZF9sb2NhdGlvbiIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiIsImVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJlbWJlZF9tb2RlX29jY3VwYXRpb24iLCJlbWJlZF9sb2dlbWVudCIsImVtYmVkX21lbmFnZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2wkMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbSQwIiwiZW1iZWRfcmVzc291cmNlc19haWRlc19wZXJzb25uJDAiLCJlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2EkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQzIiwiZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyJDAiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW0kMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ0IiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkNSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ2IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDMiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNCIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ1IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDYiLCJlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXQkMCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XyIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQxIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDIiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMiIsImVtYmVkX3NtaWNfaW4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zXyQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wIiwiZXhvbmVyZV9jc2ciLCJ0YXV4X2NyZHMiLCJhaWRlX2ZpbmFsZSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyIsImNvbmRpdGlvbl8yX2R1XzgzMl8yNSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjYiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjYiLCJ0cmFuY2hlIiwidHJhbmNoZV9oYXV0IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8iLCJub21icmVfcGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fIiwibl9ub21icmVfcGFydHNfZDgzMl8xMSIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIiwiZGF0ZV9uYWlzc2FuY2VfYXNzdXJlIiwiYWdlX291dmVydHVyZV9kcm9pdCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4iLCJtb2RlX29jY3VwYXRpb24iLCJhaWRlX3ZlcnNlZSIsIm1vbnRhbnRfYXBsIiwibW9udGFudF9jaGFyZ2VzIiwiZGVwZW5zZV9sb2dlbWVudCIsIm1vbnRhbnRfZGV0dGUiLCJtb2RlX29jY3VwYXRpb25faW1wYXllIiwiZGVwZW5zZV9sb2dlbWVudF9icnV0ZSIsInRvdGFsX2VjaGVhbmNlcyIsIm1lbnN1YWxpdGUiLCJsb3llciIsInRvdGFsIiwibW9udGFudF9sb3llciIsImRlcGVuc2VfbG9nZW1lbnRfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImVjaGVhbmNlX3ByZXRfYnJ1dGUiLCJtZW5zdWFsaXRlX2JydXRlIiwibG95ZXJfbmV0IiwibG95ZXJfYnJ1dCIsInNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZSIsIm1vbnRhbnRfaW1wYXllIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDUiLCJzbWljJDEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UiLCJsb3llcl9wcmluY2lwYWxfYmFzZSIsImJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbiIsInpvbmUiLCJsb2dlbWVudF9lc3RfY2hhbWJyZSIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSIsInR5cGVfYWlkZSIsImNvbG9jYXRpb24iLCJyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZSIsImxvZ2VtZW50X21ldWJsZV9kODQyXzIiLCJmcmFjdGlvbl9sODMyXzMiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTYiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXQiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb24iLCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSIsImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xNyIsImxveWVyX3JlZmVyZW5jZSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTYiLCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kOCIsImxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbiIsInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNiIsInBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTYiLCJsb3llcl9lbGlnaWJsZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZSIsInBhcnRpY2lwYXRpb25fbWluaW1hbGUiLCJyYXBwb3J0X2xveWVycyIsImFpZGVfZmluYWxlJDAiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXQiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGUiLCJjcmRzIiwiYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmliIiwidGF1eF9sb3llcl9lbGlnaWJsZV90YXV4X2Fycm9uIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3RpIiwidGF1eF9wcmlzZV9jb21wdGVfcmVzc291cmNlcyIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudCIsInBhcnRpY2lwYXRpb25fcmVzc291cmNlcyIsInBhcnRpY2lwYXRpb25fcmVzc291cmNlcyQwIiwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSIsImFpZGVfZmluYWxlX2Zvcm11bGUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMCIsInR5cGVfbG9nZW1lbnRfZm95ZXIiLCJkYXRlX2NvbnZlbnRpb25uZW1lbnQiLCJyZWRldmFuY2UiLCJjb2VmZmljaWVudF9yX2Q4MzJfMjUiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjQiLCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0IiwiY29uZGl0aW9uXzJfZHVfODMyXzI1JDAiLCJwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWciLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmUiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXQiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWIiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjciLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMiLCJlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUkMCIsImFsbG9jYXRpb25fbWVuc3VlbGxlIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDAiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQyIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDMiLCJkZW5vbWluYXRldXIiLCJkZW5vbWluYXRldXIkMCIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGUiLCJhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW0iLCJlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQwIiwiYWlkZV9maW5hbGUkMSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQxIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEiLCJtZW5zdWFsaXRlX3ByaW5jaXBhbGUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnQiLCJkYXRlX3NpZ25hdHVyZV9wcmV0IiwibG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuIiwiZGF0ZV9lbnRyZWVfbG9nZW1lbnQiLCJjb3Byb3ByaWV0ZSIsInNpdHVhdGlvbl9yODIyXzExXzEzXzE3IiwidHlwZV9wcmV0IiwiYW5jaWVubmV0ZV9sb2dlbWVudCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMCIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTAiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMCIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9zdXBlcmlldXJlX2Q4MzJfMSIsInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3MiLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMSIsInJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMiIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMCIsInBsYWZvbmRfc2lnbmF0dXJlIiwicGxhZm9uZF9lbnRyZWUiLCJwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2IiLCJwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2MiLCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzEkMCIsIm1lbnN1YWxpdGVfbWluaW1hbGUiLCJtZW5zdWFsaXRlX2VsaWdpYmxlIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfIiwibWVuYWdlIiwiZGVtYW5kZXVyIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UiLCJwcmV0Iiwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByaWV0ZSIsInNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdCIsInNldWlsX2w4MjJfNV9wYXRyaW1vaW5lIiwidXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGUiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzkiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzgiLCJub21icmVfcGVyc29ubmVzX2xvZ2VtZW50IiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UkMCIsImNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcCQwIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfJDAiLCJwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1ciIsImNvbmRpdGlvbnMiLCJjb25kaXRpb25fbmF0aW9uYWxpdGUiLCJwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3UiLCJwZXJzb25uZSIsImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aSIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlJDAiLCJwYXJ0cyIsInBhcnRzJDAiLCJwYXJ0cyQxIiwicGFydHMkMiIsImNvbmRpdGlvbl9sb2dlbWVudF9tb2RlX29jY3VwYSIsImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZSIsImFnZV9sMTYxXzE3XzJfc2VjdSIsImFjYyIsInByZXN0YXRpb24iLCJlbGlnaWJpbGl0ZV9sb2dlbWVudCIsImFnZV9sMzUxXzhfMV9zZWN1IiwiZWxpZ2liaWxpdGUiLCJwZXJzb25uZV9hX2NoYXJnZSIsInBhcmVudCIsImNvbmRpdGlvbl8yX3I4MjNfNCIsInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV9hX2NoYSIsInBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fYyIsImNvZWZmIiwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sIiwicmVzc291cmNlc19kZW1hbmRldXIiLCJyZXNzb3VyY2VzX2NvbmpvaW50IiwicGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVuIiwiZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11IiwiY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuIiwicGVyc29ubmVzX2FfY2hhcmdlIiwic2l0dWF0aW9uX2ZhbWlsaWFsZSIsImNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbSIsImRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzIiwiZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0IiwicGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvIiwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84IiwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl83IiwicmVzc291cmNlc19mb3JmYWl0YWlyZXNfcjgyMl8yIiwicmVzc291cmNlc19wZXJzb25uZXNfdml2YW50X2hhIiwiYWJhdHRlbWVudCIsInJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZSIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyIsImxveWVyX3ByaW5jaXBhbCIsImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3RpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuJDAiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FpZGVfZmkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW0iLCJpbmZvcyIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kiLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDgiLCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1IiwibW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDAiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQyIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDMiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ1IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDYiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ4IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDkiLCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMiLCJlcXVpdmFsZW5jZV9sb3llciIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSIsImxveWVyX21pbmltYWwiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2UiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW4iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmEiLCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldCIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82IiwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyIiwiY29lZmZpY2llbnRfZDg0Ml8xMSIsImNvZWZmaWNpZW50X2Q4NDJfMTIiLCJkYXRlX2NhbGN1bCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiIsInNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZyIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiQwIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NlIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNiIsInNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taSIsImRlcGVuc2VfbmV0dGVfbWluaW1hbGUkMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyIiwicmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpIiwibG9jYXRpb24iLCJsb2dlbWVudGZveWVyIiwicHJvcHJpZXRhaXJlIiwibG9jYXRpb24kMCIsInByb3ByaWV0YWlyZSQwIiwiY2F0ZWdvcmllX2NhbGN1bF9hcGwiLCJyZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGkiLCJiYWlsbGV1ciIsInBhcmFtMCIsInRyYWl0ZW1lbnRfZm9ybXVsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZSQwIiwibG9nZW1lbnRfZm95ZXIiLCJyZXN1bHQkMyIsInJlc3VsdCQ0IiwidHJhaXRlbWVudF9mb3JtdWxlJDEiLCJzb3VzX2NhbGN1bF90cmFpdGVtZW50IiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtIiwiaW5mb3JtYXRpb25zIiwiZGF0ZV9lbW1lbmFnZW1lbnQiLCJkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnQiLCJkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM18iLCJjb25kaXRpb25fcmFuZ19lbmZhbnQiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fJDAiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEkMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZWxpZ2liaWxpdCIsImRhdGVfbmFpc3NhbmNlX291X2dyb3NzZXNzZSIsImRhdGVfbmFpc3NhbmNlIiwiY29uZGl0aW9uX3BlcmlvZGVfZGVtZW5hZ2VtZW50IiwicGxhZm9uZF9kODIzXzIyIiwibW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzEiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzYiLCJwcm9wcmlldGUiLCJwcm9wcmlldGUkMCIsImNvbmRpdGlvbl9sb2dlbWVudF9wcmV0IiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0IiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDAiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWIiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmUiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmkiLCJjb252ZW50aW9uIiwiY29udmVudGlvbiQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuIiwiYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sIiwiZHVyZWVfbDg0MV8xXzMiLCJjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByaWV0ZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQxIiwiZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11IiwiZGF0ZV9tYXJpYWdlIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDAiLCJlbGlnaWJpbGl0ZV9sODQxXzIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIiwiYmFpbGxldXIkMCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMiIsInJlc3VsdCQ3IiwicmVzdWx0JDgiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2kiLCJyZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY28iLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQyIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDMiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNCIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ1IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDAiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQyIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDMiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ1IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDYiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ2IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkOCIsImFpZGVfZmluYWxlX2FwbCIsImFpZGVfZmluYWxlX2FsIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwibWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlIiwiY2FsY3VsZXR0ZV9kb3RfbWVuYWdlIiwiY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyIiwiY2FsY3VsZXR0ZV9kb3RfZGF0ZV9jb3VyYW50ZSIsImNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYSIsImNhbGN1bGV0dGVfZG90X2VsaWdpYmlsaXRlIiwiY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9yIiwiY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlIiwiY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDAiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMSIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQyIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDMiLCJ0eXBlX3ByZXRfdG9fanNvbyIsInR5cGVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXRfdG9fanNvbyIsInRpdHVsYWlyZV9wcmV0X29mX2pzb28iLCJ0aXR1bGFpcmVfcHJldCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyQwIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3QiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X28iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28iLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9vZl9qc29vIiwibGltaXRlX3RyYW5jaGUiLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIiwicHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIiwicHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIiwicHJlc3RhdGlvbl9yZWN1ZSIsInBhcmVudF9vdV9hdXRyZV90b19qc29vIiwicGFyZW50X291X2F1dHJlX29mX2pzb28iLCJwYXJlbnRfb3VfYXV0cmUiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfb2ZfanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUiLCJwYXJlbnRlX3RvX2pzb28iLCJwYXJlbnRlX29mX2pzb28iLCJwYXJlbnRlIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nJDAiLCJ6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIiwiem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uIiwicGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvJDAiLCJ2ZXJzZW1lbnRfYV90b19qc29vIiwidmVyc2VtZW50X2Ffb2ZfanNvbyIsInZlcnNlbWVudF9hIiwiZGVwZW5zZV9sb2dlbWVudF90b19qc29vIiwiZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvJDAiLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4iLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4kMCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyIsInNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZV90b19qc29vJDAiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyQwIiwidHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIiwidHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vJDAiLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyQwIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudF9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlX2VuZmFudCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQxIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDIiLCJlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMkMSIsImVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQyIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfdG9fIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwiLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF9vZl8iLCJjb252ZW50aW9uX2Ffbl9oX2FfdG9fanNvbyIsImNvbnZlbnRpb25fYV9uX2hfYSIsImNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIiwicGVyc29ubmVfc291c19sb2NhdGlvbiIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyIsInBhdHJpbW9pbmVfdG9fanNvbyIsInBhdHJpbW9pbmUiLCJwYXRyaW1vaW5lX29mX2pzb28iLCJjb25kaXRpb25zX2V0cmFuZ2Vyc190b19qc29vIiwiY29uZGl0aW9uc19ldHJhbmdlcnMiLCJjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vIiwicGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50IiwicGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50JDAiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQxIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDAiLCJyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2wkMSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDkiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTAiLCJpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvXyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X29mXyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfdG9faiIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfb2ZfaiIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X3RvX2pzbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X29mX2pzbyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfdCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfbyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDEiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ3Iiwic21pY190b19qc29vJDAiLCJzbWljX29mX2pzb28kMCIsInByZXRfdG9fanNvbyIsInByZXRfb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuX3RvX2pzb28iLCJuZXVmX291X2FuY2llbl9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW4iLCJ0cmFuY2hlX3JldmVudV90b19qc29vIiwidHJhbmNoZV9yZXZlbnUiLCJ0cmFuY2hlX3JldmVudV9vZl9qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlJDAiLCJsb2dlbWVudF9mb3llcl90b19qc29vIiwibG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfJDAiLCJlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyIsImVuZmFudF9hX2NoYXJnZSIsImVuZmFudF9hX2NoYXJnZV9vZl9qc29vIiwidHlwZV9iYWlsbGV1cl90b19qc29vIiwidHlwZV9iYWlsbGV1cl9vZl9qc29vIiwidHlwZV9iYWlsbGV1ciIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJuYXRpb25hbGl0ZV90b19qc29vIiwibmF0aW9uYWxpdGVfb2ZfanNvbyIsIm5hdGlvbmFsaXRlIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwicHJvcHJpZXRhaXJlX3RvX2pzb28iLCJwcm9wcmlldGFpcmVfb2ZfanNvbyIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSIsImluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZSQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMSIsInBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28iLCJwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIiwiZGVtYW5kZXVyX3RvX2pzb28iLCJkZW1hbmRldXJfb2ZfanNvbyIsImxvY2F0aW9uX3RvX2pzb28iLCJsb2NhdGlvbl9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfdG9fanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfb2ZfanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJtb2RlX29jY3VwYXRpb25fdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIiwibG9nZW1lbnRfdG9fanNvbyIsImxvZ2VtZW50IiwibG9nZW1lbnRfb2ZfanNvbyIsIm1lbmFnZV90b19qc29vIiwibWVuYWdlX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMiIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQzIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsInJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbCQyIiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQyIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTgiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvXyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mXyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDIiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ4IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDkiLCJzbWljX2luX3RvX2pzb28kMCIsInNtaWNfaW5fb2ZfanNvbyQwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDIiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQ0IiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQ0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSQwIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxMCIsInNtaWMkMiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMSIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwicmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sJDQiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQ0IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIl0sInNvdXJjZXMiOlsiIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvemFyaXRoX3N0dWJzX2pzL2JpZ2ludGVnZXIuanMiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL3phcml0aF9zdHVic19qcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytiaWdzdHJpbmctY3N0cnVjdC5qcyIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9pbl9jaGFubmVsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL29iai5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYm9vbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2hhci5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NldC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbWFwLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcXVldWUubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0cmVhbS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYnVmZmVyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZnVuLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9nYy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL3dvcmtzcGFjZV9yb290L3J1bnRpbWVzL29jYW1sL3J1bnRpbWUubWwiLCIiLCIiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvanNvby9ydW50aW1lLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50Lm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9haWRlc19sb2dlbWVudF9hcGlfd2ViLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvYXBpX3dlYi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7O0NBQ0MsU0FBVUE7V0FDRkM7Ozs7S0FDTEM7T0FDRTtRQUNDO1VBQXNCRiw4Q0FFaEJHO1FBQ0hDO0lBRVIsU0FBU0Q7TUFDUCxJQUFJRSxPQUFTSCxRQUFRSTtNQUNyQkQsb0JBQW9CQTthQUNiTCxvQkFDVCxDQWJEO0dBY0NBOzs7O0lDMk5GLFNBQVNPLG1CQUFtQkMsR0FBSyxTQUFRLFVBQVk7SUN6THJELFNBQVNDLGdCQUFnQkMsRUFBR0M7TUFDMUIsR0FBR0QsT0FBUTtNQUNYLEdBQUlDLFNBQVUsT0FBUSxTQUFTRDtNQUMvQixJQUFNLEtBQVE7TUFDZDtPQUFRLENBQ04sR0FBSUEsTUFBT0UsS0FBS0Q7UUFDaEJEO1FBQ0EsR0FBSUEsT0FBUSxPQUFPRTtRQUNuQkQsS0FBS0E7UUFDTEU7UUFDQSxHQUFJQSxPQUFRLGFBTWhCO0lEN0NBLElBQUlDLGtCQUFvQjtJRUF4QixTQUFTRSxvQkFBcUJDLEtBQU8sTUFBTUEsR0FBSztJQzJDaEQsSUFBSUM7SURISixTQUFTQztNQUNQLG9CQUFvQkQsa0NBQ3RCO0lGdENBLFNBQVNFLFFBQVNDLEdBQUdDLEdBQUdDO01BQ3RCckIsVUFBVW1CLGNBQ1ZuQixVQUFVb0IsY0FDVnBCLFVBQVVxQixXQUNa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RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDa0JLQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3dCQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7Ozs7S0N6QkFDO0tBbUhBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbzlFTUM7S0FRUUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbGxGZEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NzRUVDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0EvRVlDO0tBbUhaQztLQUNBQztLQUNBQztLQUNBQzs7O0tBbUlBQztLQUNBQztLQUNBQztLQUNBQzs7O0tDeFBGQztLQUNBQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7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K0JBRFRvRSxnQkFMUlcsSUFQS0g7O29CQU9MRzswQ0FZNkI7SUEzSjFCLFNLeFFUQyxjTDRhZWY7TUFBSztRQUFLLCtCQUFWQSxJQUFnQzsyQkFBRztJQXBLekMsU0M3SlRnQixXRHVVV3JDLEdBQUksMkJNemNmTixPTnljV00sRUFBd0I7SUExSzFCLFNDNUpUc0MsYUR1VWFoRixHQUFJLHFCTTFjakJvQyxPTjBjYXBDLEVBQTBCO0lBM0s5QixTQzNKVGlGLFlEdVVZakYsR0FBSSxvQk0zY2hCb0MsT04yY1lwQyxFQUF5QjtJQTVLNUIsU0MxSlRrRixVRHVVVTVKO01BQXlCLHFCTTVjbkM4RyxPTjRjbUMsNEJBQXpCOUcsR0FBMEM7SUE3SzNDLFNDekpUNkosWUR1VVkzRixHQUF5QixxQk03Y3JDNEMsT042Y3FDLFVBQXpCNUMsR0FBNEM7SUE5Sy9DLFNDeEpUNEYsY0R1VWNwRjtNQUNoQixjTS9jRW9DLE9OOGNjcEM7TUFDUSxvQk0vY3RCb0M7TU4rYytDLHFCTS9jL0NBLE9OK2MyRDtJQWhMbEQsU0N2SlRpRDtNRHdVbUIsb0JNaGRuQmpELFdOZ2Q0QyxxQk1oZDVDQSxPTmdkd0Q7SUFqTC9DLFNDdEpUa0QsV0QyVVc1QyxHQUFJLDJCTW5kZkwsT05tZFdLLEVBQXdCO0lBckwxQixTQ3JKVDZDLGFEMlVhdkYsR0FBSSxxQk1wZGpCcUMsT05vZGFyQyxFQUEwQjtJQXRMOUIsU0NwSlR3RixZRDJVWXhGLEdBQUksb0JNcmRoQnFDLE9OcWRZckMsRUFBeUI7SUF2TDVCLFNDbkpUeUYsVUQyVVVuSztNQUF5QixxQk10ZG5DK0csT05zZG1DLDRCQUF6Qi9HLEdBQTBDO0lBeEwzQyxTQ2xKVG9LLFlEMlVZbEcsR0FBeUIscUJNdmRyQzZDLE9OdWRxQyxVQUF6QjdDLEdBQTRDO0lBekwvQyxTQ2pKVG1HLGNEMlVjM0Y7TUFDaEIsY016ZEVxQyxPTndkY3JDO01BQ1Esb0JNemR0QnFDO01OeWQrQyxxQk16ZC9DQSxPTnlkMkQ7SUEzTGxELFNDaEpUdUQ7TUQ0VW1CLG9CTTFkbkJ2RCxXTjBkNEMscUJNMWQ1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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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O09BQ0FDO0tBL0dBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQVVBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQVlBQztLQUVBQztLQUtBQztLQUdBQztLQUlBQztLQUdBQztLQVNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQzs7O09BanJCTnRZOzs7Ozs7OztPQXNKQTRFO09BY0kyQjtPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVKRTtPQVFBWTtPQVVBVjtPQU9BSztPQVNJUztVQStKRW1EO09BaEtGcEQ7T0FHQUU7T0FJQUU7T0FJQUM7T0FJQUU7T0FJSUU7T0FoTkp2SDtPQUNBRTtPQUlBSztPQUhBSDtPQUNBQztPQUtBSTtPQUdBQztPQUVBQztPQU1BQztPQUtBSTtPQUZBRDtPQURBRDtPQURBRDtPQXlDQWdCO09BT0FFO09BR0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BRUFHO09BREFGO09BZUFRO09BUkFIO09BSUFDO09BUkFIO09Bb0JBVztPQUpBSjtPQU9BSztPQUNBQztPQUVBQztPQW1CQUU7T0FoQkFEO09BdVlBc0o7T0FzQkFPO09BcUJBRTs7T0FtQkV3RjtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVlBQztPQUVBQztPQUtBQztPQUdBQztPQUlBQztPQUdBQztPQVNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7VUQxc0JQOzs7Ozs7O0lDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7bUJDQ1lDLEtBQU8sTUFBTUEsR0FBdkI7SURERjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNBQTt5QkNDVUMsdUJBQXVCQSxrQkFBbUJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lERHBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VDQ0NBLFdEREQsNkJDQ0NDLEtEREQsSUNDQ0M7SURERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNDQ0NDLHVCREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQ0NDQyxNREREOzs7Ozs7Ozs7O3lCQ0NDQSxNREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QVlBTTtPQXVGQU87O1VEaEtMOzs7Ozs7O0lDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDT3dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7SUlBQTs7Ozs7Ozs7Ozs7Ozs7O01DNEMyQjt3QkFBS0M7aUJBQ2xCO21CQUVNOzs7O3VCQUhZQTt1Q0FNSztpQkFMdkIsOENBS3dCLEVBQUM7O01BakJaO3dCQUFLQztpQkFDbEI7bUJBRU07Ozs7dUJBSFlBOzBDQU1RO2lCQUwxQiw4Q0FLMkIsRUFBQztJQVp2Qzs7Ozs7OztVRDNCSDs7Ozs7OztJQ0FBOzs7O0lDa0JTOzs7VURsQlQiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGhpID0gdGhpcy5oaSA8PCAxNjtcbiAgdmFyIHhoaSA9IHguaGkgPDwgMTY7XG4gIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gIGlmIChoaSA8IHhoaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG8gPSAtIHRoaXMubG87XG4gIHZhciBtaSA9IC0gdGhpcy5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IC0gdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKyB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgKyB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgLSB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSAtIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICogeC5sbztcbiAgdmFyIG1pID0gKChsbyAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5taSAqIHgubG8gKyB0aGlzLmxvICogeC5taTtcbiAgdmFyIGhpID0gKChtaSAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5oaSAqIHgubG8gKyB0aGlzLm1pICogeC5taSArIHRoaXMubG8gKiB4LmhpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5sb3x0aGlzLm1pfHRoaXMuaGkpID09IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmhpIDw8IDE2KSA8IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvfHgubG8sIHRoaXMubWl8eC5taSwgdGhpcy5oaXx4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvXngubG8sIHRoaXMubWleeC5taSwgdGhpcy5oaV54LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X2xlZnQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNCkge1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5sbyA8PCBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5oaSA8PCBzKSB8ICh0aGlzLm1pID4+ICgyNCAtIHMpKSk7XG4gIH1cbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvIDw8IChzIC0gMjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KDAsIDAsIHRoaXMubG8gPDwgKHMgLSA0OCkpXG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodF91bnNpZ25lZCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gcykpO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiAocyAtIDI0KSksXG4gICAgICAwKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmhpID4+IChzIC0gNDgpLCAwLCAwKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKGggPDwgKDI0IC0gcykpLFxuICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYpO1xuICB2YXIgc2lnbiA9ICh0aGlzLmhpIDw8IDE2KSA+PiAzMTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMjQpID4+IDE2LFxuICAgICAgc2lnbiAmIDB4ZmZmZik7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMzIpLCBzaWduLCBzaWduKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzbDEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGkgPSAodGhpcy5oaSA8PCAxKSB8ICh0aGlzLm1pID4+IDIzKTtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5sbyA9ICh0aGlzLmxvIDw8IDEpICYgMHhmZmZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc3IxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvID0gKCh0aGlzLmxvID4+PiAxKSB8ICh0aGlzLm1pIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSB0aGlzLmhpID4+PiAxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudWRpdm1vZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBvZmZzZXQgPSAwO1xuICB2YXIgbW9kdWx1cyA9IHRoaXMuY29weSgpO1xuICB2YXIgZGl2aXNvciA9IHguY29weSgpO1xuICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLDAsMCk7XG4gIHdoaWxlIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID4gMCkge1xuICAgIG9mZnNldCsrO1xuICAgIGRpdmlzb3IubHNsMSgpO1xuICB9XG4gIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgIG9mZnNldCAtLTtcbiAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgaWYgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPj0gMCkge1xuICAgICAgcXVvdGllbnQubG8gKys7XG4gICAgICBtb2R1bHVzID0gbW9kdWx1cy5zdWIoZGl2aXNvcik7XG4gICAgfVxuICAgIGRpdmlzb3IubHNyMSgpO1xuICB9XG4gIHJldHVybiB7IHF1b3RpZW50IDogcXVvdGllbnQsIG1vZHVsdXMgOiBtb2R1bHVzIH07XG59XG5NbEludDY0LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgcSA9IHEubmVnKCk7XG4gIHJldHVybiBxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciByID0geC51ZGl2bW9kKHkpLm1vZHVsdXM7XG4gIGlmIChzaWduICYgMHg4MDAwKSByID0gci5uZWcoKTtcbiAgcmV0dXJuIHI7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0ludCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAodGhpcy5taSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0Zsb2F0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkpICsgdGhpcy5sbztcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbdGhpcy5oaSA+PiA4LFxuICAgICAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgPj4gMTYsXG4gICAgICAgICAgKHRoaXMubWkgPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gPj4gMTYsXG4gICAgICAgICAgKHRoaXMubG8gPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gJiAweGZmXTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxvMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaGkzMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5taSA+Pj4gOCkgJiAweGZmZmYpIHwgKHRoaXMuaGkgPDwgMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VsdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bHQoeCx5KSB7IHJldHVybiB4LnVjb21wYXJlKHkpIDwgMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LHksIHRvdGFsKSB7IHJldHVybiB4LmNvbXBhcmUoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X25lZyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9uZWcgKHgpIHsgcmV0dXJuIHgubmVnKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FkZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hZGQgKHgsIHkpIHsgcmV0dXJuIHguYWRkKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViICh4LCB5KSB7IHJldHVybiB4LnN1Yih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tdWwoeCx5KSB7IHJldHVybiB4Lm11bCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfemVybyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc196ZXJvKHgpIHsgcmV0dXJuICt4LmlzWmVybygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkgeyByZXR1cm4gK3guaXNOZWcoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQgKHgsIHkpIHsgcmV0dXJuIHguYW5kKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IgKHgsIHkpIHsgcmV0dXJuIHgub3IoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yICh4LCB5KSB7IHJldHVybiB4Lnhvcih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X2xlZnQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZGl2IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2RpdiAoeCwgeSkgeyByZXR1cm4geC5kaXYoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21vZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tb2QgKHgsIHkpIHsgcmV0dXJuIHgubW9kKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9pbnQzMiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoeCAmIDB4ZmZmZmZmLCAoeCA+PiAyNCkgJiAweGZmZmZmZiwgKHggPj4gMzEpICYgMHhmZmZmKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2ludDMyICh4KSB7IHJldHVybiB4LnRvSW50KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2Zsb2F0ICh4KSB7IHJldHVybiB4LnRvRmxvYXQgKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoeCkge1xuICBpZiAoeCA8IDApIHggPSBNYXRoLmNlaWwoeCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICB4ICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQgKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQgKGZtdCwgeCkge1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSkge1xuICAgIGYuc2lnbiA9IC0xOyB4ID0gY2FtbF9pbnQ2NF9uZWcoeCk7XG4gIH1cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIHZhciB3YmFzZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZi5iYXNlKTtcbiAgdmFyIGN2dGJsID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG4gIGRvIHtcbiAgICB2YXIgcCA9IHgudWRpdm1vZCh3YmFzZSk7XG4gICAgeCA9IHAucXVvdGllbnQ7XG4gICAgYnVmZmVyID0gY3Z0YmwuY2hhckF0KGNhbWxfaW50NjRfdG9faW50MzIocC5tb2R1bHVzKSkgKyBidWZmZXI7XG4gIH0gd2hpbGUgKCEgY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBidWZmZXIubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgYnVmZmVyID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9XG4gICAgICBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmZmLCAweGZmZmYpLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgZm9yICg7Oykge1xuICAgIGkrKztcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgICBkID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X2FkZChjYW1sX2ludDY0X211bChiYXNlNjQsIHJlcyksIGQpO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBhZGRpdGlvbiAoYmFzZSAqIHJlcykgKyBkICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHJlcywgZCkpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChiYXNlID09IDEwICYmIGNhbWxfaW50NjRfdWx0KG5ldyBNbEludDY0KDAsIDAsIDB4ODAwMCksIHJlcykpXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChzaWduIDwgMCkgcmVzID0gY2FtbF9pbnQ2NF9uZWcocmVzKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2xvMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbG8zMih2KXsgcmV0dXJuIHYubG8zMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oaTMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hpMzIodil7IHJldHVybiB2LmhpMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoYVs3XSA8PCAwIHwgKGFbNl0gPDwgOCkgfCAoYVs1XSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzRdIDw8IDAgfCAoYVszXSA8PCA4KSB8IChhWzJdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbMV0gPDwgMCB8IChhWzBdIDw8IDgpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkgeyByZXR1cm4geC50b0FycmF5KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hhc2ggY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGFzaCh2KXtcbiAgcmV0dXJuICh2LmxvMzIoKSkgXiAodi5oaTMyKCkpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIGlmKGdsb2JhbFRoaXMuVWludDhBcnJheSkge1xuICAgIHZhciBhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShzLmwpO1xuICB9IGVsc2Uge1xuICAgIHZhciBhID0gbmV3IEFycmF5KHMubCk7XG4gIH1cbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ZpbGxfYnl0ZXNcbnZhciBjYW1sX2ZpbGxfc3RyaW5nID0gY2FtbF9maWxsX2J5dGVzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7XG4gIGlmIChsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGlmICgoaTIgPT0gMCkgJiZcbiAgICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbGVuID49IHMyLmMubGVuZ3RoKSkpIHtcbiAgICBzMi5jID0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgaTIgPT0gczIuYy5sZW5ndGgpIHtcbiAgICBzMi5jICs9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzMik7XG4gICAgdmFyIGMxID0gczEuYywgYzIgPSBzMi5jO1xuICAgIGlmIChzMS50ID09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbCA9IE1hdGgubWluIChsZW4sIGMxLmxlbmd0aCAtIGkxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYmxpdF9zdHJpbmcoYSxiLGMsZCxlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSxiLGMsZCxlKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19sZW5ndGggY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpIHsgcmV0dXJuIHMubCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JldHVybl9leG5fY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50ICh0YWcpIHsgcmV0dXJuIHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBbMCwgdGFnLCBhcmddOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IFswLCB0YWddLmNvbmNhdChhcmdzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICBpZihmLmZ1bilcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmZ1biwgYXJncyk7XG4gIC8vRklYTUUsIGNhbiBoYXBwZW4gd2l0aCB0b28gbWFueSBhcmd1bWVudHNcbiAgaWYodHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGY7XG4gIHZhciBuID0gZi5sZW5ndGggfCAwO1xuICBpZihuID09PSAwKSByZXR1cm4gZi5hcHBseShudWxsLGFyZ3MpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoIHwgMDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbiB8IDA7XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSksYXJncy5zbGljZShuKSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpe1xuICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSBuYXJnc1thcmdzLmxlbmd0aCtpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlc1xudmFyIGNhbWxfbmFtZWRfdmFsdWVzID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUgKGNvbnN0LGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZihuYW1lX29wdCAmJiBnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MpXG4gICAgbiA9IGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYyhuYW1lX29wdCk7XG4gIGNhbWxfZ2xvYmFsX2RhdGFbbiArIDFdID0gdjtcbiAgaWYobmFtZV9vcHQpIGNhbWxfZ2xvYmFsX2RhdGFbbmFtZV9vcHRdID0gdjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfZ2xvYmFsX2RhdGEgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9nZXRfZ2xvYmFsX2RhdGEgKCkgeyByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3ByaW50YWJsZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2lzX3ByaW50YWJsZShjKSB7IHJldHVybiArKGMgPiAzMSAmJiBjIDwgMTI3KTsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgZ2xvYmFsVGhpcy5GbG9hdDMyQXJyYXkoMSk7XG4gIGZsb2F0MzJhWzBdID0geDtcbiAgdmFyIGludDMyYSA9IG5ldyBnbG9iYWxUaGlzLkludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgZ2xvYmFsVGhpcy5JbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgZ2xvYmFsVGhpcy5GbG9hdDMyQXJyYXkoaW50MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBmbG9hdDMyYVswXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSByZXR1cm4gMDtcbiAgICBpZiAoeCAhPSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gaXNOYU4oeCk/NDozO1xufVxuLy9Qcm92aWRlczogY2FtbF9tb2RmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX21vZGZfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIHZhciBuZWcgPSAoMS94KSA8IDA7XG4gICAgeCA9IE1hdGguYWJzKHgpO1xuICAgIHZhciBpID0gTWF0aC5mbG9vciAoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7IGkgPSAtaTsgZiA9IC1mOyB9XG4gICAgcmV0dXJuIFswLCBmLCBpXTtcbiAgfVxuICBpZiAoaXNOYU4gKHgpKSByZXR1cm4gWzAsIE5hTiwgTmFOXTtcbiAgcmV0dXJuIFswLCAxL3gsIHhdO1xufVxuLy9Qcm92aWRlczogY2FtbF9sZGV4cF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sZGV4cF9mbG9hdCAoeCxleHApIHtcbiAgZXhwIHw9IDA7XG4gIGlmIChleHAgPiAxMDIzKSB7XG4gICAgZXhwIC09IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbFxuICAgICAgZXhwIC09IDEwMjM7XG4gICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIH1cbiAgfVxuICBpZiAoZXhwIDwgLTEwMjMpIHtcbiAgICBleHAgKz0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIC0xMDIzKTtcbiAgfVxuICB4ICo9IE1hdGgucG93KDIsIGV4cCk7XG4gIHJldHVybiB4O1xufVxuLy9Qcm92aWRlczogY2FtbF9mcmV4cF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0ICh4KSB7XG4gIGlmICgoeCA9PSAwKSB8fCAhaXNGaW5pdGUoeCkpIHJldHVybiBbMCwgeCwgMF07XG4gIHZhciBuZWcgPSB4IDwgMDtcbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgdmFyIGV4cCA9IE1hdGgubWF4KC0xMDIzLCBqc29vX2Zsb29yX2xvZzIoeCkgKyAxKTtcbiAgeCAqPSBNYXRoLnBvdygyLC1leHApO1xuICB3aGlsZSAoeCA8IDAuNSkge1xuICAgIHggKj0gMjtcbiAgICBleHAtLTtcbiAgfVxuICB3aGlsZSAoeCA+PSAxKSB7XG4gICAgeCAqPSAwLjU7XG4gICAgZXhwKys7XG4gIH1cbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgcmV0dXJuIFswLCB4LCBleHBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfY29tcGFyZSAoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoeCA9PT0geCkgcmV0dXJuIDE7XG4gIGlmICh5ID09PSB5KSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0ICh4LCB5KSB7XG4gIGlmICh5ID09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4gKHkgPCAwKT8oLXgpOng7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaWduYml0X2Zsb2F0KHgpIHtcbiAgaWYgKHggPT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4gKHggPCAwKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhwbTFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwbTFfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguZXhwbTEoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZXhwMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHAyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgucG93KDIsIHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMXAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMih4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9oeXBvdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9oeXBvdF9mbG9hdCAoeCwgeSkgeyByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxMF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxMF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5sb2cxMCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Nvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9zaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF90YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3RhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgudGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hdGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9yb3VuZF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9yb3VuZF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5yb3VuZCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZpbGUsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMubWtkaXJTeW5jKHRoaXMubm0obmFtZSkse21vZGU6bW9kZX0pO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ybWRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnJlYWRkaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0RpcmVjdG9yeSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYiA9IHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gICAgdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiBiO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmLCByYWlzZV91bml4KSB7XG4gIHZhciBjb25zdHMgPSByZXF1aXJlKCdjb25zdGFudHMnKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIga2V5IGluIGYpe1xuICAgIHN3aXRjaChrZXkpe1xuICAgIGNhc2UgXCJyZG9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fUkRPTkxZOyBicmVhaztcbiAgICBjYXNlIFwid3Jvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1dST05MWTsgYnJlYWs7XG4gICAgY2FzZSBcImFwcGVuZFwiICA6XG4gICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZIHwgY29uc3RzLk9fQVBQRU5EO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNyZWF0ZVwiICAgOiByZXMgfD0gY29uc3RzLk9fQ1JFQVQ7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0cnVuY2F0ZVwiIDogcmVzIHw9IGNvbnN0cy5PX1RSVU5DOyAgICBicmVhaztcbiAgICBjYXNlIFwiZXhjbFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19FWENMOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJpbmFyeVwiICAgOiByZXMgfD0gY29uc3RzLk9fQklOQVJZOyAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0ZXh0XCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX1RFWFQ7ICAgICBicmVhaztcbiAgICBjYXNlIFwibm9uYmxvY2tcIiA6IHJlcyB8PSBjb25zdHMuT19OT05CTE9DSzsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMpO1xuICAgIHJldHVybiBuZXcgTWxOb2RlRmlsZShmZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmFpc2Vfbm9kZWpzX2Vycm9yID0gZnVuY3Rpb24oZXJyLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZShcIlVuaXguVW5peF9lcnJvclwiKTtcbiAgaWYgKHJhaXNlX3VuaXggJiYgdW5peF9lcnJvcikge1xuICAgIHZhciBhcmdzID0gbWFrZV91bml4X2Vycl9hcmdzKGVyci5jb2RlLCBlcnIuc3lzY2FsbCwgZXJyLnBhdGgsIGVyci5lcnJubyk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXRzX2Zyb21fanMgPSBmdW5jdGlvbihqc19zdGF0cykge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vLFxuICAgIGZpbGVfa2luZCxcbiAgICBqc19zdGF0cy5tb2RlLFxuICAgIGpzX3N0YXRzLm5saW5rLFxuICAgIGpzX3N0YXRzLnVpZCxcbiAgICBqc19zdGF0cy5naWQsXG4gICAganNfc3RhdHMucmRldixcbiAgICBqc19zdGF0cy5zaXplLFxuICAgIGpzX3N0YXRzLmF0aW1lTXMsXG4gICAganNfc3RhdHMubXRpbWVNcyxcbiAgICBqc19zdGF0cy5jdGltZU1zXG4gICk7XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVEZXZpY2VcblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2UoKSB7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmlsZShmZCl7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLmZkID0gZmQ7XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5cbk1sTm9kZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCxsZW58MClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdmFyIGEgPSBjYW1sX2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpZighIChhIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5VaW50OEFycmF5KSlcbiAgICBhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShhKTtcbiAgdmFyIGJ1ZmZlciA9IGdsb2JhbFRoaXMuQnVmZmVyLmZyb20oYSk7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmZmVyLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdmFyIGEgPSBjYW1sX2FycmF5X29mX2J5dGVzKGJ1Zik7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkpKVxuICAgIGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGEpO1xuICB2YXIgYnVmZmVyID0gZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbShhKTtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGJ1ZmZlciwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBjYW1sX2J5dGVzX3NldChidWYsYnVmX29mZnNldCArIGksYnVmZmVyW2J1Zl9vZmZzZXQraV0pO1xuICB9XG4gIHJldHVybiAwXG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5yZWFkX29uZSA9IGZ1bmN0aW9uKG9mZnNldCl7XG4gIHZhciBhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheSgxKTtcbiAgdmFyIGJ1ZmZlciA9IGdsb2JhbFRoaXMuQnVmZmVyLmZyb20oYSk7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBidWZmZXIsIDAsIDEsIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gYnVmZmVyWzBdO1xufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuTWxOb2RlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVGaWxlO1xuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGaWxlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVGaWxlKCl7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIER1bW15IGZpbGVzeXN0ZW1cblxuLy9Qcm92aWRlczogY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKXtcbiAgcmV0dXJuIChuYW1lLnNsaWNlKC0xKSAhPT0gXCIvXCIpID8gKG5hbWUgKyBcIi9cIikgOiBuYW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QpXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywnLycpO1xuZWxzZVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9ICBcIi9zdGF0aWNcIjtcbmNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKGNhbWxfY3VycmVudF9kaXIpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9yb290XG4vL1JlcXVpcmVzOiBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX2dldF9yb290KHBhdGgpe1xuICB2YXIgeCA9IHBhdGhfaXNfYWJzb2x1dGUocGF0aCk7XG4gIGlmICgheCkgcmV0dXJuO1xuICByZXR1cm4geFswXSArIFwiL1wifVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jvb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2V0X3Jvb3QsIGNhbWxfY3VycmVudF9kaXIsIGNhbWxfZmFpbHdpdGhcbnZhciBjYW1sX3Jvb3QgPSBjYW1sX2dldF9yb290KGNhbWxfY3VycmVudF9kaXIpIHx8IGNhbWxfZmFpbHdpdGgoXCJ1bmFibGUgdG8gY29tcHV0ZSBjYW1sX3Jvb3RcIik7XG5cblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKXsgIH1cblxuLy9Qcm92aWRlczogcGF0aF9pc19hYnNvbHV0ZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpIHtcbiAgZnVuY3Rpb24gcG9zaXgocGF0aCkge1xuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSByZXR1cm4gW1wiXCIsIHBhdGguc3Vic3RyaW5nKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9IC9eKFthLXpBLVpdOnxbXFxcXC9dezJ9W15cXFxcL10rW1xcXFwvXStbXlxcXFwvXSspPyhbXFxcXC9dKT8oW1xcc1xcU10qPykkLztcbiAgICB2YXIgcmVzdWx0ID0gc3BsaXREZXZpY2VSZS5leGVjKHBhdGgpO1xuICAgIHZhciBkZXZpY2UgPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgdmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuICAgIC8vIFVOQyBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlXG4gICAgaWYgKEJvb2xlYW4ocmVzdWx0WzJdIHx8IGlzVW5jKSkge1xuICAgICAgdmFyIHJvb3QgPSAocmVzdWx0WzFdIHx8ICcnKTtcbiAgICAgIHZhciBzZXAgPSAocmVzdWx0WzJdIHx8ICcnKTtcbiAgICAgIHJldHVybiBbcm9vdCwgcGF0aC5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luMzIgOiBwb3NpeDtcbiAgfVxuICBlbHNlIHJldHVybiBwb3NpeFxufVxudmFyIHBhdGhfaXNfYWJzb2x1dGUgPSBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3BhdGhcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX21ha2VfcGF0aCAobmFtZSkge1xuICBuYW1lPWNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiggIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkgKVxuICAgIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdChcIi9cIik7XG4gIHZhciBuY29tcCA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGk8Y29tcC5sZW5ndGg7IGkrKyl7XG4gICAgc3dpdGNoKGNvbXBbaV0pe1xuICAgIGNhc2UgXCIuLlwiOiBpZihuY29tcC5sZW5ndGg+MSkgbmNvbXAucG9wKCk7IGJyZWFrO1xuICAgIGNhc2UgXCIuXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbdmZkXTtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfYmFfbWFwX2ZpbGUgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX21hcF9maWxlXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlKGFyZ3YsYXJnbil7XG4gIHJldHVybiBjYW1sX2JhX21hcF9maWxlKGFyZ3ZbMF0sYXJndlsxXSxhcmd2WzJdLGFyZ3ZbM10sYXJndls0XSxhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsY29udGVudCl7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSlcbiAgICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KTtcbiAgZWxzZSB7XG4gICAgaWYoIWdsb2JhbFRoaXMuY2FtbF9mc190bXApIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wLnB1c2goe25hbWU6bmFtZSxjb250ZW50OmNvbnRlbnR9KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mc19pbml0XG4vL1JlcXVpcmVzOiBqc29vX2NyZWF0ZV9maWxlXG5mdW5jdGlvbiBjYW1sX2ZzX2luaXQgKCl7XG4gIHZhciB0bXA9Z2xvYmFsVGhpcy5jYW1sX2ZzX3RtcFxuICBpZih0bXApe1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyBpKyspe1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSx0bXBbaV0uY29udGVudCk7XG4gICAgfVxuICB9XG4gIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSA9IGpzb29fY3JlYXRlX2ZpbGU7XG4gIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZighIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKSBjYW1sX2ZhaWx3aXRoKFwiY2Fubm90IHJlZ2lzdGVyIGZpbGVcIik7XG4gIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKHJvb3QucmVzdCxjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpO1xuICB2YXIgY29udGVudCA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY29udGVudCk7XG4gIHJldHVybiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVhZF9maWxlX2NvbnRlbnRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmICA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy9Qcm92aWRlczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIHVuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3RpbWVcbi8vUmVxdWlyZXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiB1bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcih1bml4X2dldHRpbWVvZmRheSAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfZ210aW1lXG5mdW5jdGlvbiB1bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiB1bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfbWt0aW1lXG4vL1JlcXVpcmVzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cblxuLy9Qcm92aWRlczogd2luX3N0YXJ0dXAgY29uc3RcbmZ1bmN0aW9uIHdpbl9zdGFydHVwKCkge31cblxuLy9Qcm92aWRlczogd2luX2NsZWFudXAgY29uc3RcbmZ1bmN0aW9uIHdpbl9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogd2luX2hhbmRsZV9mZCBjb25zdFxuZnVuY3Rpb24gd2luX2hhbmRsZV9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiB1bml4X2lzYXR0eVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHVuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG4gICAgcmV0dXJuIHR0eS5pc2F0dHkoZmlsZURlc2NyaXB0b3IpPzE6MDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBtYWtlX3VuaXhfZXJyX2FyZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgdW5peF9lcnJvciA9IFtcbiAgLyogPT09VW5peC5lcnJvcj09PVxuICAgKlxuICAgKiBUaGlzIGFycmF5IGlzIGluIG9yZGVyIG9mIHRoZSB2YXJpYW50IGluIE9DYW1sXG4gICAqL1xuICBcIkUyQklHXCIsIFwiRUFDQ0VTXCIsIFwiRUFHQUlOXCIsIFwiRUJBREZcIiwgXCJFQlVTWVwiLCBcIkVDSElMRFwiLCBcIkVERUFETEtcIiwgXCJFRE9NXCIsXG4gIFwiRUVYSVNUXCIsIFwiRUZBVUxUXCIsIFwiRUZCSUdcIiwgXCJFSU5UUlwiLCBcIkVJTlZBTFwiLCBcIkVJT1wiLCBcIkVJU0RJUlwiLCBcIkVNRklMRVwiLFxuICBcIkVNTElOS1wiLCBcIkVOQU1FVE9PTE9OR1wiLCBcIkVORklMRVwiLCBcIkVOT0RFVlwiLCBcIkVOT0VOVFwiLCBcIkVOT0VYRUNcIiwgXCJFTk9MQ0tcIixcbiAgXCJFTk9NRU1cIiwgXCJFTk9TUENcIiwgXCJFTk9TWVNcIiwgXCJFTk9URElSXCIsIFwiRU5PVEVNUFRZXCIsIFwiRU5PVFRZXCIsIFwiRU5YSU9cIixcbiAgXCJFUEVSTVwiLCBcIkVQSVBFXCIsIFwiRVJBTkdFXCIsIFwiRVJPRlNcIiwgXCJFU1BJUEVcIiwgXCJFU1JDSFwiLCBcIkVYREVWXCIsIFwiRVdPVUxEQkxPQ0tcIixcbiAgXCJFSU5QUk9HUkVTU1wiLCBcIkVBTFJFQURZXCIsIFwiRU5PVFNPQ0tcIiwgXCJFREVTVEFERFJSRVFcIiwgXCJFTVNHU0laRVwiLFxuICBcIkVQUk9UT1RZUEVcIiwgXCJFTk9QUk9UT09QVFwiLCBcIkVQUk9UT05PU1VQUE9SVFwiLCBcIkVTT0NLVE5PU1VQUE9SVFwiLFxuICBcIkVPUE5PVFNVUFBcIiwgXCJFUEZOT1NVUFBPUlRcIiwgXCJFQUZOT1NVUFBPUlRcIiwgXCJFQUREUklOVVNFXCIsIFwiRUFERFJOT1RBVkFJTFwiLFxuICBcIkVORVRET1dOXCIsIFwiRU5FVFVOUkVBQ0hcIiwgXCJFTkVUUkVTRVRcIiwgXCJFQ09OTkFCT1JURURcIiwgXCJFQ09OTlJFU0VUXCIsIFwiRU5PQlVGU1wiLFxuICBcIkVJU0NPTk5cIiwgXCJFTk9UQ09OTlwiLCBcIkVTSFVURE9XTlwiLCBcIkVUT09NQU5ZUkVGU1wiLCBcIkVUSU1FRE9VVFwiLCBcIkVDT05OUkVGVVNFRFwiLFxuICBcIkVIT1NURE9XTlwiLCBcIkVIT1NUVU5SRUFDSFwiLCBcIkVMT09QXCIsIFwiRU9WRVJGTE9XXCJcbl07XG5mdW5jdGlvbiBtYWtlX3VuaXhfZXJyX2FyZ3MoY29kZSwgc3lzY2FsbCwgcGF0aCwgZXJybm8pIHtcbiAgdmFyIHZhcmlhbnQgPSB1bml4X2Vycm9yLmluZGV4T2YoY29kZSk7XG4gIGlmICh2YXJpYW50IDwgMCkge1xuICAgIC8vIERlZmF1bHQgaWYgdW5kZWZpbmVkXG4gICAgaWYgKGVycm5vID09IG51bGwpIHtcbiAgICAgIGVycm5vID0gLTk5OTlcbiAgICB9XG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgdmFyaWFudHMsIGZhbGxiYWNrIHRvIEVVTktOT1dORVJSKGludClcbiAgICB2YXJpYW50ID0gQkxPQ0soMCwgZXJybm8pO1xuICB9XG4gIHZhciBhcmdzID0gW1xuICAgIHZhcmlhbnQsXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoc3lzY2FsbCB8fCBcIlwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoIHx8IFwiXCIpXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IHVuaXhfc3RhdFxudmFyIHVuaXhfc3RhdF82NCA9IHVuaXhfc3RhdDtcblxuLy9Qcm92aWRlczogdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfbHN0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubHN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiB1bml4X2xzdGF0XG52YXIgdW5peF9sc3RhdF82NCA9IHVuaXhfbHN0YXQ7XG5cbi8vUHJvdmlkZXM6IHVuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIHVuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuZnVuY3Rpb24gdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuZnVuY3Rpb24gdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKClcbn1cblxuLy9Qcm92aWRlczogdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHVuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYoZy5xdWl0KSBnLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGcucHJvY2VzcyAmJiBnLnByb2Nlc3MuZXhpdClcbiAgICBnLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBoYW5kbGVyKGVycixmYWxzZSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSB7IGF0X2V4aXQoMCkgfVxuICAgICAgZ2xvYmFsVGhpcy5jb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyArIFwiXFxuXCIpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgbiA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICAvL25vZGVqcyBlbnZcbiAgaWYoZy5wcm9jZXNzXG4gICAgICYmIGcucHJvY2Vzcy5lbnZcbiAgICAgJiYgZy5wcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGcucHJvY2Vzcy5lbnZbbl0pO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihnLnByb2Nlc3NcbiAgICAgJiYgZy5wcm9jZXNzLmFyZ3ZcbiAgICAgJiYgZy5wcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gZy5wcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCJcbiAgICAgICYmIHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKVxuICAgICAgJiYgcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5jKSB7XG4gICAgdHJ5IHtyZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7IHJldHVybiAwfVxuICAgIGNhdGNoIChlKSB7cmV0dXJuIDF9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZihnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMgPT09ICdmdW5jdGlvbicpe1xuICAgICAgLy8gV2ViYnJvd3NlcnNcbiAgICAgIHZhciBhID0gbmV3IGdsb2JhbFRoaXMuVWludDMyQXJyYXkoMSk7XG4gICAgICBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7XG4gICAgICByZXR1cm4gWzAsYVswXV07XG4gICAgfSBlbHNlIGlmKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzID09PSAnZnVuY3Rpb24nKXtcbiAgICAgIC8vIE5vZGVqc1xuICAgICAgdmFyIGJ1ZmYgPSBnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcyg0KTtcbiAgICAgIHZhciBhID0gbmV3IGdsb2JhbFRoaXMuVWludDMyQXJyYXkoYnVmZik7XG4gICAgICByZXR1cm4gWzAsYVswXV07XG4gICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYoZy5wcm9jZXNzICYmIGcucHJvY2Vzcy5vbikge1xuICAgIGcucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBnLnByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGcuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2FycmF5LCBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3NcbmZ1bmN0aW9uIE1sRmFrZURldmljZSAocm9vdCwgZikge1xuICB0aGlzLmNvbnRlbnQ9e307XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG4gIHRoaXMubG9va3VwRnVuID0gZjtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNyZWF0ZV9kaXJfaWZfbmVlZGVkID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgY29tcCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNvbXAubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICByZXMgKz0gY29tcFtpXSArIFwiL1wiO1xuICAgIGlmKHRoaXMuY29udGVudFtyZXNdKSBjb250aW51ZTtcbiAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5zbGFzaCA9IGZ1bmN0aW9uKG5hbWUpe1xuICByZXR1cm4gL1xcLyQvLnRlc3QobmFtZSk/bmFtZToobmFtZSArIFwiL1wiKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24obmFtZSkge1xuICBpZighdGhpcy5jb250ZW50W25hbWVdICYmIHRoaXMubG9va3VwRnVuKSB7XG4gICAgdmFyIHJlcyA9IHRoaXMubG9va3VwRnVuKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5yb290KSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKSk7XG4gICAgaWYocmVzICE9PSAwKSB7XG4gICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgdGhpcy5jb250ZW50W25hbWVdPW5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHJlc1sxXSkpO1xuICAgIH1cbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gIGlmKG5hbWUgPT0gXCJcIikgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSkgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZmlsZSBleGlzdHNcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsbW9kZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVFWElTVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IEZpbGUgZXhpc3RzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcGFyZW50ID0gL14oLiopXFwvW14vXSsvLmV4ZWMobmFtZSk7XG4gIHBhcmVudCA9IChwYXJlbnQgJiYgcGFyZW50WzFdKSB8fCAnJztcbiAgaWYoIXRoaXMuZXhpc3RzKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0aGlzLnNsYXNoKG5hbWUpKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgaWYobi5tYXRjaChyKSkge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVEVNUFRZXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiOiBEaXJlY3Rvcnkgbm90IGVtcHR5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVfc2xhc2hdO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gIH1cbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgdmFyIHNlZW4gPSB7fVxuICB2YXIgYSA9IFtdO1xuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgdmFyIG0gPSBuLm1hdGNoKHIpO1xuICAgIGlmKG0gJiYgIXNlZW5bbVsxXV0pIHtzZWVuW21bMV1dID0gdHJ1ZTsgYS5wdXNoKG1bMV0pfVxuICB9XG4gIHJldHVybiBhO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKG5hbWUgPT0gXCJcIikgIHJldHVybiB0cnVlO1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBvayA9IHRoaXMuY29udGVudFtuYW1lXT90cnVlOmZhbHNlO1xuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICByZXR1cm4gb2s7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgdmFyIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICAgIHJldHVybiBmaWxlO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBNbEZha2VGaWxlKGNvbnRlbnQpe1xuICB0aGlzLmRhdGEgPSBjb250ZW50O1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9zdHJpbmcoYnVmLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBidWYsIHBvcywgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLnJlYWRfb25lID0gZnVuY3Rpb24ob2Zmc2V0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZ2V0KHRoaXMuZGF0YSwgb2Zmc2V0KTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcblxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VGaWxlXG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHNbXCJfbmF0XCJdID1cbiAgICB7IGRlc2VyaWFsaXplIDogZGVzZXJpYWxpemVfbmF0LFxuICAgICAgc2VyaWFsaXplIDogc2VyaWFsaXplX25hdCxcbiAgICAgIGhhc2ggOiBjYW1sX2hhc2hfbmF0XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuZnVuY3Rpb24gTWxOYXQoeCl7XG4gIHRoaXMuZGF0YSA9IG5ldyBnbG9iYWxUaGlzLkludDMyQXJyYXkoeCk7XG4gIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgLy8gd29yayBvdXQgcmlnaHQuIFRoZSArMiB0byBhcnJheSBsZW5ndGggc2VlbXMgdG8gd29yay5cbiAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoICsgMlxufVxuXG5NbE5hdC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9uYXRcIjtcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX25hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbmF0KHgpIHtcbiAgdmFyIGxlbiA9IG51bV9kaWdpdHNfbmF0KHgsIDAsIHguZGF0YS5sZW5ndGgpO1xuICB2YXIgaCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgeC5kYXRhW2ldKTtcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBuYXRfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBuYXRfb2ZfYXJyYXkobCl7XG4gIHJldHVybiBuZXcgTWxOYXQobCk7XG59XG5cbi8vUHJvdmlkZXM6IGNyZWF0ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBjcmVhdGVfbmF0KHNpemUpIHtcbiAgdmFyIGFyciA9IG5ldyBNbE5hdChzaXplKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gbmF0Mi5kYXRhW29mczIraV07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXQobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXQobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gbnVtX2RpZ2l0c19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmKG5hdC5kYXRhW29mcytpXSAhPSAwKSByZXR1cm4gaSsxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZihhICYgMHhGRkZGMDAwMCkgeyBiICs9MTY7IGEgPj4+PTE2OyB9XG4gIGlmKGEgJiAweEZGMDApICAgICB7IGIgKz0gODsgYSA+Pj49IDg7IH1cbiAgaWYoYSAmIDB4RjApICAgICAgIHsgYiArPSA0OyBhID4+Pj0gNDsgfVxuICBpZihhICYgMTIpICAgICAgICAgeyBiICs9IDI7IGEgPj4+PSAyOyB9XG4gIGlmKGEgJiAyKSAgICAgICAgICB7IGIgKz0gMTsgYSA+Pj49IDE7IH1cbiAgaWYoYSAmIDEpICAgICAgICAgIHsgYiArPSAxOyB9XG4gIHJldHVybiAzMiAtIGI7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X2ludFxuZnVuY3Rpb24gaXNfZGlnaXRfaW50KG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdID49IDApIHJldHVybiAxXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF96ZXJvXG5mdW5jdGlvbiBpc19kaWdpdF96ZXJvKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gPT0gMCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9vZGRcbmZ1bmN0aW9uIGlzX2RpZ2l0X29kZChuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdICYgMSkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbmNyX25hdFxuZnVuY3Rpb24gaW5jcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoeCB8IDApO1xuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogYWRkX25hdFxuLy9SZXF1aXJlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5jcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIGNhcnJ5KTtcbn1cblxuLy9Qcm92aWRlczogY29tcGxlbWVudF9uYXRcbmZ1bmN0aW9uIGNvbXBsZW1lbnRfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKC0xID4+PiAwKSAtIChuYXQuZGF0YVtvZnMraV0gPj4+IDApO1xuICB9XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vL1Byb3ZpZGVzOiBkZWNyX25hdFxuZnVuY3Rpb24gZGVjcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+MCkgLSBib3Jyb3c7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAoYm9ycm93ID09IDEpID8gMCA6IDE7XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IHN1Yl9uYXRcbi8vUmVxdWlyZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBzdWJfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSAtIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgLSBib3Jyb3c7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgKGJvcnJvdz09MSk/MDoxKTtcbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1tvZnMzXVxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBtdWx0X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogYWRkX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBhID0gKG5hdDMuZGF0YVtvZnMzXSA+Pj4gMCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeDEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhICYgMHgwMDAwRkZGRikgKyBjYXJyeTtcbiAgICB2YXIgeDIgPSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgPj4+IDE2KTtcbiAgICBjYXJyeSA9IE1hdGguZmxvb3IoeDIvNjU1MzYpO1xuICAgIHZhciB4MyA9IHgxICsgKHgyICUgNjU1MzYpICogNjU1MzY7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4MztcbiAgICBjYXJyeSArPSBNYXRoLmZsb29yKHgzLzQyOTQ5NjcyOTYpO1xuICB9XG5cbiAgaWYobGVuMiA8IGxlbjEgJiYgY2FycnkpIHtcbiAgICByZXR1cm4gYWRkX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgbmF0X29mX2FycmF5KFtjYXJyeV0pLCAwLCAxLCAwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2Fycnk7XG4gIH1cbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1xuLy8gbGVuMSA+PSBsZW4yICsgbGVuMy5cbi8vUHJvdmlkZXM6IG11bHRfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X2RpZ2l0X25hdFxuZnVuY3Rpb24gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMywgbGVuMykge1xuICB2YXIgY2FycnkgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMzsgaSsrKSB7XG4gICAgY2FycnkgKz0gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMStpLCBsZW4xLWksIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMraSk7XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBuYXQxID0gMiAqIG5hdDEgKyBuYXQyICogbmF0MlxuLy8gbGVuMSA+PSAyICogbGVuMlxuLy9Qcm92aWRlczogc3F1YXJlX25hdFxuLy9SZXF1aXJlczogbXVsdF9uYXQsIGFkZF9uYXRcbmZ1bmN0aW9uIHNxdWFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgY2FycnkgPSAwO1xuICBjYXJyeSArPSBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDEsIG9mczEsIGxlbjEsIDApO1xuICBjYXJyeSArPSBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKTtcbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG5cbi8vIDAgPD0gc2hpZnQgPCAzMlxuLy9Qcm92aWRlczogc2hpZnRfbGVmdF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjE7IGkrKykge1xuICAgIHZhciBhID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IChhIDw8IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPj4+ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy8gQXNzdW1pbmcgYyA+IGEsIHJldHVybnMgW3F1b3RpZW50LCByZW1haW5kZXJdIG9mIChhPDwzMiArIGIpL2Ncbi8vUHJvdmlkZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9oZWxwZXIoYSwgYiwgYykge1xuICB2YXIgeCA9IGEgKiA2NTUzNiArIChiPj4+MTYpO1xuICB2YXIgeSA9IE1hdGguZmxvb3IoeC9jKSAqIDY1NTM2O1xuICB2YXIgeiA9ICh4ICUgYykgKiA2NTUzNjtcbiAgdmFyIHcgPSB6ICsgKGIgJiAweDAwMDBGRkZGKTtcbiAgcmV0dXJuIFt5ICsgTWF0aC5mbG9vcih3L2MpLCB3ICUgY107XG59XG5cbi8vIG5hdDFbb2ZzMStsZW5dIDwgbmF0MltvZnMyXVxuLy9Qcm92aWRlczogZGl2X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2RpZ2l0X25hdChuYXRxLCBvZnNxLCBuYXRyLCBvZnNyLCBuYXQxLCBvZnMxLCBsZW4sIG5hdDIsIG9mczIpIHtcbiAgdmFyIHJlbSA9IChuYXQxLmRhdGFbb2ZzMStsZW4tMV0gPj4+MCk7XG4gIC8vIG5hdHFbb2ZzcStsZW4tMV0gaXMgZ3VhcmFudGVlZCB0byBiZSB6ZXJvIChkdWUgdG8gdGhlIE1TRCByZXF1aXJlbWVudCksXG4gIC8vIGFuZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uXG4gIGZvcih2YXIgaSA9IGxlbi0yOyBpID49IDA7IGktLSkge1xuICAgIHZhciB4ID0gZGl2X2hlbHBlcihyZW0sIChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCksIChuYXQyLmRhdGFbb2ZzMl0gPj4+IDApKTtcbiAgICBuYXRxLmRhdGFbb2ZzcStpXSA9IHhbMF07XG4gICAgcmVtID0geFsxXTtcbiAgfVxuICBuYXRyLmRhdGFbb2Zzcl0gPSByZW07XG4gIHJldHVybiAwO1xufVxuXG4vLyBuYXQxW25hdDI6XSA6PSBuYXQxIC8gbmF0MlxuLy8gbmF0MVs6bmF0Ml0gOj0gbmF0MSAlIG5hdDJcbi8vIGxlbjEgPiBsZW4yLCBuYXQyW29mczIrbGVuMi0xXSA+IG5hdDFbb2ZzMStsZW4xLTFdXG4vL1Byb3ZpZGVzOiBkaXZfbmF0XG4vL1JlcXVpcmVzOiBkaXZfZGlnaXRfbmF0LCBkaXZfaGVscGVyLCBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQsIHNoaWZ0X2xlZnRfbmF0LCBzaGlmdF9yaWdodF9uYXQsIGNyZWF0ZV9uYXQsIHNldF90b196ZXJvX25hdCwgbXVsdF9kaWdpdF9uYXQsIHN1Yl9uYXQsIGNvbXBhcmVfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIGRpdl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICBpZihsZW4yID09IDEpIHtcbiAgICBkaXZfZGlnaXRfbmF0KG5hdDEsIG9mczErMSwgbmF0MSwgb2ZzMSwgbmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMik7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgcyA9IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQyLCBvZnMyK2xlbjItMSk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuXG4gIHZhciBkID0gKG5hdDIuZGF0YVtvZnMyK2xlbjItMV0gPj4+IDApICsgMTtcbiAgdmFyIGEgPSBjcmVhdGVfbmF0KGxlbjIrMSk7XG4gIGZvciAodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSBsZW4yOyBpLS0pIHtcbiAgICAvLyBEZWNlbnQgbG93ZXIgYm91bmQgb24gcXVvXG4gICAgdmFyIHF1byA9IGQgPT0gNDI5NDk2NzI5NiA/IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgOiBkaXZfaGVscGVyKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCksIChuYXQxLmRhdGFbb2ZzMStpLTFdID4+PjApLCBkKVswXTtcbiAgICBzZXRfdG9femVyb19uYXQoYSwgMCwgbGVuMisxKTtcbiAgICBtdWx0X2RpZ2l0X25hdChhLCAwLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbcXVvXSksIDApO1xuICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgYSwgMCwgbGVuMisxLCAxKTtcblxuICAgIHdoaWxlIChuYXQxLmRhdGFbb2ZzMStpXSAhPSAwIHx8IGNvbXBhcmVfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKSA+PSAwKSB7XG4gICAgICBxdW8gPSBxdW8gKyAxO1xuICAgICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCAxKTtcbiAgICB9XG5cbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHF1bztcbiAgfVxuXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHNoaWZ0IHJlbWFpbmRlclxuICBzaGlmdF9yaWdodF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyByZXN0b3JlXG4gIHJldHVybiAwO1xufVxuXG5cbi8vIDAgPD0gc2hpZnQgPCAzMlxuLy9Qcm92aWRlczogc2hpZnRfcmlnaHRfbmF0XG5mdW5jdGlvbiBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSBsZW4xLTE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGEgPSBuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMDtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IChhID4+PiBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhIDw8ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBpZihuYXQxLmRhdGFbb2ZzMV0gPiBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAxO1xuICBpZihuYXQxLmRhdGFbb2ZzMV0gPCBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0XG4vL1JlcXVpcmVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgYSA9IG51bV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIGxlbjEpO1xuICB2YXIgYiA9IG51bV9kaWdpdHNfbmF0KG5hdDIsIG9mczIsIGxlbjIpO1xuICBpZihhID4gYikgcmV0dXJuIDE7XG4gIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gIGZvcih2YXIgaSA9IGxlbjEgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApID4gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIDE7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPCAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0X3JlYWxcbi8vUmVxdWlyZXM6IGNvbXBhcmVfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdF9yZWFsKG5hdDEsbmF0Mil7XG4gIHJldHVybiBjb21wYXJlX25hdChuYXQxLDAsbmF0MS5kYXRhLmxlbmd0aCxuYXQyLDAsbmF0Mi5kYXRhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IHNlcmlhbGl6ZV9uYXRcbmZ1bmN0aW9uIHNlcmlhbGl6ZV9uYXQod3JpdGVyLCBuYXQsIHN6KXtcbiAgdmFyIGxlbiA9IG5hdC5kYXRhLmxlbmd0aDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIHdyaXRlci53cml0ZSgzMiwgbmF0LmRhdGFbaV0pO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgc3pbMV0gPSBsZW4gKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBkZXNlcmlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZV9uYXQocmVhZGVyLCBzeil7XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIgbmF0ID0gbmV3IE1sTmF0KGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgbmF0LmRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgcmV0dXJuIG5hdDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBbMCxjYW1sX25hbWVkX3ZhbHVlKFwiR3JhcGhpY3MuR3JhcGhpY19mYWlsdXJlXCIpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpXVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSl7XG4gICAgdmFyIHJlcyA9IGluZm8ubWF0Y2goXCIoXnwsKSAqXCIrbmFtZStcIiAqPSAqKFthLXpBLVowLTlfXSspICooLHwkKVwiKTtcbiAgICBpZihyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmKCEoaW5mbz09XCJcIikpIHNwZWNzLnB1c2goaW5mbyk7XG4gIHZhciB0YXJnZXQgPSBnZXQoXCJ0YXJnZXRcIik7XG4gIGlmKCF0YXJnZXQpIHRhcmdldD1cIlwiO1xuICB2YXIgc3RhdHVzID0gZ2V0KFwic3RhdHVzXCIpO1xuICBpZighc3RhdHVzKSBzcGVjcy5wdXNoKFwic3RhdHVzPTFcIilcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdz9wYXJzZUludCh3KToyMDA7XG4gIHNwZWNzLnB1c2goXCJ3aWR0aD1cIit3KTtcblxuICB2YXIgaCA9IGdldChcImhlaWdodFwiKTtcbiAgaCA9IGg/cGFyc2VJbnQoaCk6MjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiK2gpO1xuXG4gIHZhciB3aW4gPSBnLm9wZW4oXCJhYm91dDpibGFua1wiLHRhcmdldCxzcGVjcy5qb2luKFwiLFwiKSk7XG4gIGlmKCF3aW4pIHtjYW1sX2ZhaWx3aXRoKFwiR3JhcGhpY3Mub3Blbl9ncmFwaDogY2Fubm90IG9wZW4gdGhlIHdpbmRvd1wiKX1cbiAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgdmFyIGNhbnZhcyA9IGRvYy5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3O1xuICBjYW52YXMuaGVpZ2h0ID0gaDtcbiAgdmFyIGN0eCA9IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCl7XG4gIGNhbWxfZ3JfbW92ZXRvKGNhbWxfZ3Jfc3RhdGUueCxjYW1sX2dyX3N0YXRlLnkpO1xuICBjYW1sX2dyX3Jlc2l6ZV93aW5kb3coY2FtbF9ncl9zdGF0ZS53aWR0aCxjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKXtcbiAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgY2FudmFzIDogY2FudmFzLFxuICAgIHggOiAwLFxuICAgIHkgOiAwLFxuICAgIHdpZHRoIDogdyxcbiAgICBoZWlnaHQgOiBoLFxuICAgIGxpbmVfd2lkdGggOiAxLFxuICAgIGZvbnQgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiZml4ZWRcIiksXG4gICAgdGV4dF9zaXplIDogMjYsXG4gICAgY29sb3IgOiAweDAwMDAwMCxcbiAgICB0aXRsZSA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIilcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kb2Nfb2Zfc3RhdGVcbmZ1bmN0aW9uIGNhbWxfZ3JfZG9jX29mX3N0YXRlKHN0YXRlKSB7XG4gIGlmKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KVxuICAgIHJldHVybiBzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2VfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IDA7XG4gIHMuY2FudmFzLmhlaWdodCA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKG5hbWUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKHMuc2V0X3RpdGxlKSBzLnNldF90aXRsZShqc25hbWUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9yZXNpemVfd2luZG93KHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKVxuICBzLndpZHRoID0gdztcbiAgcy5oZWlnaHQgPSBoO1xuICBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gIC8vICBzLmNvbnRleHQuc3Ryb2tlUmVjdCAoMC4sIDAuLCBzLndpZHRoLCBzLmhlaWdodCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMud2lkdGg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfY29sb3IoY29sb3Ipe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGZ1bmN0aW9uIGNvbnZlcnQobnVtYmVyKSB7XG4gICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IDIpIHN0ciA9ICcwJyArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhclxuICByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gIGcgPSAoY29sb3IgPj4gOCkgICYgMHhmZixcbiAgYiA9IChjb2xvciA+PiAwKSAgJiAweGZmO1xuICBzLmNvbG9yPWNvbG9yO1xuICB2YXIgY19zdHIgPSAnIycgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSAgIGNfc3RyO1xuICBzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjX3N0cjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Bsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Bsb3QoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIGRbMV0gPSAoY29sb3IgPj4gOCkgICYgMHhmZiwgLy9nXG4gIGRbMl0gPSAoY29sb3IgPj4gMCkgICYgMHhmZjsgLy9iXG4gIGRbM10gPSAweEZGOyAvL2FcbiAgcy54PXg7XG4gIHMueT15O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLHgscy5oZWlnaHQgLSB5KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcG9pbnRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3BvaW50X2NvbG9yKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIHksMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy54XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9saW5ldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2xpbmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLmNvbnRleHQubGluZVRvKHgscy5oZWlnaHQgLSB5KTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuc3Ryb2tlUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9hcmNfYXV4KGN0eCxjeCxjeSxyeSxyeCxhMSxhMil7XG4gIHdoaWxlKGExPmEyKSBhMis9MzYwO1xuICBhMSAvPSAxODA7XG4gIGEyIC89IDE4MDtcbiAgdmFyIHJvdCA9IDAseFBvcyx5UG9zLHhQb3NfcHJldix5UG9zX3ByZXY7XG4gIHZhciBzcGFjZSA9IDI7XG4gIHZhciBudW0gPSAoKChhMiAtIGExKSAqIE1hdGguUEkgKiAoKHJ4K3J5KS8yKSkgLyBzcGFjZSkgfCAwO1xuICB2YXIgZGVsdGEgPSAoYTIgLSBhMSkgKiBNYXRoLlBJIC8gbnVtO1xuICB2YXIgaSA9IGExICogTWF0aC5QSTtcbiAgZm9yICh2YXIgaj0wO2o8PW51bTtqKyspe1xuICAgIHhQb3MgPSBjeCAtIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeFBvcyA9IHhQb3MudG9GaXhlZCgyKTtcbiAgICB5UG9zID0gY3kgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGo9PTApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYhPXhQb3MgfHwgeVBvc19wcmV2IT15UG9zKXtcbiAgICAgIGN0eC5saW5lVG8oeFBvcywgeVBvcyk7XG4gICAgfVxuICAgIHhQb3NfcHJldj14UG9zO1xuICAgIHlQb3NfcHJldj15UG9zO1xuICAgIGktPSBkZWx0YTsvL2Njd1xuICB9XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfbGluZV93aWR0aCh3KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gd1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuZmlsbFJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3BvbHlcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcG9seShhcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBmb3IodmFyIGkgPSAyOyBpIDwgYXIubGVuZ3RoOyBpKyspXG4gICAgcy5jb250ZXh0LmxpbmVUbyhhcltpXVsxXSxzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHIoc3RyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgbSA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChzdHIpO1xuICB2YXIgZHggPSBtLndpZHRoO1xuICBzLmNvbnRleHQuZmlsbFRleHQoc3RyLHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMueCArPSBkeCB8IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfY2hhclxuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2NoYXIoYyl7XG4gIGNhbWxfZ3JfZHJhd19zdHIoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cmluZyhzdHIpe1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuZm9udCA9IGY7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF90ZXh0X3NpemUoc2l6ZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50ZXh0X3NpemUgPSBzaXplO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3RleHRfc2l6ZSh0eHQpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsdyxzLnRleHRfc2l6ZV07XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGggPSBhcnIubGVuZ3RoIC0gMSA7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodyxoKTtcbiAgZm9yKHZhciBpPTA7aTxoO2krKyl7XG4gICAgZm9yKHZhciBqPTA7ajx3O2orKyl7XG4gICAgICB2YXIgYyA9IGFycltpKzFdW2orMV07XG4gICAgICB2YXIgbyA9IGkqKHcqNCkgKyAoaiAqIDQpO1xuICAgICAgaWYoYyA9PSAtMSkge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IGMgPj4gMTYgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IGMgPj4gIDggJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IGMgPj4gIDAgJiAwWGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDB4ZmY7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKXtcbiAgdmFyIGRhdGEgPSBbMF1cbiAgZm9yKHZhciBpPTA7IGk8aW0uaGVpZ2h0O2krKyl7XG4gICAgZGF0YVtpKzFdID0gWzBdXG4gICAgZm9yKHZhciBqPTA7IGo8aW0ud2lkdGg7aisrKXtcbiAgICAgIHZhciBvID0gaSooaW0ud2lkdGgqNCkgKyAoaiAqIDQpLFxuICAgICAgICAgIHIgPSBpbS5kYXRhW28rMF0sXG4gICAgICAgICAgZyA9IGltLmRhdGFbbysxXSxcbiAgICAgICAgICBiID0gaW0uZGF0YVtvKzJdO1xuICAgICAgZGF0YVtpKzFdW2orMV0gPSAociA8PCAxNikgKyAoZyA8PCA4KSArIGJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmKCFpbS5pbWFnZSkge1xuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikucHV0SW1hZ2VEYXRhKGltLDAsMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgICAgIGltLmltYWdlID0gaW1hZ2U7XG4gICAgfVxuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NyZWF0ZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3JlYXRlX2ltYWdlKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoeCx5KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYmxpdF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfYmxpdF9pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbTIgPSBzLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5LGltLndpZHRoLGltLmhlaWdodCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW0yLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICBpbS5kYXRhW2ldID0gaW0yLmRhdGFbaV07XG4gICAgaW0uZGF0YVtpKzFdID0gaW0yLmRhdGFbaSsxXTtcbiAgICBpbS5kYXRhW2krMl0gPSBpbTIuZGF0YVtpKzJdO1xuICAgIGltLmRhdGFbaSszXSA9IGltMi5kYXRhW2krM107XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXJcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9faGFuZGxlcigpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dhaXRfZXZlbnRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2FpdF9ldmVudChfZXZsKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfc3luY2hyb25pemUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9yZW1lbWJlcl9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3JlbWVtYmVyX21vZGUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZGlzcGxheV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Rpc3BsYXlfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfZGlzcGxheV9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl93aW5kb3dfaWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2luZG93X2lkKGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2luZG93X2lkIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX3N1YndpbmRvdyhhLGIsYyxkKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbFN0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gTWxTdHJpbmdSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTsgdGhpcy5pID0gaTsgfVxuTWxTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMykpID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zdWJzdHJpbmcoaSwgaSArIGxlbikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfVxufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzIChhKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKGNhbWxfaW50NjRfb2ZfYnl0ZXMgKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlclxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChzLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICBzaXplWzBdID0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMgKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyAodik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB3cml0ZXIud3JpdGUgKDgsIGJbaV0pO1xuICBzaXplc1swXSA9IDg7IHNpemVzWzFdID0gODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl91bm1hcnNoYWxcbmZ1bmN0aW9uIGNhbWxfaW50MzJfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHNpemVbMF0gPSA0O1xuICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHN3aXRjaCAocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6XG4gICAgc2l6ZVswXSA9IDQ7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICBjYXNlIDI6XG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBuYXRpdmUgaW50ZWdlciB2YWx1ZSB0b28gbGFyZ2VcIik7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPVxuICAgIHtcIl9qXCI6IHtcbiAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQ2NF91bm1hcnNoYWwsXG4gICAgICBzZXJpYWxpemUgIDogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgICAgZml4ZWRfbGVuZ3RoIDogOCxcbiAgICAgIGNvbXBhcmUgOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgICBoYXNoIDogY2FtbF9pbnQ2NF9oYXNoXG4gICAgfSxcbiAgICAgXCJfaVwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9uXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9iaWdhcnJheVwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyYXlcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyMDJcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycjAyXCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH1cbiAgICB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9mbG9hdF9vZl9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG5cbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpIHtcbiAgdmFyIF9tYWdpYyA9IHJlYWRlci5yZWFkMzJ1ICgpXG4gIHZhciBfYmxvY2tfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICB2YXIgX3NpemVfMzIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKCkge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIgLSBvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyIC0gb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlciAtIG9mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdmFyIHJlcyA9IGludGVybl9yZWMgKCk7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjICgpO1xuICB9XG4gIGlmICh0eXBlb2Ygb2ZzIT1cIm51bWJlclwiKSBvZnNbMF0gPSByZWFkZXIuaTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICBmdW5jdGlvbiBnZXQzMihzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSA8PCAyNCkgfFxuICAgICAgKGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSArIDIpIDw8IDgpIHxcbiAgICAgIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMyk7XG4gIH1cbiAgaWYgKGdldDMyKHMsIG9mcykgIT0gKDB4ODQ5NUE2QkV8MCkpXG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICByZXR1cm4gKGdldDMyKHMsIG9mcyArIDQpKTtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuV2Vha01hcCgpO1xuICB9O1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5zdG9yZSA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5sb29rdXAuc2V0KHYsIHRoaXMub2Jqcy5sZW5ndGgpO1xuICB0aGlzLm9ianMucHVzaCh2KTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUucmVjYWxsID0gZnVuY3Rpb24odikge1xuICB2YXIgaSA9IHRoaXMubG9va3VwLmdldCh2KTtcbiAgcmV0dXJuIChpID09PSB1bmRlZmluZWQpXG4gICAgPyB1bmRlZmluZWQgOiB0aGlzLm9ianMubGVuZ3RoIC0gaTsgICAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZVxuLy9WZXJzaW9uOiA+PSA0LjA4XG52YXIgY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUgPSBmYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZVxuLy9WZXJzaW9uOiA8IDQuMDhcbnZhciBjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSA9IHRydWVcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbnZhciBjYW1sX291dHB1dF92YWwgPSBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gV3JpdGVyICgpIHsgdGhpcy5jaHVuayA9IFtdOyB9XG4gIFdyaXRlci5wcm90b3R5cGUgPSB7XG4gICAgY2h1bmtfaWR4OjIwLCBibG9ja19sZW46MCwgb2JqX2NvdW50ZXI6MCwgc2l6ZV8zMjowLCBzaXplXzY0OjAsXG4gICAgd3JpdGU6ZnVuY3Rpb24gKHNpemUsIHZhbHVlKSB7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9hdDpmdW5jdGlvbiAocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3BvcysrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9jb2RlOmZ1bmN0aW9uIChzaXplLCBjb2RlLCB2YWx1ZSkge1xuICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9IGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9zaGFyZWQ6ZnVuY3Rpb24gKG9mZnNldCkge1xuICAgICAgaWYgKG9mZnNldCA8ICgxIDw8IDgpKSB0aGlzLndyaXRlX2NvZGUoOCwgMHgwNCAvKmNzdC5DT0RFX1NIQVJFRDgqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgaWYgKG9mZnNldCA8ICgxIDw8IDE2KSkgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9LFxuICAgIHBvczpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmNodW5rX2lkeCB9LFxuICAgIGZpbmFsaXplOmZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuYmxvY2tfbGVuID0gdGhpcy5jaHVua19pZHggLSAyMDtcbiAgICAgIHRoaXMuY2h1bmtfaWR4ID0gMDtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCAweDg0OTVBNkJFKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLmJsb2NrX2xlbik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5vYmpfY291bnRlcik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfNjQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2h1bms7XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbiAodiwgZmxhZ3MpIHtcbiAgICBmbGFncyA9IGNhbWxfbGlzdF90b19qc19hcnJheShmbGFncyk7XG5cbiAgICB2YXIgbm9fc2hhcmluZyA9IChmbGFncy5pbmRleE9mKDAgLypNYXJzaGFsLk5vX3NoYXJpbmcqLykgIT09IC0xKSxcbiAgICAgICAgY2xvc3VyZXMgPSAgKGZsYWdzLmluZGV4T2YoMSAvKk1hcnNoYWwuQ2xvc3VyZXMqLykgIT09IC0xKTtcbiAgICAvKiBNYXJzaGFsLkNvbXBhdF8zMiBpcyByZWR1bmRhbnQgc2luY2UgaW50ZWdlcnMgYXJlIDMyLWJpdCBhbnl3YXkgKi9cblxuICAgIGlmIChjbG9zdXJlcylcbiAgICAgIGdsb2JhbFRoaXMuY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDEyIC8qY3N0LkNPREVfQ1VTVE9NKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgfSBlbHNlIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIGRlbGV0ZSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0ZF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zdGRfb3V0cHV0KGNoYW5pZCxzKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBzdHIgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpO1xuICB2YXIgc2xlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIpO1xuICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIHN0ciwgMCwgc2xlbik7XG4gIGNoYW4ub2Zmc2V0ICs9IHNsZW47XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nbG9iYWxfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsTWxGYWtlRmlsZVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyLCBqc19wcmludF9zdGRvdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RkX291dHB1dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoaWR4LG91dHB1dCxmaWxlLGZsYWdzKSB7XG4gIGlmKGNhbWxfZ2xvYmFsX2RhdGEuZmRzID09PSB1bmRlZmluZWQpIGNhbWxfZ2xvYmFsX2RhdGEuZmRzID0gbmV3IEFycmF5KCk7XG4gIGZsYWdzPWZsYWdzP2ZsYWdzOnt9O1xuICB2YXIgaW5mbyA9IHt9O1xuICBpbmZvLmZpbGUgPSBmaWxlO1xuICBpbmZvLm9mZnNldCA9IGZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjA7XG4gIGluZm8uZmxhZ3MgPSBmbGFncztcbiAgaW5mby5vdXRwdXQgPSBvdXRwdXQ7XG4gIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2lkeF0gPSBpbmZvO1xuICBpZighY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeCB8fCBpZHggPiBjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4KVxuICAgIGNhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHggPSBpZHg7XG4gIHJldHVybiBpZHg7XG59XG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuIChuYW1lLCBmbGFncywgX3Blcm1zKSB7XG4gIHZhciBmID0ge307XG4gIHdoaWxlKGZsYWdzKXtcbiAgICBzd2l0Y2goZmxhZ3NbMV0pe1xuICAgIGNhc2UgMDogZi5yZG9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMTogZi53cm9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMjogZi5hcHBlbmQgPSAxO2JyZWFrO1xuICAgIGNhc2UgMzogZi5jcmVhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNDogZi50cnVuY2F0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA1OiBmLmV4Y2wgPSAxOyBicmVhaztcbiAgICBjYXNlIDY6IGYuYmluYXJ5ID0gMTticmVhaztcbiAgICBjYXNlIDc6IGYudGV4dCA9IDE7YnJlYWs7XG4gICAgY2FzZSA4OiBmLm5vbmJsb2NrID0gMTticmVhaztcbiAgICB9XG4gICAgZmxhZ3M9ZmxhZ3NbMl07XG4gIH1cbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LGYpO1xuICB2YXIgaWR4ID0gY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeD9jYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4OjA7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChpZHgrMSxjYW1sX3N0ZF9vdXRwdXQsZmlsZSxmKTtcbn1cbmNhbWxfc3lzX29wZW5faW50ZXJuYWwoMCxjYW1sX3N0ZF9vdXRwdXQsIG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKSk7IC8vc3RkaW5cbmNhbWxfc3lzX29wZW5faW50ZXJuYWwoMSxqc19wcmludF9zdGRvdXQsIG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKSk7IC8vc3Rkb3V0XG5jYW1sX3N5c19vcGVuX2ludGVybmFsKDIsanNfcHJpbnRfc3RkZXJyLCBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSkpOyAvL3N0ZGVyclxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKCkge1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfZ2xvYmFsX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbZmRdO1xuICBpZihkYXRhLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpkYXRhLmZpbGUsXG4gICAgb2Zmc2V0OmRhdGEub2Zmc2V0LFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcjpcIlwiXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3lzX29wZW4sY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZGF0YSA9IGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2ZkXTtcbiAgaWYoZGF0YS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgaWYoZmQgPT0gMCAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKXtcbiAgICB2YXIgZnMgPSByZXF1aXJlKCdmcycpO1xuICAgIHJlZmlsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhmcy5yZWFkRmlsZVN5bmMoMCwgJ3V0ZjgnKSl9O1xuICB9XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZGF0YS5maWxlLFxuICAgIG9mZnNldDpkYXRhLm9mZnNldCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6IGZhbHNlLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG52YXIgd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsID0gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3JcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlKGNoYW5pZCxtb2RlKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBkYXRhID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF07XG4gIGRhdGEuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGRhdGEuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9JbnB1dCBmcm9tIGluX2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9jbG9zZV9jaGFubmVsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jbG9zZVxuZnVuY3Rpb24gY2FtbF9tbF9jbG9zZV9jaGFubmVsIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgY2hhbi5maWxlLmNsb3NlKCk7XG4gIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5maWxlLmxlbmd0aCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGggKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQoY2hhbmlkLGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdLm91dHB1dCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX21sX3JlZmlsbF9pbnB1dCAoY2hhbikge1xuICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgdmFyIHN0cl9sZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyKTtcbiAgaWYgKHN0cl9sZW4gPT0gMCkgY2hhbi5yZWZpbGwgPSBudWxsO1xuICBjaGFuLmZpbGUud3JpdGUoY2hhbi5maWxlLmxlbmd0aCgpLCBzdHIsIDAsIHN0cl9sZW4pO1xuICByZXR1cm4gc3RyX2xlbjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCA9PSBudWxsKSByZXR1cm47XG4gIGlmIChjaGFuLmZpbGUubGVuZ3RoKCkgIT0gY2hhbi5vZmZzZXQpIHJldHVybjtcbiAgY2FtbF9tbF9yZWZpbGxfaW5wdXQgKGNoYW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3JlZmlsbF9pbnB1dCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dCAoY2hhbmlkLCBzLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbDIgPSBjaGFuLmZpbGUubGVuZ3RoKCkgLSBjaGFuLm9mZnNldDtcbiAgaWYgKGwyID09IDAgJiYgY2hhbi5yZWZpbGwgIT0gbnVsbCkgbDIgPSBjYW1sX21sX3JlZmlsbF9pbnB1dChjaGFuKTtcbiAgaWYgKGwyIDwgbCkgbCA9IGwyO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCwgcywgaSwgbCk7XG4gIGNoYW4ub2Zmc2V0ICs9IGw7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG5cbiAgdmFyIGJ1ZiA9IGNhbWxfY3JlYXRlX2J5dGVzKDgpO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCw4KTtcblxuICAvLyBIZWFkZXIgaXMgMjAgYnl0ZXNcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKGJ1ZiwgMCkgKyAyMDtcblxuICB2YXIgYnVmID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsYnVmLDAsbGVuKTtcblxuICB2YXIgb2Zmc2V0ID0gWzBdO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGJ1Ziwgb2Zmc2V0KTtcbiAgY2hhbi5vZmZzZXQgPSBjaGFuLm9mZnNldCArIG9mZnNldFswXTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhciAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQoY2hhbmlkKTtcbiAgaWYgKGNoYW4ub2Zmc2V0ID49IGNoYW4uZmlsZS5sZW5ndGgoKSlcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmZpbGUucmVhZF9vbmUoY2hhbi5vZmZzZXQpO1xuICBjaGFuLm9mZnNldCsrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9yZWZpbGxfaW5wdXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBmaWxlID0gY2hhbi5maWxlO1xuICB3aGlsZSAoKGNoYW4ub2Zmc2V0ICsgMykgPj0gZmlsZS5sZW5ndGgoKSkge1xuICAgIHZhciBsID0gY2FtbF9tbF9yZWZpbGxfaW5wdXQoY2hhbik7XG4gICAgaWYgKGwgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9XG4gIHZhciBvID0gY2hhbi5vZmZzZXQ7XG4gIHZhciByID0oZmlsZS5yZWFkX29uZShvICApIDw8IDI0KVxuICAgICAgfCAgKGZpbGUucmVhZF9vbmUobysxKSA8PCAxNilcbiAgICAgIHwgIChmaWxlLnJlYWRfb25lKG8rMikgPDwgOClcbiAgICAgIHwgIChmaWxlLnJlYWRfb25lKG8rMykpO1xuICBjaGFuLm9mZnNldCs9NDtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGNoYW4ub2Zmc2V0ID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge3JldHVybiBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW5fNjQoY2hhbmlkKSB7cmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldCl9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjYW1sX21sX21heV9yZWZpbGxfaW5wdXQoY2hhbmlkKTtcbiAgdmFyIHAgPSBjaGFuLm9mZnNldDtcbiAgdmFyIGxlbiA9IGNoYW4uZmlsZS5sZW5ndGgoKTtcbiAgaWYocCA+PSBsZW4pIHsgcmV0dXJuIDA7fVxuICB3aGlsZSh0cnVlKSB7XG4gICAgaWYocCA+PSBsZW4pIHJldHVybiAtIChwIC0gY2hhbi5vZmZzZXQpO1xuICAgIGlmKGNoYW4uZmlsZS5yZWFkX29uZShwKSA9PSAxMCkgcmV0dXJuIHAgLSBjaGFuLm9mZnNldCArIDE7XG4gICAgcCsrO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IGZsdXNoIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGlmKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlciA9PSBcIlwiKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5mZFxuICAgICAmJiBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXVxuICAgICAmJiBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXS5vdXRwdXQpIHtcbiAgICB2YXIgb3V0cHV0ID0gY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF0ub3V0cHV0O1xuICAgIHN3aXRjaChvdXRwdXQubGVuZ3RoKXtcbiAgICBjYXNlIDI6IG91dHB1dChjaGFuaWQsY2hhbi5idWZmZXIpO2JyZWFrO1xuICAgIGRlZmF1bHQ6IG91dHB1dChjaGFuLmJ1ZmZlcilcbiAgICB9O1xuICB9XG4gIGNoYW4uYnVmZmVyID0gXCJcIjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVscywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIHZhciBieXRlcztcbiAgaWYob2Zmc2V0ID09IDAgJiYgY2FtbF9tbF9ieXRlc19sZW5ndGgoYnVmZmVyKSA9PSBsZW4pXG4gICAgYnl0ZXMgPSBidWZmZXI7XG4gIGVsc2Uge1xuICAgIGJ5dGVzID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXMoYnVmZmVyLG9mZnNldCxieXRlcywwLGxlbik7XG4gIH1cbiAgdmFyIHN0cmluZyA9IGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ5dGVzKTtcbiAgdmFyIGpzc3RyaW5nID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzdHJpbmcpO1xuICB2YXIgaWQgPSBqc3N0cmluZy5sYXN0SW5kZXhPZihcIlxcblwiKTtcbiAgaWYoaWQgPCAwKVxuICAgIGNoYW4uYnVmZmVyKz1qc3N0cmluZztcbiAgZWxzZSB7XG4gICAgY2hhbi5idWZmZXIrPWpzc3RyaW5nLnN1YnN0cigwLGlkKzEpO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgY2hhbi5idWZmZXIgKz0ganNzdHJpbmcuc3Vic3RyKGlkKzEpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0ID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXRcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGMpIHsgcmV0dXJuIDEgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoYyx2KSB7IHJldHVybiAwIH1cbiIsIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCgpIHtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vSW1wb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzIzRlOTliMTViNzk1MTMzOGYxNjQ3MjgzNzdjOTA2Y2FhZTVhNzgyMDJcblxuLy9Qcm92aWRlczogYmlnSW50IGNvbnN0XG52YXIgYmlnSW50ID0gKGZ1bmN0aW9uICh1bmRlZmluZWQpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIHZhciBCQVNFID0gMWU3LFxuICAgICAgICBMT0dfQkFTRSA9IDcsXG4gICAgICAgIE1BWF9JTlQgPSA5MDA3MTk5MjU0NzQwOTkyLFxuICAgICAgICBNQVhfSU5UX0FSUiA9IHNtYWxsVG9BcnJheShNQVhfSU5UKSxcbiAgICAgICAgREVGQVVMVF9BTFBIQUJFVCA9IFwiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCI7XG5cbiAgICB2YXIgQmlnSW50ID0gam9vX2dsb2JhbF9vYmplY3QuQmlnSW50O1xuXG4gICAgdmFyIHN1cHBvcnRzTmF0aXZlQmlnSW50ID0gdHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiO1xuXG4gICAgZnVuY3Rpb24gSW50ZWdlcih2LCByYWRpeCwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKHR5cGVvZiByYWRpeCAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuICtyYWRpeCA9PT0gMTAgJiYgIWFscGhhYmV0ID8gcGFyc2VWYWx1ZSh2KSA6IHBhcnNlQmFzZSh2LCByYWRpeCwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpO1xuICAgICAgICByZXR1cm4gcGFyc2VWYWx1ZSh2KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBCaWdJbnRlZ2VyKHZhbHVlLCBzaWduKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zaWduID0gc2lnbjtcbiAgICAgICAgdGhpcy5pc1NtYWxsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2FtbF9jdXN0b20gPSAnX3onO1xuICAgIH1cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xuXG4gICAgZnVuY3Rpb24gU21hbGxJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zaWduID0gdmFsdWUgPCAwO1xuICAgICAgICB0aGlzLmlzU21hbGwgPSB0cnVlO1xuICAgICAgICB0aGlzLmNhbWxfY3VzdG9tID0gJ196JztcbiAgICB9XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xuXG4gICAgZnVuY3Rpb24gTmF0aXZlQmlnSW50KHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jYW1sX2N1c3RvbSA9ICdfeic7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEludGVnZXIucHJvdG90eXBlKTtcblxuICAgIGZ1bmN0aW9uIGlzUHJlY2lzZShuKSB7XG4gICAgICAgIHJldHVybiAtTUFYX0lOVCA8IG4gJiYgbiA8IE1BWF9JTlQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc21hbGxUb0FycmF5KG4pIHsgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgZG9lc24ndCByZWZlcmVuY2UgQkFTRSwgbmVlZCB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpZiBCQVNFIGNoYW5nZXNcbiAgICAgICAgaWYgKG4gPCAxZTcpXG4gICAgICAgICAgICByZXR1cm4gW25dO1xuICAgICAgICBpZiAobiA8IDFlMTQpXG4gICAgICAgICAgICByZXR1cm4gW24gJSAxZTcsIE1hdGguZmxvb3IobiAvIDFlNyldO1xuICAgICAgICByZXR1cm4gW24gJSAxZTcsIE1hdGguZmxvb3IobiAvIDFlNykgJSAxZTcsIE1hdGguZmxvb3IobiAvIDFlMTQpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcnJheVRvU21hbGwoYXJyKSB7IC8vIElmIEJBU0UgY2hhbmdlcyB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGNoYW5nZVxuICAgICAgICB0cmltKGFycik7XG4gICAgICAgIHZhciBsZW5ndGggPSBhcnIubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoIDwgNCAmJiBjb21wYXJlQWJzKGFyciwgTUFYX0lOVF9BUlIpIDwgMCkge1xuICAgICAgICAgICAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIGFyclswXTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBhcnJbMF0gKyBhcnJbMV0gKiBCQVNFO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBhcnJbMF0gKyAoYXJyWzFdICsgYXJyWzJdICogQkFTRSkgKiBCQVNFO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpbSh2KSB7XG4gICAgICAgIHZhciBpID0gdi5sZW5ndGg7XG4gICAgICAgIHdoaWxlICh2Wy0taV0gPT09IDApO1xuICAgICAgICB2Lmxlbmd0aCA9IGkgKyAxO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUFycmF5KGxlbmd0aCkgeyAvLyBmdW5jdGlvbiBzaGFtZWxlc3NseSBzdG9sZW4gZnJvbSBZYWZmbGUncyBsaWJyYXJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9ZYWZmbGUvQmlnSW50ZWdlclxuICAgICAgICB2YXIgeCA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgICAgICB2YXIgaSA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpIDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICB4W2ldID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cnVuY2F0ZShuKSB7XG4gICAgICAgIGlmIChuID4gMCkgcmV0dXJuIE1hdGguZmxvb3Iobik7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwobik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkKGEsIGIpIHsgLy8gYXNzdW1lcyBhIGFuZCBiIGFyZSBhcnJheXMgd2l0aCBhLmxlbmd0aCA+PSBiLmxlbmd0aFxuICAgICAgICB2YXIgbF9hID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBsX2IgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobF9hKSxcbiAgICAgICAgICAgIGNhcnJ5ID0gMCxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgc3VtLCBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbF9iOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gKyBiW2ldICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IHN1bSA+PSBiYXNlID8gMSA6IDA7XG4gICAgICAgICAgICByW2ldID0gc3VtIC0gY2FycnkgKiBiYXNlO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpIDwgbF9hKSB7XG4gICAgICAgICAgICBzdW0gPSBhW2ldICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IHN1bSA9PT0gYmFzZSA/IDEgOiAwO1xuICAgICAgICAgICAgcltpKytdID0gc3VtIC0gY2FycnkgKiBiYXNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXJyeSA+IDApIHIucHVzaChjYXJyeSk7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZEFueShhLCBiKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+PSBiLmxlbmd0aCkgcmV0dXJuIGFkZChhLCBiKTtcbiAgICAgICAgcmV0dXJuIGFkZChiLCBhKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTbWFsbChhLCBjYXJyeSkgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGNhcnJ5IGlzIG51bWJlciB3aXRoIDAgPD0gY2FycnkgPCBNQVhfSU5UXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBzdW0sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gLSBiYXNlICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3Ioc3VtIC8gYmFzZSk7XG4gICAgICAgICAgICByW2ldID0gc3VtIC0gY2FycnkgKiBiYXNlO1xuICAgICAgICAgICAgY2FycnkgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2FycnkgPiAwKSB7XG4gICAgICAgICAgICByW2krK10gPSBjYXJyeSAlIGJhc2U7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIGlmICh0aGlzLnNpZ24gIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3Qobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKGEsIE1hdGguYWJzKGIpKSwgdGhpcy5zaWduKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkQW55KGEsIGIpLCB0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucGx1cyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmFkZDtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChuLm5lZ2F0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChpc1ByZWNpc2UoYSArIGIpKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhICsgYik7XG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KE1hdGguYWJzKGIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwoYiwgTWF0aC5hYnMoYSkpLCBhIDwgMCk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnBsdXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmFkZDtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSArIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnBsdXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmFkZDtcblxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0KGEsIGIpIHsgLy8gYXNzdW1lcyBhIGFuZCBiIGFyZSBhcnJheXMgd2l0aCBhID49IGJcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGFfbCksXG4gICAgICAgICAgICBib3Jyb3cgPSAwLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBpLCBkaWZmZXJlbmNlO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYl9sOyBpKyspIHtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBhW2ldIC0gYm9ycm93IC0gYltpXTtcbiAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkge1xuICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgKz0gYmFzZTtcbiAgICAgICAgICAgICAgICBib3Jyb3cgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGJvcnJvdyA9IDA7XG4gICAgICAgICAgICByW2ldID0gZGlmZmVyZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSBiX2w7IGkgPCBhX2w7IGkrKykge1xuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gLSBib3Jyb3c7XG4gICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8IDApIGRpZmZlcmVuY2UgKz0gYmFzZTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJbaSsrXSA9IGRpZmZlcmVuY2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByW2ldID0gZGlmZmVyZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKDsgaSA8IGFfbDsgaSsrKSB7XG4gICAgICAgICAgICByW2ldID0gYVtpXTtcbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdWJ0cmFjdEFueShhLCBiLCBzaWduKSB7XG4gICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgaWYgKGNvbXBhcmVBYnMoYSwgYikgPj0gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSBzdWJ0cmFjdChhLCBiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3VidHJhY3QoYiwgYSk7XG4gICAgICAgICAgICBzaWduID0gIXNpZ247XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSBhcnJheVRvU21hbGwodmFsdWUpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBpZiAoc2lnbikgdmFsdWUgPSAtdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHZhbHVlLCBzaWduKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdWJ0cmFjdFNtYWxsKGEsIGIsIHNpZ24pIHsgLy8gYXNzdW1lcyBhIGlzIGFycmF5LCBiIGlzIG51bWJlciB3aXRoIDAgPD0gYiA8IE1BWF9JTlRcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXG4gICAgICAgICAgICBjYXJyeSA9IC1iLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBpLCBkaWZmZXJlbmNlO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSArIGNhcnJ5O1xuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKGRpZmZlcmVuY2UgLyBiYXNlKTtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgJT0gYmFzZTtcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlIDwgMCA/IGRpZmZlcmVuY2UgKyBiYXNlIDogZGlmZmVyZW5jZTtcbiAgICAgICAgfVxuICAgICAgICByID0gYXJyYXlUb1NtYWxsKHIpO1xuICAgICAgICBpZiAodHlwZW9mIHIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChzaWduKSByID0gLXI7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihyKTtcbiAgICAgICAgfSByZXR1cm4gbmV3IEJpZ0ludGVnZXIociwgc2lnbik7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIGlmICh0aGlzLnNpZ24gIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpXG4gICAgICAgICAgICByZXR1cm4gc3VidHJhY3RTbWFsbChhLCBNYXRoLmFicyhiKSwgdGhpcy5zaWduKTtcbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0QW55KGEsIGIsIHRoaXMuc2lnbik7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5taW51cyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoYSA8IDAgIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoYSAtIGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKGIsIE1hdGguYWJzKGEpLCBhID49IDApO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5taW51cyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAtIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm1pbnVzID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zdWJ0cmFjdDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHRoaXMudmFsdWUsICF0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzaWduID0gdGhpcy5zaWduO1xuICAgICAgICB2YXIgc21hbGwgPSBuZXcgU21hbGxJbnRlZ2VyKC10aGlzLnZhbHVlKTtcbiAgICAgICAgc21hbGwuc2lnbiA9ICFzaWduO1xuICAgICAgICByZXR1cm4gc21hbGw7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoLXRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHRoaXMudmFsdWUsIGZhbHNlKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihNYXRoLmFicyh0aGlzLnZhbHVlKSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSA+PSAwID8gdGhpcy52YWx1ZSA6IC10aGlzLnZhbHVlKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIG11bHRpcGx5TG9uZyhhLCBiKSB7XG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgbCA9IGFfbCArIGJfbCxcbiAgICAgICAgICAgIHIgPSBjcmVhdGVBcnJheShsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgcHJvZHVjdCwgY2FycnksIGksIGFfaSwgYl9qO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYV9sOyArK2kpIHtcbiAgICAgICAgICAgIGFfaSA9IGFbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJfbDsgKytqKSB7XG4gICAgICAgICAgICAgICAgYl9qID0gYltqXTtcbiAgICAgICAgICAgICAgICBwcm9kdWN0ID0gYV9pICogYl9qICsgcltpICsgal07XG4gICAgICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKHByb2R1Y3QgLyBiYXNlKTtcbiAgICAgICAgICAgICAgICByW2kgKyBqXSA9IHByb2R1Y3QgLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgICAgICAgICAgcltpICsgaiArIDFdICs9IGNhcnJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG11bHRpcGx5U21hbGwoYSwgYikgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGIgaXMgbnVtYmVyIHdpdGggfGJ8IDwgQkFTRVxuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgY2FycnkgPSAwLFxuICAgICAgICAgICAgcHJvZHVjdCwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgcHJvZHVjdCA9IGFbaV0gKiBiICsgY2Fycnk7XG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xuICAgICAgICAgICAgcltpXSA9IHByb2R1Y3QgLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGNhcnJ5ID4gMCkge1xuICAgICAgICAgICAgcltpKytdID0gY2FycnkgJSBiYXNlO1xuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKGNhcnJ5IC8gYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2hpZnRMZWZ0KHgsIG4pIHtcbiAgICAgICAgdmFyIHIgPSBbXTtcbiAgICAgICAgd2hpbGUgKG4tLSA+IDApIHIucHVzaCgwKTtcbiAgICAgICAgcmV0dXJuIHIuY29uY2F0KHgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG11bHRpcGx5S2FyYXRzdWJhKHgsIHkpIHtcbiAgICAgICAgdmFyIG4gPSBNYXRoLm1heCh4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgICAgIGlmIChuIDw9IDMwKSByZXR1cm4gbXVsdGlwbHlMb25nKHgsIHkpO1xuICAgICAgICBuID0gTWF0aC5jZWlsKG4gLyAyKTtcblxuICAgICAgICB2YXIgYiA9IHguc2xpY2UobiksXG4gICAgICAgICAgICBhID0geC5zbGljZSgwLCBuKSxcbiAgICAgICAgICAgIGQgPSB5LnNsaWNlKG4pLFxuICAgICAgICAgICAgYyA9IHkuc2xpY2UoMCwgbik7XG5cbiAgICAgICAgdmFyIGFjID0gbXVsdGlwbHlLYXJhdHN1YmEoYSwgYyksXG4gICAgICAgICAgICBiZCA9IG11bHRpcGx5S2FyYXRzdWJhKGIsIGQpLFxuICAgICAgICAgICAgYWJjZCA9IG11bHRpcGx5S2FyYXRzdWJhKGFkZEFueShhLCBiKSwgYWRkQW55KGMsIGQpKTtcblxuICAgICAgICB2YXIgcHJvZHVjdCA9IGFkZEFueShhZGRBbnkoYWMsIHNoaWZ0TGVmdChzdWJ0cmFjdChzdWJ0cmFjdChhYmNkLCBhYyksIGJkKSwgbikpLCBzaGlmdExlZnQoYmQsIDIgKiBuKSk7XG4gICAgICAgIHRyaW0ocHJvZHVjdCk7XG4gICAgICAgIHJldHVybiBwcm9kdWN0O1xuICAgIH1cblxuICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIGEgc3VyZmFjZSBmaXQgb2YgYSBncmFwaCBwbG90dGluZyB0aGUgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZVxuICAgIC8vIGJldHdlZW4gbG9uZyBtdWx0aXBsaWNhdGlvbiBhbmQga2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uIHZlcnN1cyB0aGUgbGVuZ3RocyBvZiB0aGUgdHdvIGFycmF5cy5cbiAgICBmdW5jdGlvbiB1c2VLYXJhdHN1YmEobDEsIGwyKSB7XG4gICAgICAgIHJldHVybiAtMC4wMTIgKiBsMSAtIDAuMDEyICogbDIgKyAwLjAwMDAxNSAqIGwxICogbDIgPiAwO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlLFxuICAgICAgICAgICAgc2lnbiA9IHRoaXMuc2lnbiAhPT0gbi5zaWduLFxuICAgICAgICAgICAgYWJzO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAoYiA9PT0gMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgICAgICBpZiAoYiA9PT0gMSkgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICBpZiAoYiA9PT0gLTEpIHJldHVybiB0aGlzLm5lZ2F0ZSgpO1xuICAgICAgICAgICAgYWJzID0gTWF0aC5hYnMoYik7XG4gICAgICAgICAgICBpZiAoYWJzIDwgQkFTRSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseVNtYWxsKGEsIGFicyksIHNpZ24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYiA9IHNtYWxsVG9BcnJheShhYnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VLYXJhdHN1YmEoYS5sZW5ndGgsIGIubGVuZ3RoKSkgLy8gS2FyYXRzdWJhIGlzIG9ubHkgZmFzdGVyIGZvciBjZXJ0YWluIGFycmF5IHNpemVzXG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlLYXJhdHN1YmEoYSwgYiksIHNpZ24pO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlMb25nKGEsIGIpLCBzaWduKTtcbiAgICB9O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudGltZXMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseTtcblxuICAgIGZ1bmN0aW9uIG11bHRpcGx5U21hbGxBbmRBcnJheShhLCBiLCBzaWduKSB7IC8vIGEgPj0gMFxuICAgICAgICBpZiAoYSA8IEJBU0UpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseVNtYWxsKGIsIGEpLCBzaWduKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlMb25nKGIsIHNtYWxsVG9BcnJheShhKSksIHNpZ24pO1xuICAgIH1cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLl9tdWx0aXBseUJ5U21hbGwgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICBpZiAoaXNQcmVjaXNlKGEudmFsdWUgKiB0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoYS52YWx1ZSAqIHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtdWx0aXBseVNtYWxsQW5kQXJyYXkoTWF0aC5hYnMoYS52YWx1ZSksIHNtYWxsVG9BcnJheShNYXRoLmFicyh0aGlzLnZhbHVlKSksIHRoaXMuc2lnbiAhPT0gYS5zaWduKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLl9tdWx0aXBseUJ5U21hbGwgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmIChhLnZhbHVlID09PSAxKSByZXR1cm4gdGhpcztcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IC0xKSByZXR1cm4gdGhpcy5uZWdhdGUoKTtcbiAgICAgICAgcmV0dXJuIG11bHRpcGx5U21hbGxBbmRBcnJheShNYXRoLmFicyhhLnZhbHVlKSwgdGhpcy52YWx1ZSwgdGhpcy5zaWduICE9PSBhLnNpZ24pO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBwYXJzZVZhbHVlKHYpLl9tdWx0aXBseUJ5U21hbGwodGhpcyk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRpbWVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICogcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudGltZXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm11bHRpcGx5O1xuXG4gICAgZnVuY3Rpb24gc3F1YXJlKGEpIHtcbiAgICAgICAgLy9jb25zb2xlLmFzc2VydCgyICogQkFTRSAqIEJBU0UgPCBNQVhfSU5UKTtcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBjcmVhdGVBcnJheShsICsgbCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHByb2R1Y3QsIGNhcnJ5LCBpLCBhX2ksIGFfajtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgYV9pID0gYVtpXTtcbiAgICAgICAgICAgIGNhcnJ5ID0gMCAtIGFfaSAqIGFfaTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSBpOyBqIDwgbDsgaisrKSB7XG4gICAgICAgICAgICAgICAgYV9qID0gYVtqXTtcbiAgICAgICAgICAgICAgICBwcm9kdWN0ID0gMiAqIChhX2kgKiBhX2opICsgcltpICsgal0gKyBjYXJyeTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xuICAgICAgICAgICAgICAgIHJbaSArIGpdID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJbaSArIGxdID0gY2Fycnk7XG4gICAgICAgIH1cbiAgICAgICAgdHJpbShyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3F1YXJlKHRoaXMudmFsdWUpLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlICogdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKGlzUHJlY2lzZSh2YWx1ZSkpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHNxdWFyZShzbWFsbFRvQXJyYXkoTWF0aC5hYnModGhpcy52YWx1ZSkpKSwgZmFsc2UpO1xuICAgIH07XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnNxdWFyZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKiB0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXZNb2QxKGEsIGIpIHsgLy8gTGVmdCBvdmVyIGZyb20gcHJldmlvdXMgdmVyc2lvbi4gUGVyZm9ybXMgZmFzdGVyIHRoYW4gZGl2TW9kMiBvbiBzbWFsbGVyIGlucHV0IHNpemVzLlxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlQXJyYXkoYi5sZW5ndGgpLFxuICAgICAgICAgICAgZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0ID0gYltiX2wgLSAxXSxcbiAgICAgICAgICAgIC8vIG5vcm1hbGl6YXRpb25cbiAgICAgICAgICAgIGxhbWJkYSA9IE1hdGguY2VpbChiYXNlIC8gKDIgKiBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpKSxcbiAgICAgICAgICAgIHJlbWFpbmRlciA9IG11bHRpcGx5U21hbGwoYSwgbGFtYmRhKSxcbiAgICAgICAgICAgIGRpdmlzb3IgPSBtdWx0aXBseVNtYWxsKGIsIGxhbWJkYSksXG4gICAgICAgICAgICBxdW90aWVudERpZ2l0LCBzaGlmdCwgY2FycnksIGJvcnJvdywgaSwgbCwgcTtcbiAgICAgICAgaWYgKHJlbWFpbmRlci5sZW5ndGggPD0gYV9sKSByZW1haW5kZXIucHVzaCgwKTtcbiAgICAgICAgZGl2aXNvci5wdXNoKDApO1xuICAgICAgICBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQgPSBkaXZpc29yW2JfbCAtIDFdO1xuICAgICAgICBmb3IgKHNoaWZ0ID0gYV9sIC0gYl9sOyBzaGlmdCA+PSAwOyBzaGlmdC0tKSB7XG4gICAgICAgICAgICBxdW90aWVudERpZ2l0ID0gYmFzZSAtIDE7XG4gICAgICAgICAgICBpZiAocmVtYWluZGVyW3NoaWZ0ICsgYl9sXSAhPT0gZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0KSB7XG4gICAgICAgICAgICAgICAgcXVvdGllbnREaWdpdCA9IE1hdGguZmxvb3IoKHJlbWFpbmRlcltzaGlmdCArIGJfbF0gKiBiYXNlICsgcmVtYWluZGVyW3NoaWZ0ICsgYl9sIC0gMV0pIC8gZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHF1b3RpZW50RGlnaXQgPD0gYmFzZSAtIDFcbiAgICAgICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgICAgIGJvcnJvdyA9IDA7XG4gICAgICAgICAgICBsID0gZGl2aXNvci5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY2FycnkgKz0gcXVvdGllbnREaWdpdCAqIGRpdmlzb3JbaV07XG4gICAgICAgICAgICAgICAgcSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcbiAgICAgICAgICAgICAgICBib3Jyb3cgKz0gcmVtYWluZGVyW3NoaWZ0ICsgaV0gLSAoY2FycnkgLSBxICogYmFzZSk7XG4gICAgICAgICAgICAgICAgY2FycnkgPSBxO1xuICAgICAgICAgICAgICAgIGlmIChib3Jyb3cgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gYm9ycm93ICsgYmFzZTtcbiAgICAgICAgICAgICAgICAgICAgYm9ycm93ID0gLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBib3Jyb3c7XG4gICAgICAgICAgICAgICAgICAgIGJvcnJvdyA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGJvcnJvdyAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgLT0gMTtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjYXJyeSArPSByZW1haW5kZXJbc2hpZnQgKyBpXSAtIGJhc2UgKyBkaXZpc29yW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FycnkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGNhcnJ5ICsgYmFzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gY2Fycnk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJyeSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYm9ycm93ICs9IGNhcnJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W3NoaWZ0XSA9IHF1b3RpZW50RGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGVub3JtYWxpemF0aW9uXG4gICAgICAgIHJlbWFpbmRlciA9IGRpdk1vZFNtYWxsKHJlbWFpbmRlciwgbGFtYmRhKVswXTtcbiAgICAgICAgcmV0dXJuIFthcnJheVRvU21hbGwocmVzdWx0KSwgYXJyYXlUb1NtYWxsKHJlbWFpbmRlcildO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZDIoYSwgYikgeyAvLyBJbXBsZW1lbnRhdGlvbiBpZGVhIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIFNpbGVudCBNYXR0J3MgbGlicmFyeSBodHRwOi8vc2lsZW50bWF0dC5jb20vYmlnaW50ZWdlci9cbiAgICAgICAgLy8gUGVyZm9ybXMgZmFzdGVyIHRoYW4gZGl2TW9kMSBvbiBsYXJnZXIgaW5wdXQgc2l6ZXMuXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgICBwYXJ0ID0gW10sXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGd1ZXNzLCB4bGVuLCBoaWdoeCwgaGlnaHksIGNoZWNrO1xuICAgICAgICB3aGlsZSAoYV9sKSB7XG4gICAgICAgICAgICBwYXJ0LnVuc2hpZnQoYVstLWFfbF0pO1xuICAgICAgICAgICAgdHJpbShwYXJ0KTtcbiAgICAgICAgICAgIGlmIChjb21wYXJlQWJzKHBhcnQsIGIpIDwgMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKDApO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeGxlbiA9IHBhcnQubGVuZ3RoO1xuICAgICAgICAgICAgaGlnaHggPSBwYXJ0W3hsZW4gLSAxXSAqIGJhc2UgKyBwYXJ0W3hsZW4gLSAyXTtcbiAgICAgICAgICAgIGhpZ2h5ID0gYltiX2wgLSAxXSAqIGJhc2UgKyBiW2JfbCAtIDJdO1xuICAgICAgICAgICAgaWYgKHhsZW4gPiBiX2wpIHtcbiAgICAgICAgICAgICAgICBoaWdoeCA9IChoaWdoeCArIDEpICogYmFzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGd1ZXNzID0gTWF0aC5jZWlsKGhpZ2h4IC8gaGlnaHkpO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGNoZWNrID0gbXVsdGlwbHlTbWFsbChiLCBndWVzcyk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVBYnMoY2hlY2ssIHBhcnQpIDw9IDApIGJyZWFrO1xuICAgICAgICAgICAgICAgIGd1ZXNzLS07XG4gICAgICAgICAgICB9IHdoaWxlIChndWVzcyk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChndWVzcyk7XG4gICAgICAgICAgICBwYXJ0ID0gc3VidHJhY3QocGFydCwgY2hlY2spO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5yZXZlcnNlKCk7XG4gICAgICAgIHJldHVybiBbYXJyYXlUb1NtYWxsKHJlc3VsdCksIGFycmF5VG9TbWFsbChwYXJ0KV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kU21hbGwodmFsdWUsIGxhbWJkYSkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoLFxuICAgICAgICAgICAgcXVvdGllbnQgPSBjcmVhdGVBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBpLCBxLCByZW1haW5kZXIsIGRpdmlzb3I7XG4gICAgICAgIHJlbWFpbmRlciA9IDA7XG4gICAgICAgIGZvciAoaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICBkaXZpc29yID0gcmVtYWluZGVyICogYmFzZSArIHZhbHVlW2ldO1xuICAgICAgICAgICAgcSA9IHRydW5jYXRlKGRpdmlzb3IgLyBsYW1iZGEpO1xuICAgICAgICAgICAgcmVtYWluZGVyID0gZGl2aXNvciAtIHEgKiBsYW1iZGE7XG4gICAgICAgICAgICBxdW90aWVudFtpXSA9IHEgfCAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcXVvdGllbnQsIHJlbWFpbmRlciB8IDBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZEFueShzZWxmLCB2KSB7XG4gICAgICAgIHZhciB2YWx1ZSwgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIFtuZXcgTmF0aXZlQmlnSW50KHNlbGYudmFsdWUgLyBuLnZhbHVlKSwgbmV3IE5hdGl2ZUJpZ0ludChzZWxmLnZhbHVlICUgbi52YWx1ZSldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhID0gc2VsZi52YWx1ZSwgYiA9IG4udmFsdWU7XG4gICAgICAgIHZhciBxdW90aWVudDtcbiAgICAgICAgaWYgKGIgPT09IDApIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkaXZpZGUgYnkgemVyb1wiKTtcbiAgICAgICAgaWYgKHNlbGYuaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFNtYWxsSW50ZWdlcih0cnVuY2F0ZShhIC8gYikpLCBuZXcgU21hbGxJbnRlZ2VyKGEgJSBiKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW0ludGVnZXJbMF0sIHNlbGZdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChiID09PSAxKSByZXR1cm4gW3NlbGYsIEludGVnZXJbMF1dO1xuICAgICAgICAgICAgaWYgKGIgPT0gLTEpIHJldHVybiBbc2VsZi5uZWdhdGUoKSwgSW50ZWdlclswXV07XG4gICAgICAgICAgICB2YXIgYWJzID0gTWF0aC5hYnMoYik7XG4gICAgICAgICAgICBpZiAoYWJzIDwgQkFTRSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gZGl2TW9kU21hbGwoYSwgYWJzKTtcbiAgICAgICAgICAgICAgICBxdW90aWVudCA9IGFycmF5VG9TbWFsbCh2YWx1ZVswXSk7XG4gICAgICAgICAgICAgICAgdmFyIHJlbWFpbmRlciA9IHZhbHVlWzFdO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnNpZ24pIHJlbWFpbmRlciA9IC1yZW1haW5kZXI7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBxdW90aWVudCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5zaWduICE9PSBuLnNpZ24pIHF1b3RpZW50ID0gLXF1b3RpZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBTbWFsbEludGVnZXIocXVvdGllbnQpLCBuZXcgU21hbGxJbnRlZ2VyKHJlbWFpbmRlcildO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBCaWdJbnRlZ2VyKHF1b3RpZW50LCBzZWxmLnNpZ24gIT09IG4uc2lnbiksIG5ldyBTbWFsbEludGVnZXIocmVtYWluZGVyKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KGFicyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvbXBhcmlzb24gPSBjb21wYXJlQWJzKGEsIGIpO1xuICAgICAgICBpZiAoY29tcGFyaXNvbiA9PT0gLTEpIHJldHVybiBbSW50ZWdlclswXSwgc2VsZl07XG4gICAgICAgIGlmIChjb21wYXJpc29uID09PSAwKSByZXR1cm4gW0ludGVnZXJbc2VsZi5zaWduID09PSBuLnNpZ24gPyAxIDogLTFdLCBJbnRlZ2VyWzBdXTtcblxuICAgICAgICAvLyBkaXZNb2QxIGlzIGZhc3RlciBvbiBzbWFsbGVyIGlucHV0IHNpemVzXG4gICAgICAgIGlmIChhLmxlbmd0aCArIGIubGVuZ3RoIDw9IDIwMClcbiAgICAgICAgICAgIHZhbHVlID0gZGl2TW9kMShhLCBiKTtcbiAgICAgICAgZWxzZSB2YWx1ZSA9IGRpdk1vZDIoYSwgYik7XG5cbiAgICAgICAgcXVvdGllbnQgPSB2YWx1ZVswXTtcbiAgICAgICAgdmFyIHFTaWduID0gc2VsZi5zaWduICE9PSBuLnNpZ24sXG4gICAgICAgICAgICBtb2QgPSB2YWx1ZVsxXSxcbiAgICAgICAgICAgIG1TaWduID0gc2VsZi5zaWduO1xuICAgICAgICBpZiAodHlwZW9mIHF1b3RpZW50ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBpZiAocVNpZ24pIHF1b3RpZW50ID0gLXF1b3RpZW50O1xuICAgICAgICAgICAgcXVvdGllbnQgPSBuZXcgU21hbGxJbnRlZ2VyKHF1b3RpZW50KTtcbiAgICAgICAgfSBlbHNlIHF1b3RpZW50ID0gbmV3IEJpZ0ludGVnZXIocXVvdGllbnQsIHFTaWduKTtcbiAgICAgICAgaWYgKHR5cGVvZiBtb2QgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmIChtU2lnbikgbW9kID0gLW1vZDtcbiAgICAgICAgICAgIG1vZCA9IG5ldyBTbWFsbEludGVnZXIobW9kKTtcbiAgICAgICAgfSBlbHNlIG1vZCA9IG5ldyBCaWdJbnRlZ2VyKG1vZCwgbVNpZ24pO1xuICAgICAgICByZXR1cm4gW3F1b3RpZW50LCBtb2RdO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBkaXZNb2RBbnkodGhpcywgdik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBxdW90aWVudDogcmVzdWx0WzBdLFxuICAgICAgICAgICAgcmVtYWluZGVyOiByZXN1bHRbMV1cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZGl2bW9kID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5kaXZtb2QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZtb2Q7XG5cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdmlkZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBkaXZNb2RBbnkodGhpcywgdilbMF07XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm92ZXIgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmRpdmlkZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgLyBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUub3ZlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gQmlnSW50ZWdlci5wcm90b3R5cGUub3ZlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdmlkZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBkaXZNb2RBbnkodGhpcywgdilbMV07XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm1vZCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucmVtYWluZGVyID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAlIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5yZW1haW5kZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWUsXG4gICAgICAgICAgICB2YWx1ZSwgeCwgeTtcbiAgICAgICAgaWYgKGIgPT09IDApIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gMCkgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmIChhID09PSAxKSByZXR1cm4gSW50ZWdlclsxXTtcbiAgICAgICAgaWYgKGEgPT09IC0xKSByZXR1cm4gbi5pc0V2ZW4oKSA/IEludGVnZXJbMV0gOiBJbnRlZ2VyWy0xXTtcbiAgICAgICAgaWYgKG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFuLmlzU21hbGwpIHRocm93IG5ldyBFcnJvcihcIlRoZSBleHBvbmVudCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGlzIHRvbyBsYXJnZS5cIik7XG4gICAgICAgIGlmICh0aGlzLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChpc1ByZWNpc2UodmFsdWUgPSBNYXRoLnBvdyhhLCBiKSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodHJ1bmNhdGUodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICB4ID0gdGhpcztcbiAgICAgICAgeSA9IEludGVnZXJbMV07XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBpZiAoYiAmIDEgPT09IDEpIHtcbiAgICAgICAgICAgICAgICB5ID0geS50aW1lcyh4KTtcbiAgICAgICAgICAgICAgICAtLWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYiA9PT0gMCkgYnJlYWs7XG4gICAgICAgICAgICBiIC89IDI7XG4gICAgICAgICAgICB4ID0geC5zcXVhcmUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucG93ID0gQmlnSW50ZWdlci5wcm90b3R5cGUucG93O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWU7XG4gICAgICAgIHZhciBfMCA9IEJpZ0ludCgwKSwgXzEgPSBCaWdJbnQoMSksIF8yID0gQmlnSW50KDIpO1xuICAgICAgICBpZiAoYiA9PT0gXzApIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gXzApIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICBpZiAoYSA9PT0gXzEpIHJldHVybiBJbnRlZ2VyWzFdO1xuICAgICAgICBpZiAoYSA9PT0gQmlnSW50KC0xKSkgcmV0dXJuIG4uaXNFdmVuKCkgPyBJbnRlZ2VyWzFdIDogSW50ZWdlclstMV07XG4gICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSkgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoXzApO1xuICAgICAgICB2YXIgeCA9IHRoaXM7XG4gICAgICAgIHZhciB5ID0gSW50ZWdlclsxXTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmICgoYiAmIF8xKSA9PT0gXzEpIHtcbiAgICAgICAgICAgICAgICB5ID0geS50aW1lcyh4KTtcbiAgICAgICAgICAgICAgICAtLWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYiA9PT0gXzApIGJyZWFrO1xuICAgICAgICAgICAgYiAvPSBfMjtcbiAgICAgICAgICAgIHggPSB4LnNxdWFyZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5O1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IGZ1bmN0aW9uIChleHAsIG1vZCkge1xuICAgICAgICBleHAgPSBwYXJzZVZhbHVlKGV4cCk7XG4gICAgICAgIG1vZCA9IHBhcnNlVmFsdWUobW9kKTtcbiAgICAgICAgaWYgKG1vZC5pc1plcm8oKSkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHRha2UgbW9kUG93IHdpdGggbW9kdWx1cyAwXCIpO1xuICAgICAgICB2YXIgciA9IEludGVnZXJbMV0sXG4gICAgICAgICAgICBiYXNlID0gdGhpcy5tb2QobW9kKTtcbiAgICAgICAgaWYgKGV4cC5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgIGV4cCA9IGV4cC5tdWx0aXBseShJbnRlZ2VyWy0xXSk7XG4gICAgICAgICAgICBiYXNlID0gYmFzZS5tb2RJbnYobW9kKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoZXhwLmlzUG9zaXRpdmUoKSkge1xuICAgICAgICAgICAgaWYgKGJhc2UuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICAgICAgaWYgKGV4cC5pc09kZCgpKSByID0gci5tdWx0aXBseShiYXNlKS5tb2QobW9kKTtcbiAgICAgICAgICAgIGV4cCA9IGV4cC5kaXZpZGUoMik7XG4gICAgICAgICAgICBiYXNlID0gYmFzZS5zcXVhcmUoKS5tb2QobW9kKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kUG93ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3cgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3c7XG5cbiAgICBmdW5jdGlvbiBjb21wYXJlQWJzKGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGEubGVuZ3RoID4gYi5sZW5ndGggPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gYVtpXSA+IGJbaV0gPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZUFicyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHJldHVybiAxO1xuICAgICAgICByZXR1cm4gY29tcGFyZUFicyhhLCBiKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZUFicyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSBNYXRoLmFicyh0aGlzLnZhbHVlKSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBiID0gTWF0aC5hYnMoYik7XG4gICAgICAgICAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmVBYnMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHZhciBiID0gcGFyc2VWYWx1ZSh2KS52YWx1ZTtcbiAgICAgICAgYSA9IGEgPj0gMCA/IGEgOiAtYTtcbiAgICAgICAgYiA9IGIgPj0gMCA/IGIgOiAtYjtcbiAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIC8vIFNlZSBkaXNjdXNzaW9uIGFib3V0IGNvbXBhcmlzb24gd2l0aCBJbmZpbml0eTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BldGVyb2xzb24vQmlnSW50ZWdlci5qcy9pc3N1ZXMvNjFcbiAgICAgICAgaWYgKHYgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5zaWduICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBuLnNpZ24gPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2lnbiA/IC0xIDogMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcGFyZUFicyhhLCBiKSAqICh0aGlzLnNpZ24gPyAtMSA6IDEpO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZVRvID0gQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIGlmICh2ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2ID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYSA8IDAgIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIGEgPCAwID8gLTEgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhIDwgMCA/IDEgOiAtMTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZVRvID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlO1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgaWYgKHYgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlO1xuICAgICAgICB2YXIgYiA9IHBhcnNlVmFsdWUodikudmFsdWU7XG4gICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmVUbyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPT09IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5lcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmVxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5lcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5lcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmVxdWFscztcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5vdEVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgIT09IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5lcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubm90RXF1YWxzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5uZXEgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5vdEVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm5lcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm5vdEVxdWFscztcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXIgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpID4gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3QgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmd0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ3QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA8IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmx0ID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sZXNzZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmx0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3NlcjtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPj0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ2VxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmdlcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ2VxID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpIDw9IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscztcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlWzBdICYgMSkgPT09IDA7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgQmlnSW50KDEpKSA9PT0gQmlnSW50KDApO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWVbMF0gJiAxKSA9PT0gMTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZSAmIDEpID09PSAxO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgQmlnSW50KDEpKSA9PT0gQmlnSW50KDEpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5zaWduO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1Bvc2l0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA+IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaWduO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA8IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy52YWx1ZSkgPT09IDE7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzKCkudmFsdWUgPT09IEJpZ0ludCgxKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gMDtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gQmlnSW50KDApO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzRGl2aXNpYmxlQnkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChuLmlzVW5pdCgpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG4uY29tcGFyZUFicygyKSA9PT0gMCkgcmV0dXJuIHRoaXMuaXNFdmVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZChuKS5pc1plcm8oKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzRGl2aXNpYmxlQnk7XG5cbiAgICBmdW5jdGlvbiBpc0Jhc2ljUHJpbWUodikge1xuICAgICAgICB2YXIgbiA9IHYuYWJzKCk7XG4gICAgICAgIGlmIChuLmlzVW5pdCgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChuLmVxdWFscygyKSB8fCBuLmVxdWFscygzKSB8fCBuLmVxdWFscyg1KSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChuLmlzRXZlbigpIHx8IG4uaXNEaXZpc2libGVCeSgzKSB8fCBuLmlzRGl2aXNpYmxlQnkoNSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKG4ubGVzc2VyKDQ5KSkgcmV0dXJuIHRydWU7XG4gICAgICAgIC8vIHdlIGRvbid0IGtub3cgaWYgaXQncyBwcmltZTogbGV0IHRoZSBvdGhlciBmdW5jdGlvbnMgZmlndXJlIGl0IG91dFxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1pbGxlclJhYmluVGVzdChuLCBhKSB7XG4gICAgICAgIHZhciBuUHJldiA9IG4ucHJldigpLFxuICAgICAgICAgICAgYiA9IG5QcmV2LFxuICAgICAgICAgICAgciA9IDAsXG4gICAgICAgICAgICBkLCB0LCBpLCB4O1xuICAgICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkgYiA9IGIuZGl2aWRlKDIpLCByKys7XG4gICAgICAgIG5leHQ6IGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobi5sZXNzZXIoYVtpXSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgeCA9IGJpZ0ludChhW2ldKS5tb2RQb3coYiwgbik7XG4gICAgICAgICAgICBpZiAoeC5pc1VuaXQoKSB8fCB4LmVxdWFscyhuUHJldikpIGNvbnRpbnVlO1xuICAgICAgICAgICAgZm9yIChkID0gciAtIDE7IGQgIT0gMDsgZC0tKSB7XG4gICAgICAgICAgICAgICAgeCA9IHguc3F1YXJlKCkubW9kKG4pO1xuICAgICAgICAgICAgICAgIGlmICh4LmlzVW5pdCgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHguZXF1YWxzKG5QcmV2KSkgY29udGludWUgbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgXCJzdHJpY3RcIiB0byB0cnVlIHRvIGZvcmNlIEdSSC1zdXBwb3J0ZWQgbG93ZXIgYm91bmQgb2YgMipsb2coTileMlxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJpbWUgPSBmdW5jdGlvbiAoc3RyaWN0KSB7XG4gICAgICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHRoaXMpO1xuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmFicygpO1xuICAgICAgICB2YXIgYml0cyA9IG4uYml0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChiaXRzIDw9IDY0KVxuICAgICAgICAgICAgcmV0dXJuIG1pbGxlclJhYmluVGVzdChuLCBbMiwgMywgNSwgNywgMTEsIDEzLCAxNywgMTksIDIzLCAyOSwgMzEsIDM3XSk7XG4gICAgICAgIHZhciBsb2dOID0gTWF0aC5sb2coMikgKiBiaXRzLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgdmFyIHQgPSBNYXRoLmNlaWwoKHN0cmljdCA9PT0gdHJ1ZSkgPyAoMiAqIE1hdGgucG93KGxvZ04sIDIpKSA6IGxvZ04pO1xuICAgICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAwOyBpIDwgdDsgaSsrKSB7XG4gICAgICAgICAgICBhLnB1c2goYmlnSW50KGkgKyAyKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbGxlclJhYmluVGVzdChuLCBhKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQcmltZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJpbWU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBmdW5jdGlvbiAoaXRlcmF0aW9ucykge1xuICAgICAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZSh0aGlzKTtcbiAgICAgICAgaWYgKGlzUHJpbWUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGlzUHJpbWU7XG4gICAgICAgIHZhciBuID0gdGhpcy5hYnMoKTtcbiAgICAgICAgdmFyIHQgPSBpdGVyYXRpb25zID09PSB1bmRlZmluZWQgPyA1IDogaXRlcmF0aW9ucztcbiAgICAgICAgZm9yICh2YXIgYSA9IFtdLCBpID0gMDsgaSA8IHQ7IGkrKykge1xuICAgICAgICAgICAgYS5wdXNoKGJpZ0ludC5yYW5kQmV0d2VlbigyLCBuLm1pbnVzKDIpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbGxlclJhYmluVGVzdChuLCBhKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnYgPSBmdW5jdGlvbiAobikge1xuICAgICAgICB2YXIgdCA9IGJpZ0ludC56ZXJvLCBuZXdUID0gYmlnSW50Lm9uZSwgciA9IHBhcnNlVmFsdWUobiksIG5ld1IgPSB0aGlzLmFicygpLCBxLCBsYXN0VCwgbGFzdFI7XG4gICAgICAgIHdoaWxlICghbmV3Ui5pc1plcm8oKSkge1xuICAgICAgICAgICAgcSA9IHIuZGl2aWRlKG5ld1IpO1xuICAgICAgICAgICAgbGFzdFQgPSB0O1xuICAgICAgICAgICAgbGFzdFIgPSByO1xuICAgICAgICAgICAgdCA9IG5ld1Q7XG4gICAgICAgICAgICByID0gbmV3UjtcbiAgICAgICAgICAgIG5ld1QgPSBsYXN0VC5zdWJ0cmFjdChxLm11bHRpcGx5KG5ld1QpKTtcbiAgICAgICAgICAgIG5ld1IgPSBsYXN0Ui5zdWJ0cmFjdChxLm11bHRpcGx5KG5ld1IpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXIuaXNVbml0KCkpIHRocm93IG5ldyBFcnJvcih0aGlzLnRvU3RyaW5nKCkgKyBcIiBhbmQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBhcmUgbm90IGNvLXByaW1lXCIpO1xuICAgICAgICBpZiAodC5jb21wYXJlKDApID09PSAtMSkge1xuICAgICAgICAgICAgdCA9IHQuYWRkKG4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHQubmVnYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kSW52ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnYgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnY7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VidHJhY3RTbWFsbCh2YWx1ZSwgMSwgdGhpcy5zaWduKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwodmFsdWUsIDEpLCB0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgKyAxIDwgTUFYX0lOVCkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUgKyAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKE1BWF9JTlRfQVJSLCBmYWxzZSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKyBCaWdJbnQoMSkpO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbCh2YWx1ZSwgMSksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKHZhbHVlLCAxLCB0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgLSAxID4gLU1BWF9JTlQpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlIC0gMSk7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihNQVhfSU5UX0FSUiwgdHJ1ZSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgLSBCaWdJbnQoMSkpO1xuICAgIH1cblxuICAgIHZhciBwb3dlcnNPZlR3byA9IFsxXTtcbiAgICB3aGlsZSAoMiAqIHBvd2Vyc09mVHdvW3Bvd2Vyc09mVHdvLmxlbmd0aCAtIDFdIDw9IEJBU0UpIHBvd2Vyc09mVHdvLnB1c2goMiAqIHBvd2Vyc09mVHdvW3Bvd2Vyc09mVHdvLmxlbmd0aCAtIDFdKTtcbiAgICB2YXIgcG93ZXJzMkxlbmd0aCA9IHBvd2Vyc09mVHdvLmxlbmd0aCwgaGlnaGVzdFBvd2VyMiA9IHBvd2Vyc09mVHdvW3Bvd2VyczJMZW5ndGggLSAxXTtcblxuICAgIGZ1bmN0aW9uIHNoaWZ0X2lzU21hbGwobikge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMobikgPD0gQkFTRTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodikudG9KU051bWJlcigpO1xuICAgICAgICBpZiAoIXNoaWZ0X2lzU21hbGwobikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihTdHJpbmcobikgKyBcIiBpcyB0b28gbGFyZ2UgZm9yIHNoaWZ0aW5nLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8IDApIHJldHVybiB0aGlzLnNoaWZ0UmlnaHQoLW4pO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcztcbiAgICAgICAgaWYgKHJlc3VsdC5pc1plcm8oKSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgd2hpbGUgKG4gPj0gcG93ZXJzMkxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0Lm11bHRpcGx5KGhpZ2hlc3RQb3dlcjIpO1xuICAgICAgICAgICAgbiAtPSBwb3dlcnMyTGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0Lm11bHRpcGx5KHBvd2Vyc09mVHdvW25dKTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQ7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIHJlbVF1bztcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgaWYgKCFzaGlmdF9pc1NtYWxsKG4pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoU3RyaW5nKG4pICsgXCIgaXMgdG9vIGxhcmdlIGZvciBzaGlmdGluZy5cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPCAwKSByZXR1cm4gdGhpcy5zaGlmdExlZnQoLW4pO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcztcbiAgICAgICAgd2hpbGUgKG4gPj0gcG93ZXJzMkxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1plcm8oKSB8fCAocmVzdWx0LmlzTmVnYXRpdmUoKSAmJiByZXN1bHQuaXNVbml0KCkpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgcmVtUXVvID0gZGl2TW9kQW55KHJlc3VsdCwgaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICByZXN1bHQgPSByZW1RdW9bMV0uaXNOZWdhdGl2ZSgpID8gcmVtUXVvWzBdLnByZXYoKSA6IHJlbVF1b1swXTtcbiAgICAgICAgICAgIG4gLT0gcG93ZXJzMkxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmVtUXVvID0gZGl2TW9kQW55KHJlc3VsdCwgcG93ZXJzT2ZUd29bbl0pO1xuICAgICAgICByZXR1cm4gcmVtUXVvWzFdLmlzTmVnYXRpdmUoKSA/IHJlbVF1b1swXS5wcmV2KCkgOiByZW1RdW9bMF07XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0O1xuXG4gICAgZnVuY3Rpb24gYml0d2lzZSh4LCB5LCBmbikge1xuICAgICAgICB5ID0gcGFyc2VWYWx1ZSh5KTtcbiAgICAgICAgdmFyIHhTaWduID0geC5pc05lZ2F0aXZlKCksIHlTaWduID0geS5pc05lZ2F0aXZlKCk7XG4gICAgICAgIHZhciB4UmVtID0geFNpZ24gPyB4Lm5vdCgpIDogeCxcbiAgICAgICAgICAgIHlSZW0gPSB5U2lnbiA/IHkubm90KCkgOiB5O1xuICAgICAgICB2YXIgeERpZ2l0ID0gMCwgeURpZ2l0ID0gMDtcbiAgICAgICAgdmFyIHhEaXZNb2QgPSBudWxsLCB5RGl2TW9kID0gbnVsbDtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICB3aGlsZSAoIXhSZW0uaXNaZXJvKCkgfHwgIXlSZW0uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHhEaXZNb2QgPSBkaXZNb2RBbnkoeFJlbSwgaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICB4RGlnaXQgPSB4RGl2TW9kWzFdLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgICAgIGlmICh4U2lnbikge1xuICAgICAgICAgICAgICAgIHhEaWdpdCA9IGhpZ2hlc3RQb3dlcjIgLSAxIC0geERpZ2l0OyAvLyB0d28ncyBjb21wbGVtZW50IGZvciBuZWdhdGl2ZSBudW1iZXJzXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHlEaXZNb2QgPSBkaXZNb2RBbnkoeVJlbSwgaGlnaGVzdFBvd2VyMik7XG4gICAgICAgICAgICB5RGlnaXQgPSB5RGl2TW9kWzFdLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgICAgIGlmICh5U2lnbikge1xuICAgICAgICAgICAgICAgIHlEaWdpdCA9IGhpZ2hlc3RQb3dlcjIgLSAxIC0geURpZ2l0OyAvLyB0d28ncyBjb21wbGVtZW50IGZvciBuZWdhdGl2ZSBudW1iZXJzXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHhSZW0gPSB4RGl2TW9kWzBdO1xuICAgICAgICAgICAgeVJlbSA9IHlEaXZNb2RbMF07XG4gICAgICAgICAgICByZXN1bHQucHVzaChmbih4RGlnaXQsIHlEaWdpdCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdW0gPSBmbih4U2lnbiA/IDEgOiAwLCB5U2lnbiA/IDEgOiAwKSAhPT0gMCA/IGJpZ0ludCgtMSkgOiBiaWdJbnQoMCk7XG4gICAgICAgIGZvciAodmFyIGkgPSByZXN1bHQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgIHN1bSA9IHN1bS5tdWx0aXBseShoaWdoZXN0UG93ZXIyKS5hZGQoYmlnSW50KHJlc3VsdFtpXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5wcmV2KCk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5vdCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgJiBiOyB9KTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYW5kID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hbmQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbmQ7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBiaXR3aXNlKHRoaXMsIG4sIGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhIHwgYjsgfSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm9yID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5vciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm9yO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgXiBiOyB9KTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUueG9yID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS54b3IgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS54b3I7XG5cbiAgICB2YXIgTE9CTUFTS19JID0gMSA8PCAzMCwgTE9CTUFTS19CSSA9IChCQVNFICYgLUJBU0UpICogKEJBU0UgJiAtQkFTRSkgfCBMT0JNQVNLX0k7XG4gICAgZnVuY3Rpb24gcm91Z2hMT0IobikgeyAvLyBnZXQgbG93ZXN0T25lQml0IChyb3VnaClcbiAgICAgICAgLy8gU21hbGxJbnRlZ2VyOiByZXR1cm4gTWluKGxvd2VzdE9uZUJpdChuKSwgMSA8PCAzMClcbiAgICAgICAgLy8gQmlnSW50ZWdlcjogcmV0dXJuIE1pbihsb3dlc3RPbmVCaXQobiksIDEgPDwgMTQpIFtCQVNFPTFlN11cbiAgICAgICAgdmFyIHYgPSBuLnZhbHVlLFxuICAgICAgICAgICAgeCA9IHR5cGVvZiB2ID09PSBcIm51bWJlclwiID8gdiB8IExPQk1BU0tfSSA6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHYgPT09IFwiYmlnaW50XCIgPyB2IHwgQmlnSW50KExPQk1BU0tfSSkgOlxuICAgICAgICAgICAgICAgICAgICB2WzBdICsgdlsxXSAqIEJBU0UgfCBMT0JNQVNLX0JJO1xuICAgICAgICByZXR1cm4geCAmIC14O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGludGVnZXJMb2dhcml0aG0odmFsdWUsIGJhc2UpIHtcbiAgICAgICAgaWYgKGJhc2UuY29tcGFyZVRvKHZhbHVlKSA8PSAwKSB7XG4gICAgICAgICAgICB2YXIgdG1wID0gaW50ZWdlckxvZ2FyaXRobSh2YWx1ZSwgYmFzZS5zcXVhcmUoYmFzZSkpO1xuICAgICAgICAgICAgdmFyIHAgPSB0bXAucDtcbiAgICAgICAgICAgIHZhciBlID0gdG1wLmU7XG4gICAgICAgICAgICB2YXIgdCA9IHAubXVsdGlwbHkoYmFzZSk7XG4gICAgICAgICAgICByZXR1cm4gdC5jb21wYXJlVG8odmFsdWUpIDw9IDAgPyB7IHA6IHQsIGU6IGUgKiAyICsgMSB9IDogeyBwOiBwLCBlOiBlICogMiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHA6IGJpZ0ludCgxKSwgZTogMCB9O1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzO1xuICAgICAgICBpZiAobi5jb21wYXJlVG8oYmlnSW50KDApKSA8IDApIHtcbiAgICAgICAgICAgIG4gPSBuLm5lZ2F0ZSgpLnN1YnRyYWN0KGJpZ0ludCgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uY29tcGFyZVRvKGJpZ0ludCgwKSkgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBiaWdJbnQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJpZ0ludChpbnRlZ2VyTG9nYXJpdGhtKG4sIGJpZ0ludCgyKSkuZSkuYWRkKGJpZ0ludCgxKSk7XG4gICAgfVxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYml0TGVuZ3RoID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGggPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGg7XG5cbiAgICBmdW5jdGlvbiBtYXgoYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XG4gICAgICAgIHJldHVybiBhLmdyZWF0ZXIoYikgPyBhIDogYjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWluKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpO1xuICAgICAgICByZXR1cm4gYS5sZXNzZXIoYikgPyBhIDogYjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2NkKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSkuYWJzKCk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpLmFicygpO1xuICAgICAgICBpZiAoYS5lcXVhbHMoYikpIHJldHVybiBhO1xuICAgICAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGI7XG4gICAgICAgIGlmIChiLmlzWmVybygpKSByZXR1cm4gYTtcbiAgICAgICAgdmFyIGMgPSBJbnRlZ2VyWzFdLCBkLCB0O1xuICAgICAgICB3aGlsZSAoYS5pc0V2ZW4oKSAmJiBiLmlzRXZlbigpKSB7XG4gICAgICAgICAgICBkID0gbWluKHJvdWdoTE9CKGEpLCByb3VnaExPQihiKSk7XG4gICAgICAgICAgICBhID0gYS5kaXZpZGUoZCk7XG4gICAgICAgICAgICBiID0gYi5kaXZpZGUoZCk7XG4gICAgICAgICAgICBjID0gYy5tdWx0aXBseShkKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICAgICAgYSA9IGEuZGl2aWRlKHJvdWdoTE9CKGEpKTtcbiAgICAgICAgfVxuICAgICAgICBkbyB7XG4gICAgICAgICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICAgICAgICAgIGIgPSBiLmRpdmlkZShyb3VnaExPQihiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYS5ncmVhdGVyKGIpKSB7XG4gICAgICAgICAgICAgICAgdCA9IGI7IGIgPSBhOyBhID0gdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIgPSBiLnN1YnRyYWN0KGEpO1xuICAgICAgICB9IHdoaWxlICghYi5pc1plcm8oKSk7XG4gICAgICAgIHJldHVybiBjLmlzVW5pdCgpID8gYSA6IGEubXVsdGlwbHkoYyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxjbShhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpLmFicygpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKS5hYnMoKTtcbiAgICAgICAgcmV0dXJuIGEuZGl2aWRlKGdjZChhLCBiKSkubXVsdGlwbHkoYik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJhbmRCZXR3ZWVuKGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpO1xuICAgICAgICB2YXIgbG93ID0gbWluKGEsIGIpLCBoaWdoID0gbWF4KGEsIGIpO1xuICAgICAgICB2YXIgcmFuZ2UgPSBoaWdoLnN1YnRyYWN0KGxvdykuYWRkKDEpO1xuICAgICAgICBpZiAocmFuZ2UuaXNTbWFsbCkgcmV0dXJuIGxvdy5hZGQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmFuZ2UpKTtcbiAgICAgICAgdmFyIGRpZ2l0cyA9IHRvQmFzZShyYW5nZSwgQkFTRSkudmFsdWU7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXSwgcmVzdHJpY3RlZCA9IHRydWU7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlnaXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdG9wID0gcmVzdHJpY3RlZCA/IGRpZ2l0c1tpXSA6IEJBU0U7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSB0cnVuY2F0ZShNYXRoLnJhbmRvbSgpICogdG9wKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRpZ2l0KTtcbiAgICAgICAgICAgIGlmIChkaWdpdCA8IHRvcCkgcmVzdHJpY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb3cuYWRkKEludGVnZXIuZnJvbUFycmF5KHJlc3VsdCwgQkFTRSwgZmFsc2UpKTtcbiAgICB9XG5cbiAgICB2YXIgcGFyc2VCYXNlID0gZnVuY3Rpb24gKHRleHQsIGJhc2UsIGFscGhhYmV0LCBjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIGFscGhhYmV0ID0gYWxwaGFiZXQgfHwgREVGQVVMVF9BTFBIQUJFVDtcbiAgICAgICAgdGV4dCA9IFN0cmluZyh0ZXh0KTtcbiAgICAgICAgaWYgKCFjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgICAgICB0ZXh0ID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBhYnNCYXNlID0gTWF0aC5hYnMoYmFzZSk7XG4gICAgICAgIHZhciBhbHBoYWJldFZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWxwaGFiZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFscGhhYmV0VmFsdWVzW2FscGhhYmV0W2ldXSA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgYyA9IHRleHRbaV07XG4gICAgICAgICAgICBpZiAoYyA9PT0gXCItXCIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGMgaW4gYWxwaGFiZXRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWxwaGFiZXRWYWx1ZXNbY10gPj0gYWJzQmFzZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gXCIxXCIgJiYgYWJzQmFzZSA9PT0gMSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihjICsgXCIgaXMgbm90IGEgdmFsaWQgZGlnaXQgaW4gYmFzZSBcIiArIGJhc2UgKyBcIi5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJhc2UgPSBwYXJzZVZhbHVlKGJhc2UpO1xuICAgICAgICB2YXIgZGlnaXRzID0gW107XG4gICAgICAgIHZhciBpc05lZ2F0aXZlID0gdGV4dFswXSA9PT0gXCItXCI7XG4gICAgICAgIGZvciAoaSA9IGlzTmVnYXRpdmUgPyAxIDogMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjID0gdGV4dFtpXTtcbiAgICAgICAgICAgIGlmIChjIGluIGFscGhhYmV0VmFsdWVzKSBkaWdpdHMucHVzaChwYXJzZVZhbHVlKGFscGhhYmV0VmFsdWVzW2NdKSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09PSBcIjxcIikge1xuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IGk7XG4gICAgICAgICAgICAgICAgZG8geyBpKys7IH0gd2hpbGUgKHRleHRbaV0gIT09IFwiPlwiICYmIGkgPCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgZGlnaXRzLnB1c2gocGFyc2VWYWx1ZSh0ZXh0LnNsaWNlKHN0YXJ0ICsgMSwgaSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGMgKyBcIiBpcyBub3QgYSB2YWxpZCBjaGFyYWN0ZXJcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwYXJzZUJhc2VGcm9tQXJyYXkoZGlnaXRzLCBiYXNlLCBpc05lZ2F0aXZlKSB7XG4gICAgICAgIHZhciB2YWwgPSBJbnRlZ2VyWzBdLCBwb3cgPSBJbnRlZ2VyWzFdLCBpO1xuICAgICAgICBmb3IgKGkgPSBkaWdpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbC5hZGQoZGlnaXRzW2ldLnRpbWVzKHBvdykpO1xuICAgICAgICAgICAgcG93ID0gcG93LnRpbWVzKGJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc05lZ2F0aXZlID8gdmFsLm5lZ2F0ZSgpIDogdmFsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0cmluZ2lmeShkaWdpdCwgYWxwaGFiZXQpIHtcbiAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldCB8fCBERUZBVUxUX0FMUEhBQkVUO1xuICAgICAgICBpZiAoZGlnaXQgPCBhbHBoYWJldC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBhbHBoYWJldFtkaWdpdF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiPFwiICsgZGlnaXQgKyBcIj5cIjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0Jhc2UobiwgYmFzZSkge1xuICAgICAgICBiYXNlID0gYmlnSW50KGJhc2UpO1xuICAgICAgICBpZiAoYmFzZS5pc1plcm8oKSkge1xuICAgICAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiB7IHZhbHVlOiBbMF0sIGlzTmVnYXRpdmU6IGZhbHNlIH07XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29udmVydCBub256ZXJvIG51bWJlcnMgdG8gYmFzZSAwLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFzZS5lcXVhbHMoLTEpKSB7XG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcbiAgICAgICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW10uY29uY2F0LmFwcGx5KFtdLCBBcnJheS5hcHBseShudWxsLCBBcnJheSgtbi50b0pTTnVtYmVyKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChBcnJheS5wcm90b3R5cGUudmFsdWVPZiwgWzEsIDBdKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBpc05lZ2F0aXZlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhciBhcnIgPSBBcnJheS5hcHBseShudWxsLCBBcnJheShuLnRvSlNOdW1iZXIoKSAtIDEpKVxuICAgICAgICAgICAgICAgIC5tYXAoQXJyYXkucHJvdG90eXBlLnZhbHVlT2YsIFswLCAxXSk7XG4gICAgICAgICAgICBhcnIudW5zaGlmdChbMV0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogW10uY29uY2F0LmFwcGx5KFtdLCBhcnIpLFxuICAgICAgICAgICAgICAgIGlzTmVnYXRpdmU6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5lZyA9IGZhbHNlO1xuICAgICAgICBpZiAobi5pc05lZ2F0aXZlKCkgJiYgYmFzZS5pc1Bvc2l0aXZlKCkpIHtcbiAgICAgICAgICAgIG5lZyA9IHRydWU7XG4gICAgICAgICAgICBuID0gbi5hYnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFzZS5pc1VuaXQoKSkge1xuICAgICAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiB7IHZhbHVlOiBbMF0sIGlzTmVnYXRpdmU6IGZhbHNlIH07XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IEFycmF5LmFwcGx5KG51bGwsIEFycmF5KG4udG9KU051bWJlcigpKSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsIDEpLFxuICAgICAgICAgICAgICAgIGlzTmVnYXRpdmU6IG5lZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIHZhciBsZWZ0ID0gbiwgZGl2bW9kO1xuICAgICAgICB3aGlsZSAobGVmdC5pc05lZ2F0aXZlKCkgfHwgbGVmdC5jb21wYXJlQWJzKGJhc2UpID49IDApIHtcbiAgICAgICAgICAgIGRpdm1vZCA9IGxlZnQuZGl2bW9kKGJhc2UpO1xuICAgICAgICAgICAgbGVmdCA9IGRpdm1vZC5xdW90aWVudDtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IGRpdm1vZC5yZW1haW5kZXI7XG4gICAgICAgICAgICBpZiAoZGlnaXQuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQgPSBiYXNlLm1pbnVzKGRpZ2l0KS5hYnMoKTtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdC5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdXQucHVzaChkaWdpdC50b0pTTnVtYmVyKCkpO1xuICAgICAgICB9XG4gICAgICAgIG91dC5wdXNoKGxlZnQudG9KU051bWJlcigpKTtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG91dC5yZXZlcnNlKCksIGlzTmVnYXRpdmU6IG5lZyB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQmFzZVN0cmluZyhuLCBiYXNlLCBhbHBoYWJldCkge1xuICAgICAgICB2YXIgYXJyID0gdG9CYXNlKG4sIGJhc2UpO1xuICAgICAgICByZXR1cm4gKGFyci5pc05lZ2F0aXZlID8gXCItXCIgOiBcIlwiKSArIGFyci52YWx1ZS5tYXAoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdpZnkoeCwgYWxwaGFiZXQpO1xuICAgICAgICB9KS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xuICAgIH07XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XG4gICAgfTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcbiAgICB9O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAocmFkaXgsIGFscGhhYmV0KSB7XG4gICAgICAgIGlmIChyYWRpeCA9PT0gdW5kZWZpbmVkKSByYWRpeCA9IDEwO1xuICAgICAgICBpZiAocmFkaXggIT09IDEwKSByZXR1cm4gdG9CYXNlU3RyaW5nKHRoaXMsIHJhZGl4LCBhbHBoYWJldCk7XG4gICAgICAgIHZhciB2ID0gdGhpcy52YWx1ZSwgbCA9IHYubGVuZ3RoLCBzdHIgPSBTdHJpbmcodlstLWxdKSwgemVyb3MgPSBcIjAwMDAwMDBcIiwgZGlnaXQ7XG4gICAgICAgIHdoaWxlICgtLWwgPj0gMCkge1xuICAgICAgICAgICAgZGlnaXQgPSBTdHJpbmcodltsXSk7XG4gICAgICAgICAgICBzdHIgKz0gemVyb3Muc2xpY2UoZGlnaXQubGVuZ3RoKSArIGRpZ2l0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaWduID0gdGhpcy5zaWduID8gXCItXCIgOiBcIlwiO1xuICAgICAgICByZXR1cm4gc2lnbiArIHN0cjtcbiAgICB9O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCwgYWxwaGFiZXQpIHtcbiAgICAgICAgaWYgKHJhZGl4ID09PSB1bmRlZmluZWQpIHJhZGl4ID0gMTA7XG4gICAgICAgIGlmIChyYWRpeCAhPSAxMCkgcmV0dXJuIHRvQmFzZVN0cmluZyh0aGlzLCByYWRpeCwgYWxwaGFiZXQpO1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpO1xuICAgIH07XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvU3RyaW5nID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZztcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9KU09OID0gQmlnSW50ZWdlci5wcm90b3R5cGUudG9KU09OID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnRvU3RyaW5nKCk7IH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludCh0aGlzLnRvU3RyaW5nKCksIDEwKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRvSlNOdW1iZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mO1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9KU051bWJlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZjtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvSlNOdW1iZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludCh0aGlzLnRvU3RyaW5nKCksIDEwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN0cmluZ1ZhbHVlKHYpIHtcbiAgICAgICAgaWYgKGlzUHJlY2lzZSgrdikpIHtcbiAgICAgICAgICAgIHZhciB4ID0gK3Y7XG4gICAgICAgICAgICBpZiAoeCA9PT0gdHJ1bmNhdGUoeCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cHBvcnRzTmF0aXZlQmlnSW50ID8gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQoeCkpIDogbmV3IFNtYWxsSW50ZWdlcih4KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyB2KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2lnbiA9IHZbMF0gPT09IFwiLVwiO1xuICAgICAgICBpZiAoc2lnbikgdiA9IHYuc2xpY2UoMSk7XG4gICAgICAgIHZhciBzcGxpdCA9IHYuc3BsaXQoL2UvaSk7XG4gICAgICAgIGlmIChzcGxpdC5sZW5ndGggPiAyKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgc3BsaXQuam9pbihcImVcIikpO1xuICAgICAgICBpZiAoc3BsaXQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB2YXIgZXhwID0gc3BsaXRbMV07XG4gICAgICAgICAgICBpZiAoZXhwWzBdID09PSBcIitcIikgZXhwID0gZXhwLnNsaWNlKDEpO1xuICAgICAgICAgICAgZXhwID0gK2V4cDtcbiAgICAgICAgICAgIGlmIChleHAgIT09IHRydW5jYXRlKGV4cCkgfHwgIWlzUHJlY2lzZShleHApKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgZXhwICsgXCIgaXMgbm90IGEgdmFsaWQgZXhwb25lbnQuXCIpO1xuICAgICAgICAgICAgdmFyIHRleHQgPSBzcGxpdFswXTtcbiAgICAgICAgICAgIHZhciBkZWNpbWFsUGxhY2UgPSB0ZXh0LmluZGV4T2YoXCIuXCIpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWxQbGFjZSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZXhwIC09IHRleHQubGVuZ3RoIC0gZGVjaW1hbFBsYWNlIC0gMTtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgwLCBkZWNpbWFsUGxhY2UpICsgdGV4dC5zbGljZShkZWNpbWFsUGxhY2UgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHAgPCAwKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgaW5jbHVkZSBuZWdhdGl2ZSBleHBvbmVudCBwYXJ0IGZvciBpbnRlZ2Vyc1wiKTtcbiAgICAgICAgICAgIHRleHQgKz0gKG5ldyBBcnJheShleHAgKyAxKSkuam9pbihcIjBcIik7XG4gICAgICAgICAgICB2ID0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaXNWYWxpZCA9IC9eKFswLTldWzAtOV0qKSQvLnRlc3Qodik7XG4gICAgICAgIGlmICghaXNWYWxpZCkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHYpO1xuICAgICAgICBpZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludChzaWduID8gXCItXCIgKyB2IDogdikpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gW10sIG1heCA9IHYubGVuZ3RoLCBsID0gTE9HX0JBU0UsIG1pbiA9IG1heCAtIGw7XG4gICAgICAgIHdoaWxlIChtYXggPiAwKSB7XG4gICAgICAgICAgICByLnB1c2goK3Yuc2xpY2UobWluLCBtYXgpKTtcbiAgICAgICAgICAgIG1pbiAtPSBsO1xuICAgICAgICAgICAgaWYgKG1pbiA8IDApIG1pbiA9IDA7XG4gICAgICAgICAgICBtYXggLT0gbDtcbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIociwgc2lnbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VOdW1iZXJWYWx1ZSh2KSB7XG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoQmlnSW50KHYpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcmVjaXNlKHYpKSB7XG4gICAgICAgICAgICBpZiAodiAhPT0gdHJ1bmNhdGUodikpIHRocm93IG5ldyBFcnJvcih2ICsgXCIgaXMgbm90IGFuIGludGVnZXIuXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodi50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXJWYWx1ZSh2KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVN0cmluZ1ZhbHVlKHYpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICAgIC8vIFByZS1kZWZpbmUgbnVtYmVycyBpbiByYW5nZSBbLTk5OSw5OTldXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHtcbiAgICAgICAgSW50ZWdlcltpXSA9IHBhcnNlVmFsdWUoaSk7XG4gICAgICAgIGlmIChpID4gMCkgSW50ZWdlclstaV0gPSBwYXJzZVZhbHVlKC1pKTtcbiAgICB9XG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBJbnRlZ2VyLm9uZSA9IEludGVnZXJbMV07XG4gICAgSW50ZWdlci56ZXJvID0gSW50ZWdlclswXTtcbiAgICBJbnRlZ2VyLm1pbnVzT25lID0gSW50ZWdlclstMV07XG4gICAgSW50ZWdlci5tYXggPSBtYXg7XG4gICAgSW50ZWdlci5taW4gPSBtaW47XG4gICAgSW50ZWdlci5nY2QgPSBnY2Q7XG4gICAgSW50ZWdlci5sY20gPSBsY207XG4gICAgSW50ZWdlci5pc0luc3RhbmNlID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggaW5zdGFuY2VvZiBCaWdJbnRlZ2VyIHx8IHggaW5zdGFuY2VvZiBTbWFsbEludGVnZXIgfHwgeCBpbnN0YW5jZW9mIE5hdGl2ZUJpZ0ludDsgfTtcbiAgICBJbnRlZ2VyLnJhbmRCZXR3ZWVuID0gcmFuZEJldHdlZW47XG5cbiAgICBJbnRlZ2VyLmZyb21BcnJheSA9IGZ1bmN0aW9uIChkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMubWFwKHBhcnNlVmFsdWUpLCBwYXJzZVZhbHVlKGJhc2UgfHwgMTApLCBpc05lZ2F0aXZlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIEludGVnZXI7XG59KSgpO1xuIiwiLyogZ2xvYmFsIGJpZ0ludCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuLy8gV2UgcmVwcmVzZW50IGEgW1oudF0gYXMgYSBqYXZhc2NyaXB0IDMyYml0IGludGVnZXJzIGlmIGl0IGZpdHMgb3IgYXMgYSBiaWdJbnQuXG5cbi8vUHJvdmlkZXM6IG1sX3pfbm9ybWFsaXplXG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfbm9ybWFsaXplKHgpe1xuICB2YXIgeSA9IHgudG9KU051bWJlciAoKSB8IDA7XG4gIGlmKHguZXF1YWxzKGJpZ0ludCh5KSkpIHJldHVybiB5O1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogbWxfel9tdWxfb3ZlcmZsb3dzXG5mdW5jdGlvbiBtbF96X211bF9vdmVyZmxvd3MoeCx5KXtcbiAgdmFyIHogPSB4Knk7XG4gIHJldHVybiB6ICE9ICh6fDApO1xufVxuXG4vL2V4dGVybmFsIGluaXQ6IHVuaXQgLT4gdW5pdFxuLy9Qcm92aWRlczogbWxfel9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX3phcml0aF9tYXJzaGFsLCBjYW1sX3phcml0aF91bm1hcnNoYWwsIGNhbWxfY3VzdG9tX29wcywgbWxfel9oYXNoLCBtbF96X2NvbXBhcmVcbmZ1bmN0aW9uIG1sX3pfaW5pdCh1bml0KSB7XG4gIGNhbWxfY3VzdG9tX29wc1snX3onXSA9XG4gICAgeyBzZXJpYWxpemUgOiBjYW1sX3phcml0aF9tYXJzaGFsLFxuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX3phcml0aF91bm1hcnNoYWwsXG4gICAgICBoYXNoIDogbWxfel9oYXNoLFxuICAgICAgY29tcGFyZSA6IG1sX3pfY29tcGFyZSxcbiAgICB9O1xuICByZXR1cm4gMCB9XG5cbi8vZXh0ZXJuYWwgbmVnOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbmVnIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X25lZyh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5uZWdhdGUoKSk7XG59XG5cbi8vZXh0ZXJuYWwgYWRkOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9hZGQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfYWRkKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5hZGQoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIHN1YjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3ViIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3N1Yih6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuc3VidHJhY3QoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIG11bDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X211bCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubXVsdGlwbHkoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGRpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2Rpdih6MSwgejIpIHtcbiAgejIgPSBiaWdJbnQoejIpXG4gIGlmKHoyLmVxdWFscyhiaWdJbnQoMCkpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLmRpdmlkZShiaWdJbnQoejIpKSlcbn1cblxuLy9leHRlcm5hbCBjZGl2OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9jZGl2XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2LCBtbF96X3NpZ24sIG1sX3pfYWRkXG5mdW5jdGlvbiBtbF96X2NkaXYoejEsIHoyKSB7XG4gIHZhciB6MV9wb3MgPSBtbF96X3NpZ24oejEpO1xuICB2YXIgejJfcG9zID0gbWxfel9zaWduKHoyKTtcbiAgaWYgKHoxX3BvcyAqIHoyX3BvcyA+IDApIC8qIE11bHRpcGxpY2F0aW9uIGlzIGxpa2UgYSBzaWdud2lzZSB4b3IgKi8ge1xuICAgIGlmICghYmlnSW50KHoxKS5tb2QoYmlnSW50KHoyKSkuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICAgIHJldHVybiBtbF96X2FkZChtbF96X2Rpdih6MSwgejIpLCBiaWdJbnQoMSkpIDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1sX3pfZGl2KHoxLCB6Mik7XG59XG5cbi8vZXh0ZXJuYWwgZmRpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZmRpdlxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2RpdiwgbWxfel9zaWduLCBtbF96X3N1YlxuZnVuY3Rpb24gbWxfel9mZGl2KHoxLCB6Mikge1xuICB2YXIgejFfcG9zID0gbWxfel9zaWduKHoxKTtcbiAgdmFyIHoyX3BvcyA9IG1sX3pfc2lnbih6Mik7XG4gIGlmICh6MV9wb3MgKiB6Ml9wb3MgPCAwKSAvKiBNdWx0aXBsaWNhdGlvbiBpcyBsaWtlIGEgc2lnbndpc2UgeG9yICovIHtcbiAgICBpZiAoIWJpZ0ludCh6MSkubW9kKGJpZ0ludCh6MikpLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgICByZXR1cm4gbWxfel9zdWIobWxfel9kaXYoejEsIHoyKSwgYmlnSW50KDEpKSA7XG4gICAgfVxuICB9XG4gIHJldHVybiBtbF96X2Rpdih6MSwgejIpO1xufVxuXG4vL2V4dGVybmFsIHJlbTogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcmVtXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3JlbSh6MSwgejIpIHtcbiAgejIgPSBiaWdJbnQoejIpO1xuICBpZiAoejIuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubW9kKHoyKSk7XG59XG5cbi8vZXh0ZXJuYWwgZGl2X3JlbTogdCAtPiB0IC0+ICh0ICogdClcbi8vUHJvdmlkZXM6IG1sX3pfZGl2X3JlbVxuLy9SZXF1aXJlczogbWxfel9kaXYsIG1sX3pfcmVtXG5mdW5jdGlvbiBtbF96X2Rpdl9yZW0oejEsIHoyKSB7XG4gIHJldHVybiBbMCwgbWxfel9kaXYoejEsejIpLCBtbF96X3JlbSh6MSwgejIpXVxufVxuLy9leHRlcm5hbCBzdWNjOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3VjYyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zdWNjKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5leHQoKSk7XG59XG5cbi8vZXh0ZXJuYWwgcHJlZDogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3ByZWQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfcHJlZCh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5wcmV2KCkpO1xufVxuXG4vL2V4dGVybmFsIGFiczogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2FicyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9hYnMoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYWJzKCkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ2FuZDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nYW5kIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2xvZ2FuZCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYW5kKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2dvcjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nb3IgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nb3IoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBsb2d4b3I6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2xvZ3hvciBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2d4b3IoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnhvcihiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgbG9nbm90OiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbG9nbm90IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9nbm90KHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm5vdCgpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9sZWZ0OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3NoaWZ0X2xlZnQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfbGVmdCh6MSwgYW10KSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnNoaWZ0TGVmdChhbXQpKTtcbn1cblxuLy9leHRlcm5hbCBzaGlmdF9yaWdodDogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zaGlmdF9yaWdodCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zaGlmdF9yaWdodCh6MSwgYW10KSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnNoaWZ0UmlnaHQoYW10KSk7XG59XG5cbi8vZXh0ZXJuYWwgc2hpZnRfcmlnaHRfdHJ1bmM6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc2hpZnRfcmlnaHRfdHJ1bmMgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXZcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfcmlnaHRfdHJ1bmMoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X2RpdihiaWdJbnQoejEpLCBiaWdJbnQoMikucG93KHoyKSlcbn1cblxuLy9leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9pbnQzMiBjb25zdFxuZnVuY3Rpb24gbWxfel9vZl9pbnQzMihpKSB7XG4gIHJldHVybiBpIHwgMDtcbn1cblxuLy9leHRlcm5hbCBvZl9uYXRpdmVpbnQ6IG5hdGl2ZWludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX25hdGl2ZWludCBjb25zdFxuZnVuY3Rpb24gbWxfel9vZl9uYXRpdmVpbnQoaSkge1xuICByZXR1cm4gaSB8IDA7XG59XG5cbi8vZXh0ZXJuYWwgb2ZfaW50NjQ6IGludDY0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfaW50NjQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X25lZywgbWxfel9ub3JtYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLGNhbWxfaW50NjRfaGkzMixjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIG1sX3pfb2ZfaW50NjQoaTY0KSB7XG4gIHZhciBuZWcgPSBmYWxzZTtcbiAgaWYoY2FtbF9pbnQ2NF9jb21wYXJlKGk2NCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkoMCwwKSkgPCAwKSB7XG4gICAgbmVnID0gdHJ1ZTtcbiAgICBpNjQgPSBjYW1sX2ludDY0X25lZyhpNjQpXG4gIH1cbiAgdmFyIGxvID0gY2FtbF9pbnQ2NF9sbzMyKGk2NCkgPj4+IDA7XG4gIHZhciBoaSA9IGNhbWxfaW50NjRfaGkzMihpNjQpID4+PiAwO1xuICB2YXIgeCA9IGJpZ0ludChsbykuYWRkKGJpZ0ludChoaSkuc2hpZnRMZWZ0KDMyKSk7XG4gIGlmKG5lZykgeyB4ID0geC5uZWdhdGUoKSB9O1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoeClcbn1cblxuLy9leHRlcm5hbCBvZl9mbG9hdDogZmxvYXQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9mbG9hdFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9vZl9mbG9hdChmMSkge1xuICBpZihmMSA9PSBJbmZpbml0eSB8fCBmMSA9PSAtSW5maW5pdHkgfHwgZjEgIT0gZjEpXG4gICAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoZjE8MD9NYXRoLmNlaWwoZjEpOk1hdGguZmxvb3IoZjEpKSk7XG59XG5cbi8vZXh0ZXJuYWwgdG9faW50OiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel90b19pbnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel90b19pbnQoejEpIHtcbiAgaWYgKHoxID09ICh6MSB8IDApKSByZXR1cm4gejEgfCAwO1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbn1cblxuLy9leHRlcm5hbCB0b19pbnQzMjogdCAtPiBpbnQzMlxuLy9Qcm92aWRlczogbWxfel90b19pbnQzMlxuLy9SZXF1aXJlczogbWxfel90b19pbnRcbmZ1bmN0aW9uIG1sX3pfdG9faW50MzIoejEpIHsgcmV0dXJuIG1sX3pfdG9faW50KHoxKSB9XG5cbi8vZXh0ZXJuYWwgdG9faW50NjQ6IHQgLT4gaW50NjRcbi8vUHJvdmlkZXM6IG1sX3pfdG9faW50NjRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9maXRzX2ludDY0LCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaVxuZnVuY3Rpb24gbWxfel90b19pbnQ2NCh6MSkge1xuICB6MSA9IGJpZ0ludCh6MSlcbiAgaWYoIW1sX3pfZml0c19pbnQ2NCh6MSkpIHtcbiAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgfVxuICB2YXIgbWFzayA9IGJpZ0ludCgweGZmZmZmZmZmKVxuICB2YXIgbG8gPSB6MS5hbmQobWFzaykudG9KU051bWJlcigpO1xuICB2YXIgaGkgPSB6MS5zaGlmdFJpZ2h0KDMyKS5hbmQobWFzaykudG9KU051bWJlcigpO1xuICB2YXIgeCA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSk7XG4gIHJldHVybiB4O1xufVxuXG4vL2V4dGVybmFsIHRlc3RiaXQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel90ZXN0Yml0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfdGVzdGJpdCh6LHBvcyl7XG4gIHogPSBiaWdJbnQoeik7XG4gIHJldHVybiAoei5zaGlmdFJpZ2h0KHBvcykuYW5kKGJpZ0ludCgxKSkudG9KU051bWJlcigpKXwwO1xufVxuXG4vL2V4dGVybmFsIHRvX25hdGl2ZWludDogdCAtPiBuYXRpdmVpbnRcbi8vUHJvdmlkZXM6IG1sX3pfdG9fbmF0aXZlaW50XG4vL1JlcXVpcmVzOiBtbF96X3RvX2ludFxuZnVuY3Rpb24gbWxfel90b19uYXRpdmVpbnQoejEpIHsgcmV0dXJuIG1sX3pfdG9faW50KHoxKSB9XG5cbi8vZXh0ZXJuYWwgZm9ybWF0OiBzdHJpbmcgLT4gdCAtPiBzdHJpbmdcbi8vUHJvdmlkZXM6IG1sX3pfZm9ybWF0IFxuLy9SZXF1aXJlczogYmlnSW50XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9mb3JtYXQoZm10LCB6MSkge1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHZhciBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9aYXJpdGgvYmxvYi9kMDU1NWQ0NTFjZTI5NWM0NDk3ZjI0YThkOTk5M2Y4ZGQyMzA5N2RmL3oubWxpcCNMMjk3XG4gIHZhciBiYXNlID0gMTA7XG4gIHZhciBjYXMgPSAwO1xuICB2YXIgd2lkdGggPSAwO1xuICB2YXIgYWx0ID0gMDtcbiAgdmFyIGRpciA9IDA7XG4gIHZhciBzaWduID0gJyc7XG4gIHZhciBwYWQgPSAnICc7XG4gIHZhciBpZHggPSAwO1xuICB2YXIgcHJlZml4PVwiXCI7XG4gIHdoaWxlKGZtdFtpZHhdID09ICclJykgaWR4Kys7XG4gIGZvcig7OyBpZHgrKykge1xuICAgIGlmKGZtdFtpZHhdID09ICcjJykgYWx0ID0gMTtcbiAgICBlbHNlIGlmIChmbXRbaWR4XSA9PSAnMCcpIHBhZCA9ICcwJztcbiAgICBlbHNlIGlmIChmbXRbaWR4XSA9PSAnLScpIGRpciA9IDE7XG4gICAgZWxzZSBpZiAoZm10W2lkeF0gPT0gJyAnIHx8IGZtdFtpZHhdID09ICcrJykgc2lnbiA9IGZtdFtpZHhdO1xuICAgIGVsc2UgYnJlYWs7XG4gIH1cbiAgaWYoejEubHQoYmlnSW50KDApKSl7c2lnbiA9ICctJzt6MSA9IHoxLm5lZ2F0ZSgpfTtcbiAgZm9yKDtmbXRbaWR4XT49JzAnICYmIGZtdFtpZHhdIDw9JzknO2lkeCsrKVxuICAgIHdpZHRoPTEwKndpZHRoICsgKCtmbXRbaWR4XSk7XG4gIHN3aXRjaChmbXRbaWR4XSl7XG4gIGNhc2UgJ2knOiBjYXNlICdkJzogY2FzZSAndSc6IGJyZWFrO1xuICBjYXNlICdiJzogYmFzZSA9IDI7IGlmKGFsdCkgcHJlZml4ID0gXCIwYlwiOyBicmVhaztcbiAgY2FzZSAnbyc6IGJhc2UgPSA4OyBpZihhbHQpIHByZWZpeCA9IFwiMG9cIjsgYnJlYWs7XG4gIGNhc2UgJ3gnOiBiYXNlID0gMTY7IGlmKGFsdCkgcHJlZml4ID0gXCIweFwiOyBicmVhaztcbiAgY2FzZSAnWCc6IGJhc2UgPSAxNjsgaWYoYWx0KSBwcmVmaXggPSBcIjBYXCI7IGNhcyA9IDE7IGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJVbnN1cHBvcnRlZCBmb3JtYXQgJ1wiICsgZm10ICsgXCInXCIpO1xuICB9XG4gIGlmIChkaXIpIHBhZCA9ICcgJztcbiAgdmFyIHJlcyA9IHoxLnRvU3RyaW5nKGJhc2UpO1xuICBpZiAoY2FzID09PSAxKSB7XG4gICAgcmVzID0gcmVzLnRvVXBwZXJDYXNlKCk7XG4gIH1cbiAgdmFyIHNpemUgPSByZXMubGVuZ3RoO1xuICBpZiAocGFkID09ICcgJykge1xuICAgIGlmKGRpcikge1xuICAgICAgcmVzID0gc2lnbiArIHByZWZpeCArIHJlcztcbiAgICAgIGZvcig7cmVzLmxlbmd0aDx3aWR0aDspIHJlcyA9IHJlcyArIHBhZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0gc2lnbiArIHByZWZpeCArIHJlcztcbiAgICAgIGZvcig7cmVzLmxlbmd0aDx3aWR0aDspIHJlcyA9IHBhZCArIHJlcztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHByZSA9IHNpZ24gKyBwcmVmaXg7XG4gICAgZm9yKDtyZXMubGVuZ3RoK3ByZS5sZW5ndGg8d2lkdGg7KSByZXMgPSBwYWQgKyByZXM7XG4gICAgcmVzID0gcHJlICsgcmVzO1xuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fel9vZl9qc19zdHJpbmdfYmFzZVxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UoYmFzZSwgcykge1xuICBpZiAoYmFzZSA9PSAwKSB7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9aYXJpdGgvYmxvYi9iOGRiYWY0OGE3OTI3MDYxZGY2OTlhZDdjZTY0MmJiNGYxZmU1MzA4L2NhbWxfei5jI0w1OThcbiAgICBiYXNlID0gMTA7XG4gICAgdmFyIHAgPSAwO1xuICAgIHZhciBzaWduID0gMTtcbiAgICBpZihzW3BdID09ICctJykgeyBzaWduID0gLTE7IHArKyB9XG4gICAgZWxzZSBpZiAoc1twXSA9PSAnKycpIHsgcCsrIH1cbiAgICBpZiAoc1twXSA9PSAnMCcpIHtcbiAgICAgIHAgKys7XG4gICAgICBpZiAocy5sZW5ndGggPT0gcCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBiYyA9IHNbcF07XG4gICAgICAgIGlmIChiYyA9PSAnbycgfHwgYmMgPT0gJ08nKSB7XG4gICAgICAgICAgYmFzZSA9IDg7XG4gICAgICAgIH0gZWxzZSBpZiAoYmMgPT0gJ3gnIHx8IGJjID09ICdYJykge1xuICAgICAgICAgIGJhc2UgPSAxNjtcbiAgICAgICAgfSBlbHNlIGlmIChiYyA9PSAnYicgfHwgYmMgPT0gJ0InKSB7XG4gICAgICAgICAgYmFzZSA9IDI7XG4gICAgICAgIH0gXG4gICAgICAgIGlmKGJhc2UgIT0gMTApIHtcbiAgICAgICAgICBzID0gcy5zdWJzdHJpbmcocCsxKTtcbiAgICAgICAgICBpZihzaWduID09IC0xKSBzID0gXCItXCIgKyBzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBmdW5jdGlvbiBkaWdpdChjb2RlKXtcbiAgICBpZihjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHJldHVybiBjb2RlIC0gNDg7XG4gICAgaWYoY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEwMikgcmV0dXJuIGNvZGUgLSA5NyArIDEwO1xuICAgIGlmKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA3MCkgcmV0dXJuIGNvZGUgLSA2NSArIDEwO1xuICB9XG4gIHZhciBpID0gMDtcbiAgaWYgKHNbaV0gPT0gJysnKSB7XG4gICAgLy9yZW1vdmUgbGVhZGluZyAnKydcbiAgICBzID0gcy5zdWJzdHJpbmcoMSk7XG4gIH1cbiAgZWxzZSBpZihzW2ldID09ICctJykgaSsrO1xuICBpZihzW2ldID09ICdfJykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5vZl9zdWJzdHJpbmdfYmFzZTogaW52YWxpZCBkaWdpdFwiKTtcbiAgcyA9IHMucmVwbGFjZSgvXy9nLCcnKTtcbiAgLy9ub3JtYWxpemUgXCJlbXB0eVwiIG51bWJlcnNcbiAgaWYocyA9PSAnLScgfHwgcyA9PSAnJykgcyA9ICcwJztcbiAgZm9yKCA7IGkgPCBzLmxlbmd0aCA7IGkrKyl7XG4gICAgdmFyIGMgPSBkaWdpdChzLmNoYXJDb2RlQXQoaSkpO1xuICAgIGlmKGMgPT0gdW5kZWZpbmVkIHx8IGMgPj0gYmFzZSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgZGlnaXRcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludChzLCBiYXNlKSk7XG4gIFxufVxuXG4vL2V4dGVybmFsIG9mX3N1YnN0cmluZ19iYXNlOiBpbnQgLT4gc3RyaW5nIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX3N1YnN0cmluZ19iYXNlXG4vL1JlcXVpcmVzOiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBtbF96X29mX3N1YnN0cmluZ19iYXNlKGJhc2UsIHMsIHBvcywgbGVuKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICBpZihwb3MgIT0gMCB8fCBsZW4gIT0gcy5sZW5ndGgpIHtcbiAgICBpZiAocy5sZW5ndGggLSBwb3MgPCBsZW4pIHtcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgb2Zmc2V0IG9yIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcyA9IHMuc2xpY2UocG9zLHBvcytsZW4pO1xuICB9XG4gIHJldHVybiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2UoYmFzZSwgcyk7XG59XG5cbi8vZXh0ZXJuYWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9jb21wYXJlIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfY29tcGFyZSh6MSwgejIpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuY29tcGFyZShiaWdJbnQoejIpKTtcbn1cblxuLy9leHRlcm5hbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZXF1YWwgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9lcXVhbCh6MSwgejIpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuZXF1YWxzKGJpZ0ludCh6MikpID8gMSA6IDA7XG59XG5cbi8vZXh0ZXJuYWwgc2lnbjogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfc2lnbiBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X3NpZ24oejEpIHtcbiAgcmV0dXJuIGJpZ0ludCh6MSkuY29tcGFyZShiaWdJbnQuemVybyk7XG59XG5cbi8vZXh0ZXJuYWwgZ2NkOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9nY2Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZ2NkKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50LmdjZChiaWdJbnQoejEpLCBiaWdJbnQoejIpKS5hYnMoKSk7XG59XG5cbi8vZXh0ZXJuYWwgbnVtYml0czogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfbnVtYml0cyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X251bWJpdHMoejEpIHtcbiAgejEgPSBiaWdJbnQoejEpLmFicygpO1xuICB2YXIgbiA9IDA7XG4gIHZhciB1cHBlckJvdW5kID0gYmlnSW50Lm9uZTtcbiAgd2hpbGUgKHVwcGVyQm91bmQubGVxKHoxKSkge1xuICAgIG4gKz0gMTtcbiAgICB1cHBlckJvdW5kID0gdXBwZXJCb3VuZC5tdWx0aXBseSgyKTtcbiAgfVxuICByZXR1cm4gbjsgLy8gMl57bi0xfSA8PSB8eHwgPCAyXm5cbn1cblxuLy9leHRlcm5hbCBmaXRzX2ludDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfaW50IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfZml0c19pbnQoejEpIHtcbiAgaWYoejEgPT0gKHoxIHwgMCkpIHJldHVybiAxO1xuICBlbHNlIHJldHVybiAwO1xufVxuXG4vL2V4dGVybmFsIGZpdHNfaW50MzI6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX2ludDMyXG4vL1JlcXVpcmVzOiBtbF96X2ZpdHNfaW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfaW50MzIoejEpIHtcbiAgcmV0dXJuIG1sX3pfZml0c19pbnQoejEpO1xufVxuXG4vL2V4dGVybmFsIGZpdHNfaW50NjQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX2ludDY0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfZml0c19pbnQ2NCh6MSkge1xuICB6MSA9IGJpZ0ludCh6MSlcbiAgaWYgKHoxLmNvbXBhcmUoYmlnSW50KFwiOTIyMzM3MjAzNjg1NDc3NTgwN1wiKSkgPD0gMCAmJiB6MS5jb21wYXJlKGJpZ0ludChcIi05MjIzMzcyMDM2ODU0Nzc1ODA4XCIpKSA+PSAwKVxuICAgIHJldHVybiAxXG4gIGVsc2VcbiAgICByZXR1cm4gMFxufVxuXG4vL2V4dGVybmFsIGZpdHNfbmF0aXZlaW50OiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19uYXRpdmVpbnRcbi8vUmVxdWlyZXM6IG1sX3pfZml0c19pbnRcbmZ1bmN0aW9uIG1sX3pfZml0c19uYXRpdmVpbnQoejEpIHtcbiAgcmV0dXJuIG1sX3pfZml0c19pbnQoejEpO1xufVxuXG4vL2V4dGVybmFsIHBvd206IHQgLT4gdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcG93bVxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZSwgbWxfel9pbnZlcnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIG1sX3pfcG93bSh6MSwgejIsIHozKSB7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHoyID0gYmlnSW50KHoyKTtcbiAgejMgPSBiaWdJbnQoejMpO1xuICBpZih6My5lcXVhbHMoemVybykpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgaWYoejMuYWJzKCkuZXF1YWxzKG9uZSkpIHJldHVybiAwO1xuICBpZih6Mi5lcXVhbHMoemVybykpIHJldHVybiAxO1xuICBpZih6Mi5sdCgwKSkge1xuICAgIHZhciBpbnYgPSBiaWdJbnQobWxfel9pbnZlcnQoejEsIHozKSk7XG4gICAgdmFyIHIgPSBpbnYubW9kUG93KHoyLm5lZ2F0ZSgpLCB6Myk7XG4gICAgaWYoci5sdCh6ZXJvKSkgciA9IHIuYWRkKHozLmFicygpKTtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUocik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHIgPSBiaWdJbnQoejEpLm1vZFBvdyh6MiwgejMpO1xuICAgIGlmKHIubHQoemVybykpIHIgPSByLmFkZCh6My5hYnMoKSk7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9XG59XG5cbi8vZXh0ZXJuYWwgcG93bjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcG93XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfbm9ybWFsaXplLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfcG93KHoxLCBpMSkge1xuICBpMSA9IGJpZ0ludChpMSk7XG4gIGlmIChpMS5sdChiaWdJbnQoMCkpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5wb3c6IGV4cG9uZW50IG11c3QgYmUgbm9ubmVnYXRpdmVcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkucG93KGkxKSk7XG59XG5cbi8vZXh0ZXJuYWwgaGFzaDogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gbWxfel9oYXNoKHoxKSB7XG4gIHZhciBhID0gYmlnSW50KHoxKS50b0FycmF5KE1hdGgucG93KDIsIDMyKSk7XG4gIHZhciBhY2MgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGEudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICBhY2MgPSBjYW1sX2hhc2hfbWl4X2ludChhY2MsIGEudmFsdWVbaV0pO1xuICB9XG4gIGlmKGEudmFsdWUubGVuZ3RoICUgMiAhPSAwKSB7XG4gICAgYWNjID0gY2FtbF9oYXNoX21peF9pbnQoYWNjLCAwKTtcbiAgfVxuICBpZihhLmlzTmVnYXRpdmUpe1xuICAgIGFjYyA9IGFjYyArIDFcbiAgfVxuICByZXR1cm4gYWNjIHwgMFxufVxuXG4vL2V4dGVybmFsIHRvX2JpdHM6IHQgLT4gc3RyaW5nXG4vL1Byb3ZpZGVzOiBtbF96X3RvX2JpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyX3JlcGVhdCwgYmlnSW50XG5mdW5jdGlvbiBtbF96X3RvX2JpdHMoejEpIHtcbiAgejEgPSBiaWdJbnQoejEpLmFicygpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgd2hpbGUoIXoxLmVxdWFscyhiaWdJbnQoMCkpKXtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh6MS5tb2QoYmlnSW50KDI1NikpKTtcbiAgICB6MSA9IHoxLmRpdmlkZShiaWdJbnQoMjU2KSk7XG4gIH1cbiAgd2hpbGUocmVzLmxlbmd0aCAlIDQgIT0gMCl7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMCk7XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTtcbn1cblxuLy9leHRlcm5hbCBvZl9iaXRzOiBzdHJpbmcgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfb2ZfYml0cyh6MSkge1xuICB2YXIgciA9IGJpZ0ludC56ZXJvXG4gIHZhciBiYXNlMSA9IGJpZ0ludCgyNTYpO1xuICB2YXIgYmFzZSA9IGJpZ0ludC5vbmU7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjYW1sX21sX3N0cmluZ19sZW5ndGgoejEpOyBpKyspe1xuICAgIHZhciBkID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCh6MSxpKTtcbiAgICByID0gYmlnSW50KGJhc2UpLm11bHRpcGx5KGQpLmFkZChyKTtcbiAgICBiYXNlID0gYmlnSW50KGJhc2UpLm11bHRpcGx5KGJhc2UxKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUocik7XG59XG5cbi8vZXh0ZXJuYWwgcG93bV9zZWM6IHQgLT4gdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcG93bV9zZWNcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9mYWlsd2l0aCwgbWxfel9wb3dtLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfcG93bV9zZWMoejEsIHoyLCB6Mykge1xuICB6MyA9IGJpZ0ludCh6MykuYWJzKCk7XG4gIC8vIHBvd21fc2VjIHJlcXVpcmVzIHRoYXQgdGhlIGV4cG9uZW50IGJlIHBvc2l0aXZlXG4gIHZhciBvbmUgPSBiaWdJbnQoMSk7XG4gIGlmIChiaWdJbnQoejIpLmx0KG9uZSkpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnBvd21fc2VjOiBleHBvbmVudCBtdXN0IGJlIHBvc2l0aXZlXCIpO1xuICB9XG4gIGlmICghYmlnSW50KHozKS5hbmQob25lKS5lcXVhbHMob25lKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucG93bV9zZWM6IG1vZHVsdXMgbXVzdCBiZSBvZGRcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfcG93bSh6MSwgejIsIHozKVxufVxuXG4vL2V4dGVybmFsIHJvb3Q6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfcm9vdFxuLy9SZXF1aXJlczogbWxfel9wb3csICBiaWdJbnQsIG1sX3pfbm9ybWFsaXplLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfcm9vdCh6LCBpKSB7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB6ID0gYmlnSW50KHopO1xuXG4gIGlmIChpICUgMiA9PT0gMCAmJiB6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5yb290OiBldmVuIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cblxuICBpZiAoei5lcXVhbHMoemVybykgfHwgei5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBtbF96X25vcm1hbGl6ZSh6KTtcbiAgfVxuXG4gIHZhciBzdGFydCA9IHplcm87XG4gIHZhciBlbmQgPSB6O1xuICB2YXIgYW5zID0gbnVsbDtcblxuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuXG4gIHdoaWxlIChzdGFydC5sZXEoZW5kKSlcbiAge1xuICAgIHZhciBtaWQgPSBzdGFydC5hZGQoZW5kKS5kaXZpZGUodHdvKTtcbiAgICB2YXIgcG8gPSBtaWQucG93KGkpO1xuICAgIGlmIChwby5lcXVhbHMoeikpIHtcbiAgICAgIHJldHVybiBtbF96X25vcm1hbGl6ZShtaWQpO1xuICAgIH0gZWxzZSBpZiAocG8ubHQoeikpIHtcbiAgICAgIHN0YXJ0ID0gbWlkLm5leHQoKTtcbiAgICAgIGFucyA9IG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gbWlkLnByZXYoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGFucyk7XG59XG5cbi8vZXh0ZXJuYWwgcm9vdHJlbTogdCAtPiBpbnQgLT4gdCAqIHRcbi8vUHJvdmlkZXM6IG1sX3pfcm9vdHJlbVxuLy9SZXF1aXJlczogbWxfel9wb3csICBiaWdJbnQsIG1sX3pfbm9ybWFsaXplLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfcm9vdHJlbSh6LCBpKSB7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB6ID0gYmlnSW50KHopO1xuXG4gIGlmIChpICUgMiA9PT0gMCAmJiB6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5yb290cmVtOiBldmVuIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cblxuICBpZiAoei5lcXVhbHMoemVybykgfHwgei5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUoeiksIHplcm9dO1xuICB9XG5cbiAgdmFyIHN0YXJ0ID0gemVybztcbiAgdmFyIGVuZCA9IHo7XG4gIHZhciBhbnMgPSBudWxsO1xuXG4gIHZhciB0d28gPSBiaWdJbnQoMik7XG5cbiAgd2hpbGUgKHN0YXJ0LmxlcShlbmQpKVxuICB7XG4gICAgdmFyIG1pZCA9IHN0YXJ0LmFkZChlbmQpLmRpdmlkZSh0d28pO1xuICAgIHZhciBwbyA9IG1pZC5wb3coaSk7XG4gICAgaWYgKHBvLmVxdWFscyh6KSkge1xuICAgICAgcmV0dXJuIFswLCBtbF96X25vcm1hbGl6ZShtaWQpLCB6ZXJvXTtcbiAgICB9IGVsc2UgaWYgKHBvLmx0KHopKSB7XG4gICAgICBzdGFydCA9IG1pZC5uZXh0KCk7XG4gICAgICBhbnMgPSBtaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IG1pZC5wcmV2KCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUoYW5zKSwgbWxfel9ub3JtYWxpemUoei5taW51cyhhbnMucG93KGkpKSldO1xufVxuXG4vL2V4dGVybmFsIGludmVydDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfaW52ZXJ0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfZ2NkZXh0X2ludGVybiwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfaW52ZXJ0KGEsIG4pIHtcbiAgLy8gQmVjYXVzZSBbYS5tb2RJbnYobildIHByb2R1Y2VzIGRpZmZlcmVudCByZXN1bHRzIGZvciBlZGdlIGNhc2VzLFxuICAvLyB3ZSB3cm90ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGdjZGV4dF9pbnRlcm4uXG4gIGEgPSBiaWdJbnQoYSk7XG4gIG4gPSBiaWdJbnQobik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZihuLmFicygpLmVxdWFscyhvbmUpKVxuICAgIHJldHVybiAwO1xuICBpZiAobi5lcXVhbHMoemVybykgJiYgYS5hYnMoKS5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBhO1xuICB9XG4gIGlmIChuLmVxdWFscyh6ZXJvKSB8fCBhLmVxdWFscyh6ZXJvKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICB2YXIgeCA9IG1sX3pfZ2NkZXh0X2ludGVybihhLCBuKTtcbiAgdmFyIHIgPSBiaWdJbnQoeFsyXSk7XG4gIHZhciB0bXAgPSBiaWdJbnQoYSkubXVsdGlwbHkocikubW9kKG4pO1xuICBpZih0bXAubHQoemVybykpIHRtcCA9IHRtcC5hZGQobi5hYnMoKSk7XG4gIGlmKHIubHQoemVybykpIHIgPSByLmFkZChuLmFicygpKTtcbiAgaWYodG1wLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9XG4gIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbn1cblxuLy9leHRlcm5hbCBwZXJmZWN0X3Bvd2VyOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfcGVyZmVjdF9wb3dlclxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X251bWJpdHMsIG1sX3pfcm9vdCwgbWxfel9wb3dcbmZ1bmN0aW9uIG1sX3pfcGVyZmVjdF9wb3dlcih6KSB7XG4gIC8vIFJldHVybiB0cnVlIGlmIG9wIGlzIGEgcGVyZmVjdCBwb3dlciwgaS5lLiwgaWYgdGhlcmUgZXhpc3QgaW50ZWdlcnMgYSBhbmRcbiAgLy8gYiwgd2l0aCBiID4gMSwgc3VjaCB0aGF0IG9wID0gYV5iLlxuICAvLyBPdGhlcndpc2UgZmFsc2UuXG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuXG4gIGlmICh6LmVxdWFscyh6ZXJvKSB8fCB6LmVxdWFscyhvbmUpIHx8IHouZXF1YWxzKG9uZS5uZWdhdGUoKSkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICB2YXIgbG9nMnogPSBtbF96X251bWJpdHMoei5hYnMoKSk7XG4gIGZvciAodmFyIGIgPSAyOyBiIDw9IGxvZzJ6OyBiKyspIHtcbiAgICBpZih6Lmx0KHplcm8pICYmIGIgJSAyID09IDApIGNvbnRpbnVlO1xuICAgIHZhciB6cCA9IHouYWJzKCk7XG4gICAgdmFyIHAgPSBiaWdJbnQobWxfel9yb290KHpwLCBiKSk7XG4gICAgaWYoei5sdCh6ZXJvKSkgcCA9IHAubmVnYXRlKCk7XG4gICAgdmFyIHIgPSBiaWdJbnQobWxfel9wb3cocCwgYikpO1xuICAgIGlmICh6LmVxdWFscyhyKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL2V4dGVybmFsIHBlcmZlY3Rfc3F1YXJlOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfcGVyZmVjdF9zcXVhcmVcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290XG5mdW5jdGlvbiBtbF96X3BlcmZlY3Rfc3F1YXJlKHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgaWYgKHoubHQoYmlnSW50KDApKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciByb290ID0gYmlnSW50KG1sX3pfcm9vdCh6LCAyKSk7XG4gIGlmIChyb290Lm11bHRpcGx5KHJvb3QpLmVxKHopKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfTtcbn1cblxuLy9leHRlcm5hbCBwcm9iYWJfcHJpbWU6IHQgLT4gaW50IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9wcm9iYWJfcHJpbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9wcm9iYWJfcHJpbWUoeiwgaSkge1xuICBpZiAoYmlnSW50KHopLmlzUHJvYmFibGVQcmltZShpKSkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vZXh0ZXJuYWwgbmV4dHByaW1lOiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfbmV4dHByaW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X25leHRwcmltZSh6MSkge1xuICAvLyBJbnRlcmVzdGluZ2x5LCB0aGUgemFyaXRoIG5leHRfcHJpbWUgb25seSByZXR1cm5zIFxuICAvLyBwcm9iYWJhbGlzdGljIHByaW1lcy4gIFdlIGRvIHRoZSBzYW1lLCB3aXRoIHRoZSBcbiAgLy8gc2FtZSBwcm9iYWJsaXN0aWMgcGFyYW1ldGVyIG9mIDI1LlxuICAvLyBodHRwczovL2Zvc3NpZXMub3JnL2RveC9nbXAtNi4xLjIvbXB6XzJuZXh0cHJpbWVfOGNfc291cmNlLmh0bWxcbiAgXG4gIHoxID0gYmlnSW50KHoxKVxuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuXG4gIGlmICh6MS5sdChvbmUpIHx8IHoxLmVxdWFscyhvbmUpKSB7XG4gICAgcmV0dXJuIDI7XG4gIH1cblxuICBpZiAoejEuYW5kKG9uZSkuZXF1YWxzKG9uZSkpIHtcbiAgICB6MSA9IHoxLmFkZCh0d28pO1xuICB9IGVsc2Uge1xuICAgIHoxID0gejEuYWRkKG9uZSk7XG4gIH1cblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmICh6MS5pc1Byb2JhYmxlUHJpbWUoMjUpKSB7XG4gICAgICByZXR1cm4gbWxfel9ub3JtYWxpemUoejEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB6MSA9IHoxLmFkZCh0d28pXG4gICAgfVxuICB9XG59XG5cbi8vZXh0ZXJuYWwgZXh0cmFjdDogdCAtPiBpbnQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZXh0cmFjdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9leHRyYWN0KHoxLCBwb3MsIGxlbikge1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZSh6MS5zaGlmdFJpZ2h0KHBvcykuYW5kKGJpZ0ludCgyKS5wb3cobGVuKS5zdWJ0cmFjdCgxKSkpO1xufVxuXG4vL2V4dGVybmFsIGdjZGV4dF9pbnRlcm46IHQgLT4gdCAtPiAodCAqIHQgKiBib29sKVxuLy9Qcm92aWRlczogbWxfel9nY2RleHRfaW50ZXJuXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGUsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2djZGV4dF9pbnRlcm4oejEsIHoyKSB7XG4gIHoxID0gYmlnSW50KHoxKTtcbiAgejIgPSBiaWdJbnQoejIpO1xuICB2YXIgZ2NkID0gYmlnSW50LmdjZCh6MSx6Mik7XG4gIHZhciBhID0gejE7XG4gIHZhciBiID0gejI7XG4gIHZhciB4ID0gYmlnSW50KDApO1xuICB2YXIgbGFzdHggPSBiaWdJbnQoMSk7XG4gIHZhciB5ID0gYmlnSW50KDEpO1xuICB2YXIgbGFzdHkgPSBiaWdJbnQoMSk7XG4gIHZhciBxLCB0LCByO1xuICBpZih6MS5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgfVxuICB3aGlsZSghYi5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgIHEgPSBhLmRpdmlkZShiKTtcbiAgICByID0gYS5zdWJ0cmFjdChxLm11bHRpcGx5KGIpKTtcbiAgICB0ID0geDtcbiAgICB4ID0gbGFzdHguc3VidHJhY3QocS5tdWx0aXBseSh4KSk7XG4gICAgbGFzdHggPSB0O1xuICAgIHQgPSB5O1xuICAgIHkgPSBsYXN0eS5zdWJ0cmFjdChxLm11bHRpcGx5KHkpKTtcbiAgICBsYXN0eSA9IHQ7XG4gICAgYSA9IGI7XG4gICAgYiA9IHI7XG4gIH1cbiAgaWYoYS5sdChiaWdJbnQoMCkpKVxuICAgIHJldHVybiBbMCxtbF96X25vcm1hbGl6ZShhLm5lZ2F0ZSgpKSxtbF96X25vcm1hbGl6ZShsYXN0eC5uZWdhdGUoKSksMV1cbiAgZWxzZVxuICAgIHJldHVybiBbMCxtbF96X25vcm1hbGl6ZShhKSxtbF96X25vcm1hbGl6ZShsYXN0eCksMV1cbn1cblxuLy9leHRlcm5hbCBzcXJ0OiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc3FydFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3Jvb3QsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9zcXJ0KHoxKSB7XG4gIHZhciB6ID0gYmlnSW50KHoxKTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5zcXJ0OiBzcXVhcmUgcm9vdCBvZiBhIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgfVxuICByZXR1cm4gbWxfel9yb290KHosIDIpO1xufVxuXG4vL2V4dGVybmFsIHNxcnRfcmVtOiB0IC0+ICh0ICogdClcbi8vUHJvdmlkZXM6IG1sX3pfc3FydF9yZW1cbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3NxcnRfcmVtKHopIHtcbiAgeiA9IGJpZ0ludCh6KTtcbiAgdmFyIHplcm8gPSBiaWdJbnQoMCk7XG4gIGlmICh6Lmx0KHplcm8pKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5zcXJ0X3JlbTogc3F1YXJlIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cbiAgdmFyIHJvb3QgPSBiaWdJbnQobWxfel9yb290KHosIDIpKTtcbiAgdmFyIG11bCA9IHJvb3QubXVsdGlwbHkocm9vdCk7XG4gIHZhciBkaWZmID0gei5zdWJ0cmFjdChtdWwpO1xuICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKHJvb3QpLCBtbF96X25vcm1hbGl6ZShkaWZmKV1cbn1cblxuLy9leHRlcm5hbCB0cmFpbGluZ196ZXJvczogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfdHJhaWxpbmdfemVyb3MgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel90cmFpbGluZ196ZXJvcyh6KSB7XG4gIHogPSBiaWdJbnQoeikuYWJzKCk7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoei5lcXVhbHMoemVybykpIHtcbiAgICAvLyBtYXhfaW50IGluIDMyYml0XG4gICAgcmV0dXJuIDB4N2ZmZmZmZmY7XG4gIH1cbiAgdmFyIGkgPSAwXG4gIHogPSB6Lnhvcih6LnByZXYoKSkuc2hpZnRSaWdodCgxKTtcbiAgZm9yIChpID0gMDsgIXouZXF1YWxzKGJpZ0ludC56ZXJvKTsgaSsrKSB7XG4gICAgeiA9IHouc2hpZnRSaWdodCgxKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cblxuLy9leHRlcm5hbCBwb3Bjb3VudDogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfcG9wY291bnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel9wb3Bjb3VudCh6KSB7XG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyAhei5lcXVhbHMoemVybyk7IGkrKykge1xuICAgIHogPSB6LmFuZCh6LnByZXYoKSk7XG4gIH1cbiAgaWYoaSAhPSAoaXwwKSkgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIHJldHVybiBpfDA7XG59XG5cbi8vZXh0ZXJuYWwgaGFtZGlzdDogdCAtPiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9oYW1kaXN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfcG9wY291bnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gbWxfel9oYW1kaXN0KHoxLCB6Mikge1xuICBpZihiaWdJbnQoejEpLmlzTmVnYXRpdmUoKSAhPSBiaWdJbnQoejIpLmlzTmVnYXRpdmUgKCkpe1xuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICB9XG4gIGlmKCh6MSAhPSAoejEgfCAwKSB8fCB6MiAhPSAoejIgfCAwKSkgJiYgKGJpZ0ludCh6MSkuaXNOZWdhdGl2ZSgpIHx8IGJpZ0ludCh6MikuaXNOZWdhdGl2ZSAoKSkpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouaGFtZGlzdDogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3BvcGNvdW50KGJpZ0ludCh6MSkueG9yKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBzaXplOiB0IC0+IGludFxuLy9Qcm92aWRlczogbWxfel9zaXplIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfc2l6ZSh6MSkge1xuICAvLyBDbGFpbSB0byBiZSBhIDMyLWJpdCBhcmNoaXRlY3R1cmUuXG4gIHJldHVybiBiaWdJbnQoejEpLnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKS52YWx1ZS5sZW5ndGg7XG59XG5cbi8vZXh0ZXJuYWwgZGl2ZXhhY3Q6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2RpdmV4YWN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2XG5mdW5jdGlvbiBtbF96X2RpdmV4YWN0KHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9kaXYoejEsIHoyKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3phcml0aF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIGNhbWxfemFyaXRoX21hcnNoYWwod3JpdGVyLCB2LCBzeikge1xuICB2ID0gYmlnSW50KHYpO1xuICB2YXIgYml0cyA9IHYudG9BcnJheShNYXRoLnBvdygyLCAzMikpO1xuICB3cml0ZXIud3JpdGUoOCwgYml0cy5pc05lZ2F0aXZlID8xIDogMCk7XG4gIHZhciBibG9jayA9IGJpdHMudmFsdWUubGVuZ3RoO1xuICB2YXIgbGVuID0gYmxvY2sgKiA0O1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IGJsb2NrIC0gMTsgaSA+PSAwOyBpIC0tKXtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDAgKSAmIDB4ZmYpO1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gOCApICYgMHhmZik7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiAxNikgJiAweGZmKTtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDI0KSAmIDB4ZmYpO1xuICB9XG4gIHN6WzBdID0gNCAqICgxICsgKCgobGVuICsgMykgLyA0KSB8IDApKTtcbiAgc3pbMV0gPSA4ICogKDEgKyAoKChsZW4gKyA3KSAvIDgpIHwgMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3phcml0aF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9mYWlsd2l0aCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIGNhbWxfemFyaXRoX3VubWFyc2hhbChyZWFkZXIsIHN6KSB7XG4gIHZhciBuZWdhdGU7XG4gIHN3aXRjaChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTogbmVnYXRlID0gdHJ1ZTsgYnJlYWs7XG4gIGNhc2UgMDogbmVnYXRlID0gZmFsc2U7IGJyZWFrO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHogKG1hbGZvcm1lZCBpbnB1dClcIik7XG4gIH1cbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gIHZhciB4ID0gYmlnSW50KDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuIC8gNDsgaSsrKXtcbiAgICB2YXIgeSA9IGJpZ0ludChyZWFkZXIucmVhZDh1KCkpO1xuICAgIHkgPSB5LmFkZCgocmVhZGVyLnJlYWQ4dSgpKSA8PCA4KTtcbiAgICB5ID0geS5hZGQoKHJlYWRlci5yZWFkOHUoKSkgPDwgMTYpO1xuICAgIHkgPSB5LmFkZCgoKHJlYWRlci5yZWFkOHUoKSkgPDwgMjQpID4+PiAwKTtcbiAgICB4ID0geS5zaGlmdExlZnQoaSAqIDMyKS5hZGQoeCk7XG4gIH1cbiAgaWYobmVnYXRlKSB4ID0geC5uZWdhdGUoKTtcbiAgc3pbMF0gPSBsZW4gKyA0O1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoeClcbn1cblxuLy9Qcm92aWRlczogbWxfel9kaXZpc2libGVcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9kaXZpc2libGUoYSwgYil7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICBhID0gYmlnSW50KGEpO1xuICBiID0gYmlnSW50KGIpO1xuICBpZihhLmVxdWFscyh6ZXJvKSAmJiBiLmVxdWFscyh6ZXJvKSkgcmV0dXJuIDE7XG4gIHJldHVybiBhLmlzRGl2aXNpYmxlQnkoYik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2NvbmdydWVudFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2NvbmdydWVudChhLGIsYyl7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICBhID0gYmlnSW50KGEpO1xuICBiID0gYmlnSW50KGIpO1xuICBjID0gYmlnSW50KGMpO1xuICBpZihjLmVxdWFscyh6ZXJvKSAmJiBhLmVxdWFscyhiKSkgcmV0dXJuIDE7XG4gIHJldHVybiBhLm1pbnVzKGIpLmlzRGl2aXNpYmxlQnkoYykgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogbWxfel9yZW1vdmVcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIG1sX3pfcmVtb3ZlKGEsYil7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBhID0gYmlnSW50KGEpO1xuICBiID0gYmlnSW50KGIpO1xuICBpZihiLmVxdWFscyh6ZXJvKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICBpZihhLmVxdWFscyh6ZXJvKSB8fCBiLmFicygpLmVxdWFscyhvbmUpKSByZXR1cm4gWzAsIGEsIDBdO1xuICB2YXIgaSA9IDA7XG4gIHdoaWxlKGEuaXNEaXZpc2libGVCeShiKSl7XG4gICAgYSA9IGEuZGl2aWRlKGIpO1xuICAgIGkrKztcbiAgfVxuICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKGEpLCBpXTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9mYWNcbi8vUmVxdWlyZXM6IG1sX3pfZmFjTSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X2ZhYyhpKXtcbiAgaWYoaTw9MCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5mYWN0OiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIHJldHVybiBtbF96X2ZhY00oaSwxKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9mYWMyXG4vL1JlcXVpcmVzOiBtbF96X2ZhY00sIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9mYWMyKGkpe1xuICBpZihpPD0wKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmZhY3QyOiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIHJldHVybiBtbF96X2ZhY00oaSwyKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9mYWNNXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZmFjTShpLCBtKXtcbiAgaWYoaTw9MHx8bTw9MCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5mYWN0TTogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICBtID0gYmlnSW50KG0pO1xuICB2YXIgY3VycmVudCA9IGJpZ0ludChpKTtcbiAgdmFyIHJlcyA9IGJpZ0ludCgxKTtcbiAgd2hpbGUoY3VycmVudC5pc1Bvc2l0aXZlKCkpe1xuICAgIHJlcyA9IHJlcy5tdWx0aXBseShjdXJyZW50KTtcbiAgICBjdXJyZW50ID0gY3VycmVudC5taW51cyhtKTtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUocmVzKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9maWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgbWxfel9ub3JtYWxpemUsIGJpZ0ludFxuZnVuY3Rpb24gbWxfel9maWIoaSl7XG4gIGlmKGkgPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmZpYjogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICBpZihpID09IDAgfHwgaSA9PSAxKSByZXR1cm4gaTtcbiAgdmFyIGEgPSBiaWdJbnQoMCksIGIgPSBiaWdJbnQoMSk7XG4gIGZvcih2YXIgayA9IDE7IGsgPCBpOyBrKyspe1xuICAgIHZhciBiMiA9IGI7XG4gICAgYiA9IGEuYWRkKGIpO1xuICAgIGEgPSBiMjtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYik7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfbHVjbnVtXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplLCBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfbHVjbnVtKGkpe1xuICBpZihpIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5sdWNudW06IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgaWYoaSA9PSAwKSByZXR1cm4gMjtcbiAgaWYoaSA9PSAxKSByZXR1cm4gMTtcbiAgdmFyIGEgPSBiaWdJbnQoMiksIGIgPSBiaWdJbnQoMSk7XG4gIGZvcih2YXIgayA9IDE7IGsgPCBpOyBrKyspe1xuICAgIHZhciBiMiA9IGI7XG4gICAgYiA9IGEuYWRkKGIpO1xuICAgIGEgPSBiMjtcbiAgfVxuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYik7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfamFjb2JpXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9qYWNvYmkobiwgayl7XG4gIG4gPSBiaWdJbnQobik7XG4gIGsgPSBiaWdJbnQoayk7XG4gIC8vYXNzZXJ0KGsgPiAwIGFuZCBrICUgMiA9PSAxKVxuICBpZihrLmxlcShiaWdJbnQoMCkpIHx8IGsubW9kKGJpZ0ludCgyKSkubmVxKGJpZ0ludCgxKSkpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5qYWNvYmk6IHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBldmVuXCIpO1xuICBuID0gbi5tb2Qoayk7XG4gIGlmKG4ubHQoYmlnSW50KDApKSkgbiA9IG4uYWRkKGspO1xuICB2YXIgdCA9IDE7XG4gIHdoaWxlICghIG4uZXF1YWxzKGJpZ0ludCgwKSkpe1xuICAgIHdoaWxlIChuLmlzRGl2aXNpYmxlQnkoYmlnSW50KDIpKSkge1xuICAgICAgbiA9IG4uZGl2aWRlKGJpZ0ludCgyKSlcbiAgICAgIHZhciByID0gay5tb2QoYmlnSW50KDgpKVxuICAgICAgaWYgKHIuZXF1YWxzKGJpZ0ludCgzKSkgfHwgci5lcXVhbHMoYmlnSW50KDUpKSl7XG4gICAgICAgIHQgPSAtdFxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbjEgPSBuLCBrMSA9IGs7XG4gICAgbiA9IGsxO1xuICAgIGsgPSBuMTtcbiAgICBpZiAobi5tb2QoYmlnSW50KDQpKS5lcXVhbHMoYmlnSW50KDMpKSAmJiAgay5tb2QoYmlnSW50KDQpKS5lcXVhbHMoYmlnSW50KDMpKSkge1xuICAgICAgdCA9IC10XG4gICAgfVxuICAgIG4gPSBuLm1vZChrKVxuICB9XG4gIGlmKGsuZXF1YWxzKGJpZ0ludCgxKSkpXG4gICAgcmV0dXJuIHRcbiAgZWxzZVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfbGVnZW5kcmVcbi8vUmVxdWlyZXM6IG1sX3pfamFjb2JpXG5mdW5jdGlvbiBtbF96X2xlZ2VuZHJlKGEsYil7XG4gIHJldHVybiBtbF96X2phY29iaShhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2tyb25lY2tlclxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gbWxfel9rcm9uZWNrZXIobixrKXtcbiAgY2FtbF9mYWlsd2l0aChcIm1sX3pfa3JvbmVja2VyIGlzIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9wcmltb3JpYWxcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfcHJpbW9yaWFsKGEpe1xuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuICB2YXIgejEgPSBvbmU7XG4gIHZhciByZXMgPSBvbmU7XG4gIGEgPSBiaWdJbnQoYSk7XG4gIHdoaWxlICh6MS5sZXEoYSkpIHtcbiAgICBpZiAoejEuaXNQcm9iYWJsZVByaW1lKDI1KSkge1xuICAgICAgcmVzID0gcmVzLm11bHRpcGx5KHoxKTtcbiAgICB9XG4gICAgaWYoejEuZXF1YWxzKG9uZSkgfHwgejEuZXF1YWxzKHR3bykpIHoxID0gejEuYWRkKG9uZSk7XG4gICAgZWxzZSB6MSA9IHoxLmFkZCh0d28pXG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHJlcyk7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfYmluXG4vL1JlcXVpcmVzOiBtbF96X25vcm1hbGl6ZSwgYmlnSW50LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfYmluKG4sIGspe1xuICB2YXIgbiA9IGJpZ0ludChuKTtcbiAgdmFyIGsgPSBiaWdJbnQoayk7XG4gIHZhciBjb2VmZiA9IGJpZ0ludCgxKTtcbiAgZm9yICh2YXIgeCA9IG4ubWludXMoaykuYWRkKGJpZ0ludCgxKSk7IHgubGVxKG4pOyB4ID0geC5hZGQoYmlnSW50KDEpKSkgY29lZmYgPSBjb2VmZi5tdWx0aXBseSh4KTtcbiAgZm9yICh4ID0gYmlnSW50KDEpOyB4LmxlcShrKTsgeCA9IHguYWRkKGJpZ0ludCgxKSkpIGNvZWZmID0gY29lZmYuZGl2aWRlKHgpO1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoY29lZmYpO1xuXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gZy5GbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gZy5GbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gZy5JbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gZy5VaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IGcuSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBnLlVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBnLkludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBnLkZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBnLkZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBnLlVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGcgPSBnbG9iYWxUaGlzO1xuICB2YXIga2luZDtcbiAgaWYgKHRhIGluc3RhbmNlb2YgZy5GbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5VaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGYoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczoganNfcHJpbnRfc3Rkb3V0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24ganNfcHJpbnRfc3Rkb3V0KHMpIHtcbiAgdmFyIHMgPSBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYgKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Muc3Rkb3V0ICYmIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUpIHtcbiAgICBnLnByb2Nlc3Muc3Rkb3V0LndyaXRlKHMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgaWYocy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMTApXG4gICAgICBzID0gcy5zdWJzdHIoMCxzLmxlbmd0aCAtIDEgKTtcbiAgICB2YXIgdiA9IGcuY29uc29sZTtcbiAgICB2ICAmJiB2LmxvZyAmJiB2LmxvZyhzKTtcbiAgfVxufVxuLy9Qcm92aWRlczoganNfcHJpbnRfc3RkZXJyIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24ganNfcHJpbnRfc3RkZXJyKHMpIHtcbiAgdmFyIHMgPSBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYgKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Muc3Rkb3V0ICYmIGcucHJvY2Vzcy5zdGRvdXQud3JpdGUpIHtcbiAgICBnLnByb2Nlc3Muc3RkZXJyLndyaXRlKHMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgaWYocy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMTApXG4gICAgICBzID0gcy5zdWJzdHIoMCxzLmxlbmd0aCAtIDEgKTtcbiAgICB2YXIgdiA9IGcuY29uc29sZTtcbiAgICB2ICYmIHYuZXJyb3IgJiYgdi5lcnJvcihzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICYmIGUubWVzc2FnZVxuICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICByZXR1cm4gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3cpO1xuICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICYmIGUubWVzc2FnZVxuICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICByZXR1cm4gY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3cpO1xuICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgIHJldHVybiBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gIHJldHVybiBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBqc19wcmludF9zdGRlcnIoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vZ2xvYmFsVGhpcy5jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIFt1bmRlZmluZWRdKTtcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihuID09IGFyaXR5ICYmIGYubGVuZ3RoID09IGFyaXR5KSByZXR1cm4gZi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZixhcmdzKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGpzX3ByaW50X3N0ZGVyclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGpzX3ByaW50X3N0ZGVycihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGpzX3ByaW50X3N0ZGVycihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgLy8gdmFyIF90YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgLy8gdmFyIF90YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgc3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMCkgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZSBjb25zdFxuLy9EdW1teSBmdW5jdGlvbiFcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZSgpIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuXHRmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSArdikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICBnbG9iYWxUaGlzLm5hdmlnYXRvcj9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGdsb2JhbFRoaXMuY29uc29sZT9nbG9iYWxUaGlzLmNvbnNvbGU6e307XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgaWYodHlwZW9mIGcuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJLCBidXQgd2l0aG91dCB0aGUgd2VhayBzZW1hbnRpY3NcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19nZXQoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgcmV0dXJuICh4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdPT09dW5kZWZpbmVkKT8wOnhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19nZXRfY29weVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldCxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfd2Vha19nZXRfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX3dlYWtfZ2V0KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NoZWNrIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY2hlY2soeCwgaSkge1xuICBpZih4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0hPT11bmRlZmluZWQgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldICE9PTApXG4gICAgcmV0dXJuIDE7XG4gIGVsc2VcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZVxudmFyIGNhbWxfZXBoZV9jcmVhdGUgPSBjYW1sX3dlYWtfY3JlYXRlXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2JsaXRcbnZhciBjYW1sX2VwaGVfYmxpdF9rZXkgPSBjYW1sX3dlYWtfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldFxudmFyIGNhbWxfZXBoZV9nZXRfa2V5ID0gY2FtbF93ZWFrX2dldFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbnZhciBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5ID0gY2FtbF93ZWFrX2dldF9jb3B5XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jaGVja1xudmFyIGNhbWxfZXBoZV9jaGVja19rZXkgPSBjYW1sX3dlYWtfY2hlY2tcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19zZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgcmV0dXJuIGNhbWxfd2Vha19zZXQoeCwgaSwgWzAsIHZdKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgcmV0dXJuIGNhbWxfd2Vha19zZXQoeCwgaSwgMClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgZHN0W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCwgZGF0YSl7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9hcnJheSxjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLGxlbil7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgY2hhbl9sZW4gPSBjaGFuLmZpbGUubGVuZ3RoKCk7XG4gIGlmKGxlbjwwKSBsZW4gPSBjaGFuX2xlbiAtIGNoYW4ub2Zmc2V0O1xuICBpZihjaGFuLm9mZnNldCArIGxlbiA+IGNoYW5fbGVuKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCxidWYsMCxsZW4pO1xuICByZXR1cm4gY2FtbF9tZDVfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ1ZiksMCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbnZhciBjYW1sX21kNV9ieXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIGZ1bmN0aW9uIG1kNShidWZmZXIsIGxlbmd0aCkge1xuICAgIHZhciBpID0gbGVuZ3RoO1xuICAgIGJ1ZmZlcltpID4+IDJdIHw9IDB4ODAgPDwgKDggKiAoaSAmIDMpKTtcbiAgICBmb3IgKGkgPSAoaSAmIH4weDMpICsgODsoaSAmIDB4M0YpIDwgNjAgO2kgKz0gNClcbiAgICAgIGJ1ZmZlclsoaSA+PiAyKSAtIDFdID0gMDtcbiAgICBidWZmZXJbKGkgPj4gMikgLTFdID0gbGVuZ3RoIDw8IDM7XG4gICAgYnVmZmVyW2kgPj4gMl0gPSAobGVuZ3RoID4+IDI5KSAmIDB4MUZGRkZGRkY7XG5cbiAgICB2YXIgdyA9IFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XTtcblxuICAgIGZvcihpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgKz0gMTYpIHtcbiAgICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbaSsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyW2krIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbaSsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyW2krMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbaSsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbaSsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbaSsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyW2krMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyW2krIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyW2krMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IG5ldyBBcnJheSgxNik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgICAgdFtpICogNCArIGpdID0gKHdbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICAgIHJldHVybiB0O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChzLCBvZnMsIGxlbikge1xuICAgIC8vIEZJWDogbWF5YmUgd2Ugc2hvdWxkIHBlcmZvcm0gdGhlIGNvbXB1dGF0aW9uIGJ5IGNodW5rIG9mIDY0IGJ5dGVzXG4gICAgLy8gYXMgaW4gaHR0cDovL3d3dy5teWVyc2RhaWx5Lm9yZy9qb3NlcGgvamF2YXNjcmlwdC9tZDUuanNcbiAgICB2YXIgYnVmID0gW107XG4gICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQocyk7XG4gICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpe1xuICAgICAgdmFyIGIgPSBjb250ZW50O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrPTQpIHtcbiAgICAgICAgdmFyIGogPSBpICsgb2ZzO1xuICAgICAgICBidWZbaT4+Ml0gPVxuICAgICAgICAgIGIuY2hhckNvZGVBdChqKSB8IChiLmNoYXJDb2RlQXQoaisxKSA8PCA4KSB8XG4gICAgICAgICAgKGIuY2hhckNvZGVBdChqKzIpIDw8IDE2KSB8IChiLmNoYXJDb2RlQXQoaiszKSA8PCAyNCk7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBidWZbaT4+Ml0gfD0gYi5jaGFyQ29kZUF0KGkgKyBvZnMpIDw8ICg4ICogKGkgJiAzKSk7XG4gICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgIHZhciBhID0gY29udGVudDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKz00KSB7XG4gICAgICAgIHZhciBqID0gaSArIG9mcztcbiAgICAgICAgYnVmW2k+PjJdID0gYVtqXSB8IChhW2orMV0gPDwgOCkgfCAoYVtqKzJdIDw8IDE2KSB8IChhW2orM10gPDwgMjQpO1xuICAgICAgfVxuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYnVmW2k+PjJdIHw9IGFbaSArIG9mc10gPDwgKDggKiAoaSAmIDMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KG1kNShidWYsIGxlbikpO1xuICB9XG59ICgpO1xuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG4iLCIvL1RoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQgaW4gQ3N0cnVjdFxuLy9UaGVyZSBhcmUganVzdCBwcm92aWRlZCBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnNcblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2JpZ3N0cmluZ190b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vV2Vha2RlZlxudmFyIGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fc3RyaW5nID0gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1dlYWtkZWZcbnZhciBjYW1sX2JsaXRfc3RyaW5nX3RvX2JpZ3N0cmluZyA9IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG5cbigqIFVURiBjb2RlY3MgdG9vbHMgKilcblxudHlwZSB1dGZfZGVjb2RlID0gaW50XG4oKiBUaGlzIGlzIGFuIGludCBbMHhEVVVVVVVVXSBkZWNvbXBvc2VkIGFzIGZvbGxvd3M6XG4gICAtIFtEXSBpcyBmb3VyIGJpdHMgZm9yIGRlY29kZSBpbmZvcm1hdGlvbiwgdGhlIGhpZ2hlc3QgYml0IGlzIHNldCBpZiB0aGVcbiAgICAgZGVjb2RlIGlzIHZhbGlkLiBUaGUgdGhyZWUgbG93ZXIgYml0cyBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgIGZyb20gdGhlIHNvdXJjZSB0aGF0IHdlcmUgY29uc3VtZWQgYnkgdGhlIGRlY29kZS5cbiAgIC0gW1VVVVVVVV0gaXMgdGhlIGRlY29kZWQgVW5pY29kZSBjaGFyYWN0ZXIgb3IgdGhlIFVuaWNvZGUgcmVwbGFjZW1lbnRcbiAgICAgY2hhcmFjdGVyIFUrRkZGRCBpZiBmb3IgaW52YWxpZCBkZWNvZGVzLiAqKVxuXG5sZXQgdmFsaWRfYml0ID0gMjdcbmxldCBkZWNvZGVfYml0cyA9IDI0XG5cbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2lzX3ZhbGlkIGQgPSAoZCBsc3IgdmFsaWRfYml0KSA9IDFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2xlbmd0aCBkID0gKGQgbHNyIGRlY29kZV9iaXRzKSBsYW5kIDBiMTExXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV91Y2hhciBkID0gdW5zYWZlX29mX2ludCAoZCBsYW5kIDB4RkZGRkZGKVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGUgbiB1ID0gKCg4IGxvciBuKSBsc2wgZGVjb2RlX2JpdHMpIGxvciAodG9faW50IHUpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pbnZhbGlkIG4gPSAobiBsc2wgZGVjb2RlX2JpdHMpIGxvciByZXBcblxubGV0IHV0Zl84X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+IDFcbnwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDNcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgdXRmXzE2X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5cblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pbmVcbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdC4gV2hlbiB0aGUgZmxhZyBpcyBkaXNhYmxlZCwgaXQgd2lsbCByZWplY3QgYW55XG4gICAgICBmb3JtYXQgdGhhdCBpcyBub3QgYWNjZXB0ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uXG5cbiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIHdvdWxkIGJlIFwiJSsgZFwiOiBzcGVjaWZ5aW5nIGJvdGggJysnIChpZiB0aGVcbiAgICAgIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGggYSAnKycgdG8gZ2V0IHRoZSBzYW1lIHdpZHRoIGFzXG4gICAgICBuZWdhdGl2ZSBudW1iZXJzKSBhbmQgJyAnIChpZiB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aFxuICAgICAgYSBzcGFjZSkgZG9lcyBub3QgbWFrZSBzZW5zZSwgYnV0IHRoZSBsZWdhY3kgKDwgNC4wMilcbiAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBoYXBweSB0byBqdXN0IGlnbm9yZSB0aGUgc3BhY2UuXG4gICopXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kIG1zZyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgbXNnXG4gIGluXG5cbiAgKCogVXNlZCB3aGVuIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCAob3IgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdCkgd2FzIGVuY291bnRlcmVkXG4gICAgICB1bmV4cGVjdGVkbHkuICopXG4gIGxldCB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBlbmRfaW5kXG4gICAgICBcInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdFwiXG4gIGluXG5cbiAgKCogVXNlZCBmb3IgJTBjOiBubyBvdGhlciB3aWR0aHMgYXJlIGltcGxlbWVudGVkICopXG4gIGxldCBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmRcbiAgICAgIFwibm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnNcIlxuICBpblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gb3B0aW9uIGRlcGVuZGVuY3lcbiAgICAgcHJvYmxlbS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X3dpdGhvdXQgc3RyX2luZCBjIHMgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBjIHNcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gdW5leHBlY3RlZFxuICAgICBjaGFyYWN0ZXIuICopXG4gIGxldCBleHBlY3RlZF9jaGFyYWN0ZXIgc3RyX2luZCBleHBlY3RlZCByZWFkID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDXCJcbiAgICAgIHN0ciBzdHJfaW5kIGV4cGVjdGVkIHJlYWRcbiAgaW5cblxuICAoKiBQYXJzZSB0aGUgc3RyaW5nIGZyb20gYmVnX2luZCAoaW5jbHVkZWQpIHRvIGVuZF9pbmQgKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBwYXJzZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBiZWdfaW5kIGVuZF9pbmQgLT4gcGFyc2VfbGl0ZXJhbCBiZWdfaW5kIGJlZ19pbmQgZW5kX2luZFxuXG4gICgqIFJlYWQgbGl0ZXJhbCBjaGFyYWN0ZXJzIHVwIHRvICclJyBvciAnQCcgc3BlY2lhbCBjaGFyYWN0ZXJzLiAqKVxuICBhbmQgcGFyc2VfbGl0ZXJhbCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgRW5kX29mX2Zvcm1hdCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfZm9ybWF0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9hZnRlcl9hdCAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9saXRlcmFsIGxpdF9zdGFydCAoc3RyX2luZCArIDEpIGVuZF9pbmRcblxuICAoKiBQYXJzZSBhIGZvcm1hdCBhZnRlciAnJScgKilcbiAgYW5kIHBhcnNlX2Zvcm1hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIGVuZF9pbmQgLT4gcGFyc2VfaWduIHBjdF9pbmQgKHBjdF9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgYW5kIHBhcnNlX2lnbiA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXycgLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCAoc3RyX2luZCsxKSBlbmRfaW5kIHRydWVcbiAgICAgIHwgXyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBmYWxzZVxuXG4gIGFuZCBwYXJzZV9mbGFncyA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiAoXywgXywgZSwgZikgZm10X2ViYlxuICA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBpZ24gLT5cbiAgICBsZXQgemVybyA9IHJlZiBmYWxzZSBhbmQgbWludXMgPSByZWYgZmFsc2VcbiAgICBhbmQgcGx1cyA9IHJlZiBmYWxzZSBhbmQgc3BhY2UgPSByZWYgZmFsc2VcbiAgICBhbmQgaGFzaCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzZXRfZmxhZyBzdHJfaW5kIGZsYWcgPVxuICAgICAgKCogaW4gbGVnYWN5IG1vZGUsIGR1cGxpY2F0ZSBmbGFncyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgIGlmICFmbGFnICYmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUNcIlxuICAgICAgICAgIHN0ciBzdHJfaW5kIHN0ci5bc3RyX2luZF07XG4gICAgICBmbGFnIDo9IHRydWU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHJlYWRfZmxhZ3Mgc3RyX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICcwJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHplcm87ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJy0nIC0+IHNldF9mbGFnIHN0cl9pbmQgbWludXM7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnKycgLT4gc2V0X2ZsYWcgc3RyX2luZCBwbHVzOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcjJyAtPiBzZXRfZmxhZyBzdHJfaW5kIGhhc2g7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnICcgLT4gc2V0X2ZsYWcgc3RyX2luZCBzcGFjZTsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZFxuICAgICAgICAgICF6ZXJvICFtaW51cyAhcGx1cyAhaGFzaCAhc3BhY2UgaWduXG4gICAgICBlbmRcbiAgICBpblxuICAgIHJlYWRfZmxhZ3Mgc3RyX2luZFxuXG4gICgqIFRyeSB0byByZWFkIGEgZGlnaXRhbCBvciBhICcqJyBwYWRkaW5nLiAqKVxuICBhbmQgcGFyc2VfcGFkZGluZyA6IHR5cGUgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHplcm8gbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhZHR5ID0gbWF0Y2ggemVybywgbWludXMgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gUmlnaHRcbiAgICAgIHwgZmFsc2UsIHRydWUgIC0+IExlZnRcbiAgICAgIHwgIHRydWUsIGZhbHNlIC0+IFplcm9zXG4gICAgICB8ICB0cnVlLCB0cnVlICAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMZWZ0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICctJyBcIjBcIiBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgbGV0IG5ld19pbmQsIHdpZHRoID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAoTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiAoQXJnX3BhZGRpbmcgcGFkdHkpXG4gICAgfCBfIC0+XG4gICAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgICB8IExlZnQgIC0+XG4gICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLScgXCJwYWRkaW5nXCI7XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIHwgWmVyb3MgLT5cbiAgICAgICAgICgqIGEgJzAnIHBhZGRpbmcgaW5kaWNhdGlvbiBub3QgZm9sbG93ZWQgYnkgYW55dGhpbmcgc2hvdWxkXG4gICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgUmlnaHQgcGFkZGluZyBvZiB3aWR0aCAwLiBUaGlzIGlzIHVzZWRcbiAgICAgICAgICAgYnkgc2Nhbm5pbmcgY29udmVyc2lvbnMgJTBzIGFuZCAlMGMgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgKExpdF9wYWRkaW5nIChSaWdodCwgMCkpXG4gICAgICB8IFJpZ2h0IC0+XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIGVuZFxuXG4gICgqIElzIHByZWNpc2lvbiBkZWZpbmVkPyAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcGFkZGluZyA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcuJyAtPlxuICAgICAgcGFyc2VfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkXG4gICAgfCBzeW1iIC0+XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIE5vX3ByZWNpc2lvbiBwYWQgc3ltYlxuXG4gICgqIFJlYWQgdGhlIGRpZ2l0YWwgb3IgJyonIHByZWNpc2lvbi4gKilcbiAgYW5kIHBhcnNlX3ByZWNpc2lvbiA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kID1cbiAgICAgIGxldCBuZXdfaW5kLCBwcmVjID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiBwcmVjKSBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmRcbiAgICB8ICgnKycgfCAnLScpIGFzIHN5bWIgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT5cbiAgICAgICgqIExlZ2FjeSBtb2RlIHdvdWxkIGFjY2VwdCBhbmQgaWdub3JlICcrJyBvciAnLScgYmVmb3JlIHRoZVxuICAgICAgICAgaW50ZWdlciBkZXNjcmliaW5nIHRoZSBkZXNpcmVkIHByZWNpc2lvbjsgbm90ZSB0aGF0IHRoaXNcbiAgICAgICAgIGNhbm5vdCBoYXBwZW4gZm9yIHBhZGRpbmcgd2lkdGgsIGFzICcrJyBhbmQgJy0nIGFscmVhZHkgaGF2ZVxuICAgICAgICAgYSBzZW1hbnRpY3MgdGhlcmUuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgdGhlIGlkZWEgKHN1cHBvcnRlZCBieSB0aGlzIHR3ZWFrKSB0aGF0IHdpZHRoIGFuZFxuICAgICAgICAgcHJlY2lzaW9uIGxpdGVyYWxzIGFyZSBcImludGVnZXIgbGl0ZXJhbHNcIiBpbiB0aGUgT0NhbWwgc2Vuc2UgaXNcbiAgICAgICAgIHN0aWxsIGJsYXRhbnRseSB3cm9uZywgYXMgMTIzXzQ1NiBvciAweEZGIGFyZSByZWplY3RlZC4gKilcbiAgICAgIHBhcnNlX2xpdGVyYWwgKG1pbnVzIHx8IHN5bWIgPSAnLScpIChzdHJfaW5kICsgMSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gcGFkIEFyZ19wcmVjaXNpb25cbiAgICB8IF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIG5vdGUgdGhhdCBsZWdhY3kgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBpZ25vcmUgJy4nIHdpdGhvdXRcbiAgICAgICAgICAgYSBudW1iZXIgKGFzIGl0IGRvZXMgZm9yIHBhZGRpbmcgaW5kaWNhdGlvbnMpLCBidXRcbiAgICAgICAgICAgaW50ZXJwcmV0cyBpdCBhcyAnLjAnICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIDApXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLicgXCJwcmVjaXNpb25cIlxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiB0IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfY29udiAodHlwZSB1KSAodHlwZSB2KSAocGFkcHJlYyA6ICh1LCB2KSBwYWRkaW5nKSA9XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIHByZWMgcGFkcHJlYyBzdHIuW3N0cl9pbmRdIGluXG4gICAgKCogaW4gbGVnYWN5IG1vZGUsIHNvbWUgZm9ybWF0cyAoJXMgYW5kICVTKSBhY2NlcHQgYSB3ZWlyZCBtaXggb2ZcbiAgICAgICBwYWRkaW5nIGFuZCBwcmVjaXNpb24sIHdoaWNoIGlzIG1lcmdlZCBhcyBhIHNpbmdsZSBwYWRkaW5nXG4gICAgICAgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBpbiAlLjEwcyB0aGUgcHJlY2lzaW9uIGlzIGltcGxpY2l0bHlcbiAgICAgICB1bmRlcnN0b29kIGFzIHBhZGRpbmcgJTEwcywgYnV0IHRoZSBsZWZ0LXBhZGRpbmcgY29tcG9uZW50IG1heVxuICAgICAgIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBsZWZ0IHBhZGRpbmcgb3IgYSBuZWdhdGl2ZSBwcmVjaXNpb246XG4gICAgICAgJS0uM3MgYW5kICUuLTNzIGFyZSBlcXVpdmFsZW50IHRvICUtM3MgKilcbiAgICBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAtPiAoXG4gICAgICBtYXRjaCBtaW51cywgcHJlYyB3aXRoXG4gICAgICAgIHwgXywgTm9fcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgTm9fcGFkZGluZ1xuICAgICAgICB8IGZhbHNlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKSlcbiAgICAgICAgfCB0cnVlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKExlZnQsIG4pKVxuICAgICAgICB8IGZhbHNlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIFJpZ2h0KVxuICAgICAgICB8IHRydWUsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgTGVmdClcbiAgICApXG4gICAgfCBwYWQgLT4gcGFyc2VfY29udiBwYWRcblxuICAoKiBDYXNlIGFuYWx5c2lzIG9uIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9jb252ZXJzaW9uIDogdHlwZSB4IHkgeiB0IHUgdiBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiAoeCwgeSkgcGFkZGluZyAtPlxuICAgICAgICAoeiwgdCkgcHJlY2lzaW9uIC0+ICh1LCB2KSBwYWRkaW5nIC0+IGNoYXIgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyBwYWRwcmVjIHN5bWIgLT5cbiAgICAoKiBGbGFncyB1c2VkIHRvIGNoZWNrIG9wdGlvbiB1c2FnZXMvY29tcGF0aWJpbGl0aWVzLiAqKVxuICAgIGxldCBwbHVzX3VzZWQgID0gcmVmIGZhbHNlIGFuZCBoYXNoX3VzZWQgPSByZWYgZmFsc2VcbiAgICBhbmQgc3BhY2VfdXNlZCA9IHJlZiBmYWxzZSBhbmQgaWduX3VzZWQgICA9IHJlZiBmYWxzZVxuICAgIGFuZCBwYWRfdXNlZCAgID0gcmVmIGZhbHNlIGFuZCBwcmVjX3VzZWQgID0gcmVmIGZhbHNlIGluXG5cbiAgICAoKiBBY2Nlc3MgdG8gb3B0aW9ucywgdXBkYXRlIGZsYWdzLiAqKVxuICAgIGxldCBnZXRfcGx1cyAgICAoKSA9IHBsdXNfdXNlZCAgOj0gdHJ1ZTsgcGx1c1xuICAgIGFuZCBnZXRfaGFzaCAgICgpID0gaGFzaF91c2VkIDo9IHRydWU7IGhhc2hcbiAgICBhbmQgZ2V0X3NwYWNlICAgKCkgPSBzcGFjZV91c2VkIDo9IHRydWU7IHNwYWNlXG4gICAgYW5kIGdldF9pZ24gICAgICgpID0gaWduX3VzZWQgICA6PSB0cnVlOyBpZ25cbiAgICBhbmQgZ2V0X3BhZCAgICAgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZFxuICAgIGFuZCBnZXRfcHJlYyAgICAoKSA9IHByZWNfdXNlZCAgOj0gdHJ1ZTsgcHJlY1xuICAgIGFuZCBnZXRfcGFkcHJlYyAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkcHJlYyBpblxuXG4gICAgbGV0IGdldF9pbnRfcGFkICgpIDogKHgseSkgcGFkZGluZyA9XG4gICAgICAoKiAlNS4zZCBpcyBhY2NlcHRlZCBhbmQgbWVhbmluZ2Z1bDogcGFkIHRvIGxlbmd0aCA1IHdpdGhcbiAgICAgICAgIHNwYWNlcywgYnV0IGZpcnN0IHBhZCB3aXRoIHplcm9zIHVwdG8gbGVuZ3RoIDMgKDAtcGFkZGluZ1xuICAgICAgICAgaXMgdGhlIGludGVycHJldGF0aW9uIG9mIFwicHJlY2lzaW9uXCIgZm9yIGludGVnZXIgZm9ybWF0cykuXG5cbiAgICAgICAgICUwNS4zZCBpcyByZWR1bmRhbnQ6IHBhZCB0byBsZW5ndGggNSAqd2l0aCB6ZXJvcyosIGJ1dFxuICAgICAgICAgZmlyc3QgcGFkIHdpdGggemVyb3MuLi4gVG8gYWRkIGluc3VsdCB0byB0aGUgaW5qdXJ5LCB0aGVcbiAgICAgICAgIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSAwLXBhZGRpbmcgaW5kaWNhdGlvbiBhbmRcbiAgICAgICAgIGRvZXMgdGhlIDUgcGFkZGluZyB3aXRoIHNwYWNlcyBpbnN0ZWFkLiBXZSByZXVzZSB0aGlzXG4gICAgICAgICBpbnRlcnByZXRhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHN0YXRpY2FsbHkgcmVqZWN0IHRoaXNcbiAgICAgICAgIGZvcm1hdCB3aGVuIHRoZSBsZWdhY3kgbW9kZSBpcyBkaXNhYmxlZCwgdG8gcHJvdGVjdCBzdHJpY3RcbiAgICAgICAgIHVzZXJzIGZyb20gdGhpcyBjb3JuZXIgY2FzZS4gKilcbiAgICAgICBtYXRjaCBnZXRfcGFkICgpLCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICAgICB8IHBhZCwgTm9fcHJlY2lzaW9uIC0+IHBhZFxuICAgICAgICAgfCBOb19wYWRkaW5nLCBfICAgICAtPiBOb19wYWRkaW5nXG4gICAgICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgbiksIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKVxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcywgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBMaXRfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWRcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkIGluXG5cbiAgICAoKiBDaGVjayB0aGF0IHBhZHR5IDw+IFplcm9zLiAqKVxuICAgIGxldCBjaGVja19ub18wIHN5bWIgKHR5cGUgYSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpIDogKGEsYikgcGFkZGluZyA9XG4gICAgICBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoKExlZnQgfCBSaWdodCksIF8pIC0+IHBhZFxuICAgICAgfCBBcmdfcGFkZGluZyAoTGVmdCB8IFJpZ2h0KSAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcyAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgaW5cblxuICAgICgqIEdldCBwYWRkaW5nIGFzIGEgcGFkX29wdGlvbiAoc2VlIFwiJV9cIiwgXCIle1wiLCBcIiUoXCIgYW5kIFwiJVtcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgb3B0X29mX3BhZCBjICh0eXBlIGEpICh0eXBlIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgPSBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IE5vbmVcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aCkgLT4gU29tZSB3aWR0aFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInMCdcIlxuICAgICAgfCBMaXRfcGFkZGluZyAoTGVmdCwgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIictJ1wiXG4gICAgICB8IEFyZ19wYWRkaW5nIF8gLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInKidcIlxuICAgIGluXG4gICAgbGV0IGdldF9wYWRfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWQgKCkpIGluXG4gICAgbGV0IGdldF9wYWRwcmVjX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkcHJlYyAoKSkgaW5cblxuICAgICgqIEdldCBwcmVjaXNpb24gYXMgYSBwcmVjX29wdGlvbiAoc2VlIFwiJV9mXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IGdldF9wcmVjX29wdCAoKSA9IG1hdGNoIGdldF9wcmVjICgpIHdpdGhcbiAgICAgIHwgTm9fcHJlY2lzaW9uICAgICAgIC0+IE5vbmVcbiAgICAgIHwgTGl0X3ByZWNpc2lvbiBuZGVjIC0+IFNvbWUgbmRlY1xuICAgICAgfCBBcmdfcHJlY2lzaW9uICAgICAgLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicqJ1wiXG4gICAgaW5cblxuICAgIGxldCBmbXRfcmVzdWx0ID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnLCcgLT5cbiAgICAgIHBhcnNlIHN0cl9pbmQgZW5kX2luZFxuICAgIHwgJ2MnIC0+XG4gICAgICBsZXQgY2hhcl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoQ2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgc2Nhbl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlMGMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChTY2FuX25leHRfY2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggZ2V0X3BhZF9vcHQgJ2MnIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSAwIC0+IHNjYW5fZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSBfbiAtPlxuICAgICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yXG4gICAgICAgICAgIHRoZW4gaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZFxuICAgICAgICAgICBlbHNlICgqIGxlZ2FjeSBpZ25vcmVzICVjIHdpZHRocyAqKSBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgZW5kXG4gICAgfCAnQycgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jYW1sX2NoYXIsZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChDYW1sX2NoYXIgZm10X3Jlc3QpXG4gICAgfCAncycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChTdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnUycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfY2FtbF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKENhbWxfc3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+XG4gICAgICBsZXQgaWNvbnYgPSBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IFRva2VuX2NvdW50ZXIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIHwgJ24nIHwgJ0wnIHdoZW4gc3RyX2luZD1lbmRfaW5kIHx8IG5vdCAoaXNfaW50X2Jhc2Ugc3RyLltzdHJfaW5kXSkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfb2ZfY2hhciBzeW1iIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50MzIgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ24nIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpXG4gICAgICAgICAgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdMJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50NjQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2YnIHwgJ2UnIHwgJ0UnIHwgJ2cnIHwgJ0cnIHwgJ0YnIHwgJ2gnIHwgJ0gnIC0+XG4gICAgICBsZXQgZmNvbnYgPVxuICAgICAgICBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kXG4gICAgICAgICAgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zsb2F0IChnZXRfcGFkX29wdCAnXycsIGdldF9wcmVjX29wdCAoKSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoRmxvYXQgKGZjb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdiJyB8ICdCJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9ib29sIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChCb29sIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2EnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQWxwaGEgZm10X3Jlc3QpXG4gICAgfCAndCcgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChUaGV0YSBmbXRfcmVzdClcbiAgICB8ICdyJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChSZWFkZXIgZm10X3Jlc3QpXG4gICAgfCAnIScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGbHVzaCBmbXRfcmVzdClcbiAgICB8ICgnJScgfCAnQCcpIGFzIGMgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKGMsIGZtdF9yZXN0KSlcbiAgICB8ICd7JyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJ30nIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICd7Jywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnKCcgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICcpJyBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJygnLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICdbJyAtPlxuICAgICAgbGV0IG5leHRfaW5kLCBjaGFyX3NldCA9IHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdfJywgY2hhcl9zZXQpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ1snLCBjaGFyX3NldCwgZm10X3Jlc3QpKVxuICAgIHwgJy0nIHwgJysnIHwgJyMnIHwgJyAnIHwgJ18nIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvblwiXG4gICAgICAgIHN0ciBwY3RfaW5kIHN5bWJcbiAgICB8IF8gLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGludmFsaWQgY29udmVyc2lvbiBcXFwiJSUlY1xcXCJcIiBzdHIgKHN0cl9pbmQgLSAxKSBzeW1iXG4gICAgaW5cbiAgICAoKiBDaGVjayBmb3IgdW51c2VkIG9wdGlvbnMsIGFuZCByZWplY3QgdGhlbSBhcyBpbmNvbXBhdGlibGUuXG5cbiAgICAgICBTdWNoIGNoZWNrcyBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLCBhcyB0aGUgbGVnYWN5XG4gICAgICAgcGFyc2VyIHNpbGVudGx5IGlnbm9yZWQgaW5jb21wYXRpYmxlIGZsYWdzLiAqKVxuICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlbiBiZWdpblxuICAgIGlmIG5vdCAhcGx1c191c2VkICYmIHBsdXMgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIjtcbiAgICBpZiBub3QgIWhhc2hfdXNlZCAmJiBoYXNoIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCI7XG4gICAgaWYgbm90ICFzcGFjZV91c2VkICYmIHNwYWNlIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCI7XG4gICAgaWYgbm90ICFwYWRfdXNlZCAgJiYgUGFkZGluZ19FQkIgcGFkIDw+IFBhZGRpbmdfRUJCIE5vX3BhZGRpbmcgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCJgcGFkZGluZydcIjtcbiAgICBpZiBub3QgIXByZWNfdXNlZCAmJiBQcmVjaXNpb25fRUJCIHByZWMgPD4gUHJlY2lzaW9uX0VCQiBOb19wcmVjaXNpb24gdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIChpZiBpZ24gdGhlbiAnXycgZWxzZSBzeW1iKVxuICAgICAgICBcImBwcmVjaXNpb24nXCI7XG4gICAgaWYgaWduICYmIHBsdXMgdGhlbiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJysnXCI7XG4gICAgZW5kO1xuICAgICgqIHRoaXMgbGFzdCB0ZXN0IG11c3Qgbm90IGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLFxuICAgICAgIGFzIGlnbm9yaW5nIGl0IHdvdWxkIHR5cGljYWxseSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdHlwaW5nXG4gICAgICAgdGhhbiB3aGF0IHRoZSBsZWdhY3kgcGFyc2VyIHVzZWQgKilcbiAgICBpZiBub3QgIWlnbl91c2VkICYmIGlnbiB0aGVuXG4gICAgICBiZWdpbiBtYXRjaCBzeW1iIHdpdGhcbiAgICAgICAgKCogYXJndW1lbnQtbGVzcyBmb3JtYXRzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpbiBsZWdhY3kgbW9kZSAqKVxuICAgICAgICB8ICgnQCcgfCAnJScgfCAnIScgfCAnLCcpIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+ICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJ18nXCJcbiAgICAgIGVuZDtcbiAgICBmbXRfcmVzdWx0XG5cbiAgKCogUGFyc2UgZm9ybWF0dGluZyBpbmZvcm1hdGlvbiAoYWZ0ZXIgJ0AnKS4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX2F0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIEVuZF9vZl9mb3JtYXQpKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnWycgLT5cbiAgICAgICAgcGFyc2VfdGFnIGZhbHNlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX2JveCwgZm10X3Jlc3QpKVxuICAgICAgfCAneycgLT5cbiAgICAgICAgcGFyc2VfdGFnIHRydWUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICd9JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfdGFnLCBmbXRfcmVzdCkpXG4gICAgICB8ICcsJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCxcIiwgMCwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJAIFwiLCAxLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnOycgLT5cbiAgICAgICAgcGFyc2VfZ29vZF9icmVhayAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJz8nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGRmx1c2gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZvcmNlX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGbHVzaF9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBwYXJzZV9tYWdpY19zaXplIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfYXQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIHdoZW4gc3RyX2luZCArIDEgPCBlbmRfaW5kICYmIHN0ci5bc3RyX2luZCArIDFdID0gJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX3BlcmNlbnQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBmbXRfcmVzdCkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgYywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8bmFtZT4gYWZ0ZXIgXCJAe1wiIG9yIFwiQFtcIi4gKilcbiAgYW5kIHBhcnNlX3RhZyA6IHR5cGUgZSBmIC4gYm9vbCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGlzX29wZW5fdGFnIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIHRyeVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIGxldCBpbmQgPSBTdHJpbmcuaW5kZXhfZnJvbSBzdHIgKHN0cl9pbmQgKyAxKSAnPicgaW5cbiAgICAgICAgaWYgaW5kID49IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgc3RyX2luZCAoaW5kIC0gc3RyX2luZCArIDEpIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKGluZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgKGluZCArIDEpIGluXG4gICAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChzdWJfZm10LCBzdWJfc3RyKSBpblxuICAgICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKEVuZF9vZl9mb3JtYXQsIFwiXCIpIGluXG4gICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDx3aWR0aCBvZmZzZXQ+IGFmdGVyIFwiQDtcIi4gKilcbiAgYW5kIHBhcnNlX2dvb2RfYnJlYWsgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbGV0IG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgfHwgc3RyLltzdHJfaW5kXSA8PiAnPCcgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiAoXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgd2lkdGggPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfM10gd2l0aFxuICAgICAgICAgICAgICB8ICc+JyAtPlxuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfMy1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSwgQnJlYWsgKHMsIHdpZHRoLCAwKVxuICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF80LCBvZmZzZXQgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMyBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzQgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF81XSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF81LXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxLCBCcmVhayAocywgd2lkdGgsIG9mZnNldClcbiAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICApXG4gICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIHN0cl9pbmQsIEJyZWFrIChcIkA7XCIsIDEsIDApXG4gICAgaW5cbiAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSB0aGUgc2l6ZSBpbiBhIDxuPi4gKilcbiAgYW5kIHBhcnNlX21hZ2ljX3NpemUgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbWF0Y2hcbiAgICAgIHRyeVxuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCBzaXplID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfM10gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQgLSAyKSAoc3RyX2luZF8zIC0gc3RyX2luZCArIDMpIGluXG4gICAgICAgICAgU29tZSAoc3RyX2luZF8zICsgMSwgTWFnaWNfc2l6ZSAocywgc2l6ZSkpXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgU29tZSAobmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0KSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyAnPCcsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSBhbmQgY29uc3RydWN0IGEgY2hhciBzZXQuICopXG4gIGFuZCBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG5cbiAgICBsZXQgY2hhcl9zZXQgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgICBsZXQgYWRkX2NoYXIgYyA9XG4gICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYztcbiAgICBpblxuICAgIGxldCBhZGRfcmFuZ2UgYyBjJyA9XG4gICAgICBmb3IgaSA9IGludF9vZl9jaGFyIGMgdG8gaW50X29mX2NoYXIgYycgZG9cbiAgICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IChjaGFyX29mX2ludCBpKTtcbiAgICAgIGRvbmU7XG4gICAgaW5cblxuICAgIGxldCBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQgPVxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgXFxcbiAgICAgICAgIHVzZSAlJSUlIGluc3RlYWQgYXQgcG9zaXRpb24gJWQuXCIgc3RyIHN0cl9pbmRcbiAgICBpblxuXG4gICAgKCogUGFyc2UgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGNoYXIgc2V0LiAqKVxuICAgIGxldCByZWMgcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBsZXQgYyA9IHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFBhcnNlIHRoZSBjb250ZW50IG9mIGEgY2hhciBzZXQgdW50aWwgdGhlIGZpcnN0ICddJy4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfY29udGVudCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBUZXN0IGZvciByYW5nZSBpbiBjaGFyIHNldC4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcbiAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgd2hlbiBjID0gJyUnIC0+XG4gICAgICAgIGFkZF9jaGFyIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBpZiBjID0gJyUnIHRoZW4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kO1xuICAgICAgICAoKiBub3RlIHRoYXQgJ0AnIGFsb25lIGlzIGFjY2VwdGVkLCBhcyBkb25lIGJ5IHRoZSBsZWdhY3lcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb247IHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSByZXF1aXJlcyAlQFxuICAgICAgICAgICBzbyB3ZSBjb3VsZCB3YXJuIG9uIHRoYXQgKilcbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgYydcblxuICAgICgqIE1hbmFnZSByYW5nZSBpbiBjaGFyIHNldCAoZXhjZXB0IGlmIHRoZSAnLScgdGhlIGxhc3QgY2hhciBiZWZvcmUgJ10nKSAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICclJyAtPlxuICAgICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgLT5cbiAgICAgICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDIpIGVuZF9pbmRcbiAgICAgICAgICB8IF8gLT4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICBpblxuICAgIGxldCBzdHJfaW5kLCByZXZlcnNlID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgICAgfCAnXicgLT4gc3RyX2luZCArIDEsIHRydWVcbiAgICAgICAgfCBfIC0+IHN0cl9pbmQsIGZhbHNlIGluXG4gICAgbGV0IG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgbGV0IGNoYXJfc2V0ID0gZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0IGluXG4gICAgbmV4dF9pbmQsIChpZiByZXZlcnNlIHRoZW4gcmV2X2NoYXJfc2V0IGNoYXJfc2V0IGVsc2UgY2hhcl9zZXQpXG5cbiAgKCogQ29uc3VtZSBhbGwgbmV4dCBzcGFjZXMsIHJhaXNlIGFuIEZhaWx1cmUgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBpZiBzdHIuW3N0cl9pbmRdID0gJyAnIHRoZW4gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBlbHNlIHN0cl9pbmRcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZSBpZiBlbmRfaW5kIGlzXG4gICAgIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgYWNjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IGFjYyAqIDEwICsgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCcpIGluXG4gICAgICBpZiBuZXdfYWNjID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZFwiXG4gICAgICAgICAgc3RyIG5ld19hY2MgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCBuZXdfYWNjXG4gICAgfCBfIC0+IHN0cl9pbmQsIGFjY1xuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlXG4gICAgIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX2ludGVnZXIgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMFxuICAgIHwgJy0nIC0+IChcbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgIGxldCBuZXh0X2luZCwgbiA9IHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCAwIGluXG4gICAgICAgIG5leHRfaW5kLCAtblxuICAgICAgfCBjIC0+XG4gICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiZGlnaXRcIiBjXG4gICAgKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBBZGQgYSBsaXRlcmFsIHRvIGEgZm9ybWF0IGZyb20gYSBsaXRlcmFsIGNoYXJhY3RlciBzdWItc2VxdWVuY2UuICopXG4gIGFuZCBhZGRfbGl0ZXJhbCA6IHR5cGUgYSBkIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IChhLCBfLCBfLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGZtdCAtPiBtYXRjaCBzdHJfaW5kIC0gbGl0X3N0YXJ0IHdpdGhcbiAgICB8IDAgICAgLT4gRm10X0VCQiBmbXRcbiAgICB8IDEgICAgLT4gRm10X0VCQiAoQ2hhcl9saXRlcmFsIChzdHIuW2xpdF9zdGFydF0sIGZtdCkpXG4gICAgfCBzaXplIC0+IEZtdF9FQkIgKFN0cmluZ19saXRlcmFsIChTdHJpbmcuc3ViIHN0ciBsaXRfc3RhcnQgc2l6ZSwgZm10KSlcblxuICAoKiBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdWItZm9ybWF0XG4gICAgIChpLmUuIHRoZSBjb3JyZXNwb25kaW5nIFwiJX1cIiBvciBcIiUpXCIpICopXG4gIGFuZCBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBcXFxuICAgICAgICAgZXhwZWN0ZWQgXFxcIiUlJWNcXFwiIGF0IGNoYXJhY3RlciBudW1iZXIgJWRcIiBzdHIgYyBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJyUnIC0+XG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGlmIHN0ci5bc3RyX2luZCArIDFdID0gYyB0aGVuICgqIEVuZCBvZiBmb3JtYXQgZm91bmQgKikgc3RyX2luZCBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgfCAnXycgLT5cbiAgICAgICAgICAoKiBTZWFyY2ggZm9yIFwiJV8oXCIgb3IgXCIlX3tcIi4gKilcbiAgICAgICAgICBpZiBzdHJfaW5kICsgMiA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAyXSB3aXRoXG4gICAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgY1xuICAgICAgICAgIGVuZFxuICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICgqICV7Li4uJX0gc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICgqICUoLi4uJSkgc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICd9JyAtPlxuICAgICAgICAgICgqIEVycm9yOiAlKC4uLiV9LiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICcpJ1wiICd9J1xuICAgICAgICB8ICcpJyAtPlxuICAgICAgICAgICgqIEVycm9yOiAley4uLiUpLiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICd9J1wiICcpJ1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICBlbmRcbiAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAoKiBDaGVjayBpZiBzeW1iIGlzIGEgdmFsaWQgaW50IGNvbnZlcnNpb24gYWZ0ZXIgXCIlbFwiLCBcIiVuXCIgb3IgXCIlTFwiICopXG4gIGFuZCBpc19pbnRfYmFzZSBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gICgqIENvbnZlcnQgYSBjaGFyIChsLCBuIG9yIEwpIHRvIGl0cyBhc3NvY2lhdGVkIGNvdW50ZXIuICopXG4gIGFuZCBjb3VudGVyX29mX2NoYXIgc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2wnIC0+IExpbmVfY291bnRlciAgfCAnbicgLT4gQ2hhcl9jb3VudGVyXG4gICAgfCAnTCcgLT4gVG9rZW5fY291bnRlciB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgaW50X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbWF0Y2ggcGx1cywgaGFzaCwgc3BhY2UsIHN5bWIgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9kICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfaVxuICAgIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2QnIC0+IEludF9zZCB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdpJyAtPiBJbnRfc2lcbiAgICB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfcGQgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X3BpXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAneCcgLT4gSW50X3ggIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ1gnIC0+IEludF9YXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAneCcgLT4gSW50X0N4IHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ1gnIC0+IEludF9DWFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ28nIC0+IEludF9vXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnbycgLT4gSW50X0NvXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAndScgLT4gSW50X3VcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdkJyAtPiBJbnRfQ2RcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdpJyAtPiBJbnRfQ2lcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd1JyAtPiBJbnRfQ3VcbiAgICB8IF8sIHRydWUsIF8sICd4JyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ3hcbiAgICB8IF8sIHRydWUsIF8sICdYJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ1hcbiAgICB8IF8sIHRydWUsIF8sICdvJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ29cbiAgICB8IF8sIHRydWUsIF8sICgnZCcgfCAnaScgfCAndScpIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBmYWxzZSBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCJcbiAgICB8IHRydWUsIF8sIHRydWUsIF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIHRydWUsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiXG4gICAgfCB0cnVlLCBfLCBmYWxzZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIGZhbHNlIGhhc2ggc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgZmFsc2UsIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3BhY2UsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGZsb2F0X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBsZXQgZmxhZyA9IG1hdGNoIHBsdXMsIHNwYWNlIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX1xuICAgIHwgZmFsc2UsICB0cnVlIC0+IEZsb2F0X2ZsYWdfc1xuICAgIHwgIHRydWUsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfcFxuICAgIHwgIHRydWUsICB0cnVlIC0+XG4gICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gRmxvYXRfZmxhZ19wXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIiBpblxuICAgIGxldCBraW5kID0gbWF0Y2ggaGFzaCwgc3ltYiB3aXRoXG4gICAgfCBfLCAnZicgLT4gRmxvYXRfZlxuICAgIHwgXywgJ2UnIC0+IEZsb2F0X2VcbiAgICB8IF8sICdFJyAtPiBGbG9hdF9FXG4gICAgfCBfLCAnZycgLT4gRmxvYXRfZ1xuICAgIHwgXywgJ0cnIC0+IEZsb2F0X0dcbiAgICB8IF8sICdoJyAtPiBGbG9hdF9oXG4gICAgfCBfLCAnSCcgLT4gRmxvYXRfSFxuICAgIHwgZmFsc2UsICdGJyAtPiBGbG9hdF9GXG4gICAgfCB0cnVlLCAnRicgLT4gRmxvYXRfQ0ZcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gICAgZmxhZywga2luZFxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBpbmNvbXBhdGlibGUgb3B0aW9ucy4qKVxuICBhbmQgaW5jb21wYXRpYmxlX2ZsYWcgOiB0eXBlIGEgLiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nIC0+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCB0b19zdHJpbmdfZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgT3V0X29mX21lbW9yeSAtPiBcIk91dCBvZiBtZW1vcnlcIlxuICB8IFN0YWNrX292ZXJmbG93IC0+IFwiU3RhY2sgb3ZlcmZsb3dcIlxuICB8IE1hdGNoX2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzUpIFwiUGF0dGVybiBtYXRjaGluZyBmYWlsZWRcIlxuICB8IEFzc2VydF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIkFzc2VydGlvbiBmYWlsZWRcIlxuICB8IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIlVuZGVmaW5lZCByZWN1cnNpdmUgbW9kdWxlXCJcbiAgfCB4IC0+XG4gICAgICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgICAgIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIChPYmouZmllbGQgeCAwKSAwKSA6IHN0cmluZykgaW5cbiAgICAgICAgY29uc3RydWN0b3IgXiAoZmllbGRzIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG50eXBlIGJhY2t0cmFjZV9zbG90ID1cbiAgfCBLbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSAgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgICA6IHN0cmluZztcbiAgICAgIGxpbmVfbnVtYmVyIDogaW50O1xuICAgICAgc3RhcnRfY2hhciAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgICA6IGludDtcbiAgICAgIGlzX2lubGluZSAgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuKCogdG8gYXZvaWQgd2FybmluZyAqKVxubGV0IF8gPSBbS25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlOyBmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyID0gMDsgc3RhcnRfY2hhciA9IDA7IGVuZF9jaGFyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW5saW5lID0gZmFsc2U7IGRlZm5hbWUgPSBcIlwiIH07XG4gICAgICAgICBVbmtub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZSB9XVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbC5saW5lX251bWJlciBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbn1cblxubGV0IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICBTb21lIHtcbiAgICAgIGZpbGVuYW1lICAgID0gbC5maWxlbmFtZTtcbiAgICAgIGxpbmVfbnVtYmVyID0gbC5saW5lX251bWJlcjtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJ1xcXCInIHx8IFN0cmluZy5jb250YWlucyBmICclJyB0aGVuXG4gICAgICBmYWlsd2l0aCAoXCJGaWxlbmFtZS5xdW90ZV9jb21tYW5kOiBiYWQgZmlsZSBuYW1lIFwiIF4gZilcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBmICcgJyB0aGVuXG4gICAgICBcIlxcXCJcIiBeIGYgXiBcIlxcXCJcIlxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBpZiBjaGVja19zdWZmaXggbmFtZSBzdWZmXG4gIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCJcblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nID0gbGF6eShSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxuXG5sZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lID0gcmVmIHRlbXBfZGlyX25hbWVcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBjdXJyZW50X3RlbXBfZGlyX25hbWUgOj0gc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIGNsb3NlX2Rlc2Mob3Blbl9kZXNjIG5hbWUgW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2xdIDBvNjAwKTtcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IG9wZW5fdGVtcF9maWxlID8obW9kZSA9IFtPcGVuX3RleHRdKSA/KHBlcm1zID0gMG82MDApXG4gICAgICAgICAgICAgICAgICAgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDb21wbGV4IG51bWJlcnMgKilcblxudHlwZSB0ID0geyByZTogZmxvYXQ7IGltOiBmbG9hdCB9XG5cbmxldCB6ZXJvID0geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxubGV0IG9uZSA9IHsgcmUgPSAxLjA7IGltID0gMC4wIH1cbmxldCBpID0geyByZSA9IDAuMDsgaW0gPSAxLjAgfVxuXG5sZXQgYWRkIHggeSA9IHsgcmUgPSB4LnJlICsuIHkucmU7IGltID0geC5pbSArLiB5LmltIH1cblxubGV0IHN1YiB4IHkgPSB7IHJlID0geC5yZSAtLiB5LnJlOyBpbSA9IHguaW0gLS4geS5pbSB9XG5cbmxldCBuZWcgeCA9IHsgcmUgPSAtLiB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgY29uaiB4ID0geyByZSA9IHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBtdWwgeCB5ID0geyByZSA9IHgucmUgKi4geS5yZSAtLiB4LmltICouIHkuaW07XG4gICAgICAgICAgICAgICAgaW0gPSB4LnJlICouIHkuaW0gKy4geC5pbSAqLiB5LnJlIH1cblxubGV0IGRpdiB4IHkgPVxuICBpZiBhYnNfZmxvYXQgeS5yZSA+PSBhYnNfZmxvYXQgeS5pbSB0aGVuXG4gICAgbGV0IHIgPSB5LmltIC8uIHkucmUgaW5cbiAgICBsZXQgZCA9IHkucmUgKy4gciAqLiB5LmltIGluXG4gICAgeyByZSA9ICh4LnJlICsuIHIgKi4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHguaW0gLS4gciAqLiB4LnJlKSAvLiBkIH1cbiAgZWxzZVxuICAgIGxldCByID0geS5yZSAvLiB5LmltIGluXG4gICAgbGV0IGQgPSB5LmltICsuIHIgKi4geS5yZSBpblxuICAgIHsgcmUgPSAociAqLiB4LnJlICsuIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9IChyICouIHguaW0gLS4geC5yZSkgLy4gZCB9XG5cbmxldCBpbnYgeCA9IGRpdiBvbmUgeFxuXG5sZXQgbm9ybTIgeCA9IHgucmUgKi4geC5yZSArLiB4LmltICouIHguaW1cblxubGV0IG5vcm0geCA9XG4gICgqIFdhdGNoIG91dCBmb3Igb3ZlcmZsb3cgaW4gY29tcHV0aW5nIHJlXjIgKyBpbV4yICopXG4gIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICBpZiByID0gMC4wIHRoZW4gaVxuICBlbHNlIGlmIGkgPSAwLjAgdGhlbiByXG4gIGVsc2UgaWYgciA+PSBpIHRoZW5cbiAgICBsZXQgcSA9IGkgLy4gciBpbiByICouIHNxcnQoMS4wICsuIHEgKi4gcSlcbiAgZWxzZVxuICAgIGxldCBxID0gciAvLiBpIGluIGkgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuXG5sZXQgYXJnIHggPSBhdGFuMiB4LmltIHgucmVcblxubGV0IHBvbGFyIG4gYSA9IHsgcmUgPSBjb3MgYSAqLiBuOyBpbSA9IHNpbiBhICouIG4gfVxuXG5sZXQgc3FydCB4ID1cbiAgaWYgeC5yZSA9IDAuMCAmJiB4LmltID0gMC4wIHRoZW4geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gICAgbGV0IHcgPVxuICAgICAgaWYgciA+PSBpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHEgPSBpIC8uIHIgaW5cbiAgICAgICAgc3FydChyKSAqLiBzcXJ0KDAuNSAqLiAoMS4wICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHEgPSByIC8uIGkgaW5cbiAgICAgICAgc3FydChpKSAqLiBzcXJ0KDAuNSAqLiAocSArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBpblxuICAgIGlmIHgucmUgPj0gMC4wXG4gICAgdGhlbiB7IHJlID0gdzsgIGltID0gMC41ICouIHguaW0gLy4gdyB9XG4gICAgZWxzZSB7IHJlID0gMC41ICouIGkgLy4gdzsgIGltID0gaWYgeC5pbSA+PSAwLjAgdGhlbiB3IGVsc2UgLS4gdyB9XG4gIGVuZFxuXG5sZXQgZXhwIHggPVxuICBsZXQgZSA9IGV4cCB4LnJlIGluIHsgcmUgPSBlICouIGNvcyB4LmltOyBpbSA9IGUgKi4gc2luIHguaW0gfVxuXG5sZXQgbG9nIHggPSB7IHJlID0gbG9nIChub3JtIHgpOyBpbSA9IGF0YW4yIHguaW0geC5yZSB9XG5cbmxldCBwb3cgeCB5ID0gZXhwIChtdWwgeSAobG9nIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogUGFkZGluZyBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpkXCIpICopXG4gIHwgQXJnX3BhZGRpbmcgOiBwYWR0eSAtPiAoaW50IC0+ICdhLCAnYSkgcGFkZGluZ1xuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9kLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHBhZGRpbmcgb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcGFkX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogUHJlY2lzaW9uIG9mIGZsb2F0cyBhbmQgJzAnLXBhZGRpbmcgb2YgaW50ZWdlcnMuICopXG50eXBlICgnYSwgJ2IpIHByZWNpc2lvbiA9XG4gICgqIE5vIHByZWNpc2lvbiAoZXg6IFwiJWZcIikgKilcbiAgfCBOb19wcmVjaXNpb24gOiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogTGl0ZXJhbCBwcmVjaXNpb24gKGV4OiBcIiUuM2ZcIikgKilcbiAgfCBMaXRfcHJlY2lzaW9uIDogaW50IC0+ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBQcmVjaXNpb24gYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikgKilcbiAgfCBBcmdfcHJlY2lzaW9uIDogKGludCAtPiAnYSwgJ2EpIHByZWNpc2lvblxuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9mLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHByZWNpc2lvbiBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwcmVjX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogc2VlIHRoZSBDdXN0b20gZm9ybWF0IGNvbWJpbmF0b3IgKilcbnR5cGUgKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSA9XG4gIHwgQ3VzdG9tX3plcm8gOiAoJ2EsIHN0cmluZywgJ2EpIGN1c3RvbV9hcml0eVxuICB8IEN1c3RvbV9zdWNjIDogKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSAtPlxuICAgICgnYSwgJ3ggLT4gJ2IsICd4IC0+ICdjKSBjdXN0b21fYXJpdHlcblxuKCoqKilcblxuKCogICAgICAgIFJlbGF0aW9uYWwgZm9ybWF0IHR5cGVzXG5cbkluIHRoZSBmaXJzdCBmb3JtYXQrZ2FkdHMgaW1wbGVtZW50YXRpb24sIHRoZSB0eXBlIGZvciAlKC4uJSkgaW4gdGhlXG5mbXQgR0FEVCB3YXMgYXMgZm9sbG93czpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqICgnZDEsICdxMSwgJ2QyLCAncTIpIHJlYWRlcl9uYl91bmlmaWVyICpcbiAgICAoJ3gsICdiLCAnYywgJ2QxLCAncTEsICd1KSBmbXR0eSAqXG4gICAgKCd1LCAnYiwgJ2MsICdxMSwgJ2UxLCAnZikgZm10IC0+XG4gICAgICAoKCd4LCAnYiwgJ2MsICdkMiwgJ3EyLCAndSkgZm9ybWF0NiAtPiAneCwgJ2IsICdjLCAnZDEsICdlMSwgJ2YpIGZtdFxuXG5Ob3RpY2UgdGhhdCB0aGUgJ3UgcGFyYW1ldGVyIGluICdmIHBvc2l0aW9uIGluIHRoZSBmb3JtYXQgYXJndW1lbnRcbigoJ3gsIC4uLCAndSkgZm9ybWF0NiAtPiAuLikgaXMgZXF1YWwgdG8gdGhlICd1IHBhcmFtZXRlciBpbiAnYVxucG9zaXRpb24gaW4gdGhlIGZvcm1hdCB0YWlsICgoJ3UsIC4uLCAnZikgZm10KS4gVGhpcyBtZWFucyB0aGF0IHRoZVxudHlwZSBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHBhcmFtZXRlciBkZXBlbmRzIG9mIHdoZXJlIHRoZSAlKC4uLiUpXG5hcmUgaW4gdGhlIGZvcm1hdCBzdHJpbmc6XG5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKVwiXG4gIC0gOiAodW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gdW5pdFxuICA9IDxmdW4+XG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSklZFwiXG4gIC0gOiAoaW50IC0+IHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgaW50IC0+IHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiBpbnQgLT4gdW5pdFxuICA9IDxmdW4+XG5cbk9uIHRoZSBjb250cmFyeSwgdGhlIGxlZ2FjeSB0eXBlciBnaXZlcyBhIGNsZXZlciB0eXBlIHRoYXQgZG9lcyBub3RcbmRlcGVuZCBvbiB0aGUgcG9zaXRpb24gb2YgJSguLiUpIGluIHRoZSBmb3JtYXQgc3RyaW5nLiBGb3IgZXhhbXBsZSxcbiUoJSkgd2lsbCBoYXZlIHRoZSBwb2x5bW9ycGhpYyB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKTogaXQgY2FuXG5iZSBjb25jYXRlbmF0ZWQgdG8gYW55IGZvcm1hdCB0eXBlLCBhbmQgb25seSBlbmZvcmNlcyB0aGUgY29uc3RyYWludFxudGhhdCBpdHMgJ2EgYW5kICdmIHBhcmFtZXRlcnMgYXJlIGVxdWFsIChubyBmb3JtYXQgYXJndW1lbnRzKSBhbmQgJ2RcbmFuZCAnZSBhcmUgZXF1YWwgKG5vIHJlYWRlciBhcmd1bWVudCkuXG5cblRoZSB3ZWFrZW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgdHlwZSBpbiB0aGUgR0FEVCB2ZXJzaW9uIGJyb2tlIHVzZXJcbmNvZGUgKGluIGZhY3QgaXQgZXNzZW50aWFsbHkgbWFkZSAlKC4uLiUpIHVudXNhYmxlIGV4Y2VwdCBhdCB0aGUgbGFzdFxucG9zaXRpb24gb2YgYSBmb3JtYXQpLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHdvdWxkIG5vdCB3b3JrXG5hbnltb3JlOlxuXG4gIGZ1biBzZXAgLT5cbiAgICBGb3JtYXQucHJpbnRmIFwiZm9vJSglKWJhciUoJSliYXpcIiBzZXAgc2VwXG5cbkFzIHRoZSB0eXBlLWNoZWNrZXIgd291bGQgcmVxdWlyZSB0d28gKmluY29tcGF0aWJsZSogdHlwZXMgZm9yIHRoZSAlKCUpXG5pbiBkaWZmZXJlbnQgcG9zaXRpb25zLlxuXG5UaGUgc29sdXRpb24gdG8gcmVnYWluIGEgZ2VuZXJhbCB0eXBlIGZvciAlKC4uJSkgaXMgdG8gZ2VuZXJhbGl6ZSB0aGlzXG50ZWNobmlxdWUsIG5vdCBvbmx5IG9uIHRoZSAnZCwgJ2UgcGFyYW1ldGVycywgYnV0IG9uIGFsbCBzaXhcbnBhcmFtZXRlcnMgb2YgYSBmb3JtYXQ6IHdlIGludHJvZHVjZSBhIFwicmVsYXRpb25hbFwiIHR5cGVcbiAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbndob3NlIHZhbHVlcyBhcmUgcHJvb2ZzIHRoYXQgKCdhMSwgLi4sICdmMSkgYW5kICgnYTIsIC4uLCAnZjIpIG1vcmFsbHlcbmNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9ybWF0IHR5cGU6ICdhMSBpcyBvYnRhaW5lZCBmcm9tICdmMSwnYjEsJ2MxXG5pbiB0aGUgZXhhY3Qgc2FtZSB3YXkgdGhhdCAnYTIgaXMgb2J0YWluZWQgZnJvbSAnZjIsJ2IyLCdjMiwgZXRjLlxuXG5Gb3IgZXhhbXBsZSwgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHdvIGZvcm1hdCB0eXBlcyBiZWdpbm5pbmcgd2l0aCBhIENoYXJcbnBhcmFtZXRlciBpcyBhcyBmb2xsb3dzOlxuXG58IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIHRlcm0gc3RydWN0dXJlIG9mIGZtdHR5X3JlbCBpcyAoYWxtb3N0WzFdKVxuaXNvbW9ycGhpYyB0byB0aGUgZm10dHkgb2YgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uOiBldmVyeVxuY29uc3RydWN0b3IgaXMgcmUtcmVhZCB3aXRoIGEgYmluYXJ5LCByZWxhdGlvbmFsIHR5cGUsIGluc3RlYWQgb2YgdGhlXG5wcmV2aW91cyB1bmFyeSB0eXBpbmcuIGZtdHR5IGNhbiB0aGVuIGJlIHJlLWRlZmluZWQgYXMgdGhlIGRpYWdvbmFsIG9mXG5mbXR0eV9yZWw6XG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcblxuT25jZSB3ZSBoYXZlIHRoaXMgZm10dHlfcmVsIHR5cGUgaW4gcGxhY2UsIHdlIGNhbiBnaXZlIHRoZSBtb3JlXG5nZW5lcmFsIHR5cGUgdG8gJSguLi4lKTpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbldlIGFjY2VwdCBhbnkgZm9ybWF0ICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NikgKHRoaXMgaXNcbmNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IGZvcm1hdCksIGJ1dCBhbHNvXG5yZXF1aXJlIGEgcHJvb2YgdGhhdCB0aGlzIGZvcm1hdCBpcyBpbiByZWxhdGlvbiB0byBhbm90aGVyIGZvcm1hdCB0aGF0XG5pcyBjb25jYXRlbmFibGUgdG8gdGhlIGZvcm1hdCB0YWlsLiBXaGVuIGV4ZWN1dGluZyBhICUoLi4uJSkgZm9ybWF0XG4oaW4gY2FtbGludGVybmFsRm9ybWF0Lm1sOm1ha2VfcHJpbnRmIG9yIHNjYW5mLm1sOm1ha2Vfc2NhbmYpLCB3ZVxudHJhbnN0eXBlIHRoZSBmb3JtYXQgYWxvbmcgdGhpcyByZWxhdGlvbiB1c2luZyB0aGUgJ3JlY2FzdCcgZnVuY3Rpb25cbnRvIHRyYW5zcG9zZSBiZXR3ZWVuIHJlbGF0ZWQgZm9ybWF0IHR5cGVzLlxuXG4gIHZhbCByZWNhc3QgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSkgZm10XG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXRcblxuTk9URSBbMV06IHRoZSB0eXBpbmcgb2YgRm9ybWF0X3N1YnN0X3R5IHJlcXVpcmVzIG5vdCBvbmUgZm9ybWF0IHR5cGUsIGJ1dFxudHdvLCBvbmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdCBhcmd1bWVudCBhbmQgdGhlXG5maXJzdCBzaXggcGFyYW1ldGVycywgYW5kIHRoZSBvdGhlciBmb3IgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0XG5hcmd1bWVudCBhbmQgdGhlIGxhc3Qgc2l4IHBhcmFtZXRlcnMuXG5cbnwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5XaGVuIHdlIGdlbmVyYXRlIGEgZm9ybWF0IEFTVCwgd2UgZ2VuZXJhdGUgZXhhY3RseSB0aGUgc2FtZSB3aXRuZXNzXG5mb3IgYm90aCByZWxhdGlvbnMsIGFuZCB0aGUgd2l0bmVzcy1jb252ZXJzaW9uIGZ1bmN0aW9ucyBpblxuY2FtbGludGVybmFsRm9ybWF0IGRvIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQuIEZvciBleGFtcGxlLCB0aGVcbmZ1bmN0aW9uIHRoYXQgcHJvdmVzIHRoYXQgdGhlIHJlbGF0aW9uIGlzIHRyYW5zaXRpdmVcblxuICB2YWwgdHJhbnMgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMixcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuXG5kb2VzIGFzc3VtZSB0aGF0IHRoZSB0d28gaW5wdXRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0ZXJtIHN0cnVjdHVyZVxuKGFuZCBpcyBvbmx5IGV2ZXJ5IHVzZWQgZm9yIGFyZ3VtZW50IHdpdG5lc3NlcyBvZiB0aGVcbkZvcm1hdF9zdWJzdF90eSBjb25zdHJ1Y3RvcikuXG4qKVxuXG4oKiBUeXBlIG9mIGEgYmxvY2sgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBibG9ja190eXBlID1cbiAgfCBQcF9oYm94ICAgKCogSG9yaXpvbnRhbCBibG9jayBubyBsaW5lIGJyZWFraW5nICopXG4gIHwgUHBfdmJveCAgICgqIFZlcnRpY2FsIGJsb2NrIGVhY2ggYnJlYWsgbGVhZHMgdG8gYSBuZXcgbGluZSAqKVxuICB8IFBwX2h2Ym94ICAoKiBIb3Jpem9udGFsLXZlcnRpY2FsIGJsb2NrOiBzYW1lIGFzIHZib3gsIGV4Y2VwdCBpZiB0aGlzIGJsb2NrXG4gICAgICAgICAgICAgICAgIGlzIHNtYWxsIGVub3VnaCB0byBmaXQgb24gYSBzaW5nbGUgbGluZSAqKVxuICB8IFBwX2hvdmJveCAoKiBIb3Jpem9udGFsIG9yIFZlcnRpY2FsIGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAqKVxuICB8IFBwX2JveCAgICAoKiBIb3Jpem9udGFsIG9yIEluZGVudCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2ssIG9yXG4gICAgICAgICAgICAgICAgIHdoZW4gaXQgbGVhZHMgdG8gYSBuZXcgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgbGluZSAqKVxuICB8IFBwX2ZpdHMgICAoKiBJbnRlcm5hbCB1c2FnZTogd2hlbiBhIGJsb2NrIGZpdHMgb24gYSBzaW5nbGUgbGluZSAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBmb3JtYXR0aW5nX2xpdCA9XG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBdICAgKilcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQH0gICAqKVxuICB8IEJyZWFrIG9mIHN0cmluZyAqIGludCAqIGludCAgICAgICAgICAoKiBALCB8IEAgIHwgQDsgfCBAOzw+ICopXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA/ICAgKilcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFxcbiAgKilcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQC4gICAqKVxuICB8IE1hZ2ljX3NpemUgb2Ygc3RyaW5nICogaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPG4+ICopXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBAICAgKilcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQCUlICAqKVxuICB8IFNjYW5faW5kaWMgb2YgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAWCAgICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlbiA9XG4gIHwgT3Blbl90YWcgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEB7ICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cbiAgfCBPcGVuX2JveCA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQFsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCB0eXBlIGVsZW1lbnRzLiAqKVxuKCogSW4gcGFydGljdWxhciB1c2VkIHRvIHJlcHJlc2VudCAlKC4uLiUpIGFuZCAley4uLiV9IGNvbnRlbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5hbmQgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCA9XG4gIHwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgU3RyaW5nX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoc3RyaW5nIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgc3RyaW5nIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQzMl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQzMiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDMyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IE5hdGl2ZWludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbmQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKG5hdGl2ZWludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIG5hdGl2ZWludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQ2NF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQ2NCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDY0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEZsb2F0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGZsb2F0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgZmxvYXQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQm9vbF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVCICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoYm9vbCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGJvb2wgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBGb3JtYXRfYXJnX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG4gIHwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnMuICopXG4gIHwgQWxwaGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAneCAtPiAnYzEpIC0+ICd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAneCAtPiAnYzIpIC0+ICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFRoZXRhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ2MxKSAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ2MyKSAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBBbnlfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFVzZWQgZm9yIGN1c3RvbSBmb3JtYXRzICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBFbmRfb2ZfZm10dHkgOlxuICAgICAgKCdmMSwgJ2IxLCAnYzEsICdkMSwgJ2QxLCAnZjEsXG4gICAgICAgJ2YyLCAnYjIsICdjMiwgJ2QyLCAnZDIsICdmMikgZm10dHlfcmVsXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IGVsZW1lbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgPVxuICB8IENoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVDICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFN0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVTICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDMyIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgTmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5bZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBuYXRpdmVpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDY0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgICAgIGZsb2F0X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBmbG9hdCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEJvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbYkJdICopXG4gICAgICAoJ3gsIGJvb2wgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbHVzaCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlISAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBhYmMgKilcbiAgICAgIHN0cmluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENoYXJfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKilcbiAgICAgIGNoYXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IEZvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBBbHBoYSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICd4IC0+ICdjKSAtPiAneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBUaGV0YSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICdjKSAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3I6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgIGZvcm1hdHRpbmdfbGl0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0dGluZ19nZW4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UxLCAnZjEpIGZvcm1hdHRpbmdfZ2VuICpcbiAgICAgICgnZjEsICdiLCAnYywgJ2UxLCAnZTIsICdmMikgZm10IC0+ICgnYTEsICdiLCAnYywgJ2QxLCAnZTIsICdmMikgZm10XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCAtPiAnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoc3RyaW5nIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChpbnQgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJTBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJZ25vcmVkX3BhcmFtIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGlnbm9yZWQgKiAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBDdXN0b20gcHJpbnRpbmcgZm9ybWF0IChQUiM2NDUyLCBHUFIjMTQwKVxuXG4gICAgIFdlIGluY2x1ZGUgYSB0eXBlIEN1c3RvbSBvZiBcImN1c3RvbSBjb252ZXJ0ZXJzXCIsIHdoZXJlIGFuXG4gICAgIGFyYml0cmFyeSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IG9uZSBvciBtb3JlXG4gICAgIGFyZ3VtZW50cy4gVGhlcmUgaXMgbm8gc3ludGF4IGZvciBjdXN0b20gY29udmVydGVycywgaXQgaXMgb25seVxuICAgICBpbnRlbmRlZCBmb3IgY3VzdG9tIHByb2Nlc3NvcnMgdGhhdCB3aXNoIHRvIHJlbHkgb24gdGhlXG4gICAgIHN0ZGxpYi1kZWZpbmVkIGZvcm1hdCBHQURUcy5cblxuICAgICBGb3IgaW5zdGFuY2UgYSBwcmUtcHJvY2Vzc29yIGNvdWxkIGNob29zZSB0byBpbnRlcnByZXQgc3RyaW5nc1xuICAgICBwcmVmaXhlZCB3aXRoIFtcIiFcIl0gYXMgZm9ybWF0IHN0cmluZ3Mgd2hlcmUgWyV7eyAuLi4gfX1dIGlzXG4gICAgIGEgc3BlY2lhbCBmb3JtIHRvIHBhc3MgYSB0b19zdHJpbmcgZnVuY3Rpb24sIHNvIHRoYXQgb25lIGNvdWxkXG4gICAgIHdyaXRlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50OyB5IDogaW50IH1cblxuICAgICAgIGxldCBzdHJpbmdfb2ZfdCB0ID0gUHJpbnRmLnNwcmludGYgXCJ7IHggPSAlZDsgeSA9ICVkIH1cIiB0LnggdC55XG5cbiAgICAgICBQcmludGYucHJpbnRmICFcInQgPSAle3tzdHJpbmdfb2ZfdH19XCIgeyB4ID0gNDI7IHkgPSA0MiB9XG4gICAgIF19XG4gICopXG4gIHwgQ3VzdG9tIDpcbiAgICAgICgnYSwgJ3gsICd5KSBjdXN0b21fYXJpdHkgKiAodW5pdCAtPiAneCkgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogZW5kIG9mIGEgZm9ybWF0IHNwZWNpZmljYXRpb24gKilcbiAgfCBFbmRfb2ZfZm9ybWF0IDpcbiAgICAgICAgKCdmLCAnYiwgJ2MsICdlLCAnZSwgJ2YpIGZtdFxuXG4oKioqKVxuXG4oKiBUeXBlIGZvciBpZ25vcmVkIHBhcmFtZXRlcnMgKHNlZSBcIiVfXCIpLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkID1cbiAgfCBJZ25vcmVkX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9DICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfcyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfUyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9sZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9uZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9MZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9mICopXG4gICAgICBwYWRfb3B0aW9uICogcHJlY19vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Jvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0IgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3suLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9yZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICopXG4gICAgICAoJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0IC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXzBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAqIHN0cmluZ1xuXG5sZXQgcmVjIGVyYXNlX3JlbCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAoYSwgYiwgYywgZCwgZSwgZixcbiAgIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIF90eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGUgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0IHR5cGVzLiAqKVxuKCogVXNlZCBieTpcbiAgICogcmVhZGVyX25iX3VuaWZpZXJfb2ZfZm10dHkgdG8gY291bnQgcmVhZGVycyBpbiBhbiBmbXR0eSxcbiAgICogU2NhbmYudGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyB0byBleHRyYWN0IHJlYWRlcnMgaW5zaWRlICUoLi4uJSksXG4gICAqIENhbWxpbnRlcm5hbEZvcm1hdC5mbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCB0byBleHRyYWN0IGZvcm1hdCB0eXBlLiAqKVxuXG4oKlxubGV0IHJlYyBjb25jYXRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdHR5ID1cbiopXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAgICAgIGcxIGoxIGcyIGoyXG4gIC5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGQxLCBhMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGQyLCBhMikgZm10dHlfcmVsIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZTEsIGYxLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZTIsIGYyKSBmbXR0eV9yZWwgPVxuZnVuIGZtdHR5MSBmbXR0eTIgLT4gbWF0Y2ggZm10dHkxIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEVuZF9vZl9mbXR0eSAtPiBmbXR0eTJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXRzLiAqKVxubGV0IHJlYyBjb25jYXRfZm10IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdCA9XG5mdW4gZm10MSBmbXQyIC0+IG1hdGNoIGZtdDEgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIFN0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIENhbWxfc3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBDaGFyIChyZXN0KSAtPlxuICAgIENoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgQm9vbCAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgQWxwaGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBUaGV0YSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBDdXN0b20gKGFyaXR5LCBmLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBSZWFkZXIgcmVzdCAtPlxuICAgIFJlYWRlciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIEZsdXNoIChjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nX2xpdGVyYWwgKHN0ciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgQ2hhcl9saXRlcmFsICAgKGNociwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmcgICAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgKHJlc3QpIC0+XG4gICAgU2Nhbl9uZXh0X2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJ0b3V0LCBJTlJJQSBQYXJpcy1TYWNsYXkgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENhbWxpbnRlcm5hbEF0b21pYyBpcyBhIGRlcGVuZGVuY3kgb2YgU3RkbGliLCBzbyBpdCBpcyBjb21waWxlZCB3aXRoXG4gICAtbm9wZXJ2YXNpdmVzLiAqKVxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFdlIGFyZSBub3QgcmV1c2luZyAoJ2EgcmVmKSBkaXJlY3RseSB0byBtYWtlIGl0IGVhc2llciB0byByZWFzb25cbiAgIGFib3V0IGF0b21pY2l0eSBpZiB3ZSB3aXNoIHRvOiBldmVuIGluIGEgc2VxdWVudGlhbCBpbXBsZW1lbnRhdGlvbixcbiAgIHNpZ25hbHMgYW5kIG90aGVyIGFzeW5jaHJvbm91cyBjYWxsYmFja3MgbWlnaHQgYnJlYWsgYXRvbWljaXR5LiAqKVxudHlwZSAnYSB0ID0ge211dGFibGUgdjogJ2F9XG5cbmxldCBtYWtlIHYgPSB7dn1cbmxldCBnZXQgciA9IHIudlxubGV0IHNldCByIHYgPSByLnYgPC0gdlxuXG4oKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgc2V0IHRvIG5ldmVyIGJlIGlubGluZWQ6IEZsYW1iZGEgaXNcbiAgIGFsbG93ZWQgdG8gbW92ZSBzdXJyb3VuZGluZyBjb2RlIGluc2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbixcbiAgIGluY2x1ZGluZyBhbGxvY2F0aW9ucy4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGV4Y2hhbmdlIHIgdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSB2O1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXRbQGlubGluZSBuZXZlcl0gY29tcGFyZV9hbmRfc2V0IHIgc2VlbiB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgaWYgY3VyID09IHNlZW4gdGhlbiAoXG4gICAgci52IDwtIHY7XG4gICAgKCogRU5EIEFUT01JQyAqKVxuICAgIHRydWVcbiAgKSBlbHNlXG4gICAgZmFsc2VcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZldGNoX2FuZF9hZGQgciBuID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIChjdXIgKyBuKTtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXQgcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgaGQgOjogdGwgLT4gaGQgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IENhbWxpbnRlcm5hbEF0b21pYy5tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gIGxldCBtb2R1bGUgQXRvbWljID0gQ2FtbGludGVybmFsQXRvbWljIGluXG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gQXRvbWljLm1ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2F0X2V4aXQgKCkgPSAoQ2FtbGludGVybmFsQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBuYWtlZF9wb2ludGVyc19jaGVja2VkIDogdW5pdCAtPiBib29sXG4gID0gXCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkXCJcbmxldCAoKSA9IGlmIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgKCkgdGhlbiBhdF9leGl0IG1ham9yXG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgID0gQ29tcGxleFxubW9kdWxlIERpZ2VzdCAgICAgICA9IERpZ2VzdFxubW9kdWxlIEVpdGhlciAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgPSBHY1xubW9kdWxlIEdlbmxleCAgICAgICA9IEdlbmxleFxubW9kdWxlIEhhc2h0YmwgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbl9jaGFubmVsICAgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW50ICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTmF0aXZlaW50ICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBhcnNpbmcgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQZXJ2YXNpdmVzICAgPSBQZXJ2YXNpdmVzXG5tb2R1bGUgUHJpbnRleGMgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VxICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJlYW0gICAgICAgPSBTdHJlYW1cbm1vZHVsZSBTdHJpbmcgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgPSBTeXNcbm1vZHVsZSBVY2hhciAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEphbmUgU3RyZWV0IEdyb3VwIExMQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBAZGVwcmVjYXRlZCBVc2UgeyFTdGRsaWJ9ICopXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxubGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbmxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG5leGNlcHRpb24gRXhpdFxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgbWluID0gbWluXG5sZXQgbWF4ID0gbWF4XG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAoJiYpIGluc3RlYWQuXCJdXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKHx8KSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxubGV0IGFicyA9IGFic1xubGV0IG1heF9pbnQgPSBtYXhfaW50XG5sZXQgbWluX2ludCA9IG1pbl9pbnRcbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG5vdCA9IGxub3RcbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5sZXQgaW5maW5pdHkgPSBpbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IG5lZ19pbmZpbml0eVxubGV0IG5hbiA9IG5hblxubGV0IG1heF9mbG9hdCA9IG1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IG1pbl9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBlcHNpbG9uX2Zsb2F0XG50eXBlIG5vbnJlYyBmcGNsYXNzID0gZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxubGV0ICggXiApID0gKCBeIClcbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgPSBjaGFyX29mX2ludFxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5sZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc3RyaW5nID0gYm9vbF9vZl9zdHJpbmdcbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBib29sX29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfaW50ID0gc3RyaW5nX29mX2ludFxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgaW50X29mX3N0cmluZ19vcHQgPSBpbnRfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9mbG9hdCA9IHN0cmluZ19vZl9mbG9hdFxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5sZXQgKCBAICkgID0gKCBAIClcbnR5cGUgbm9ucmVjIGluX2NoYW5uZWwgPSBpbl9jaGFubmVsXG50eXBlIG5vbnJlYyBvdXRfY2hhbm5lbCA9IG91dF9jaGFubmVsXG5sZXQgc3RkaW4gPSBzdGRpblxubGV0IHN0ZG91dCA9IHN0ZG91dFxubGV0IHN0ZGVyciA9IHN0ZGVyclxubGV0IHByaW50X2NoYXIgPSBwcmludF9jaGFyXG5sZXQgcHJpbnRfc3RyaW5nID0gcHJpbnRfc3RyaW5nXG5sZXQgcHJpbnRfYnl0ZXMgPSBwcmludF9ieXRlc1xubGV0IHByaW50X2ludCA9IHByaW50X2ludFxubGV0IHByaW50X2Zsb2F0ID0gcHJpbnRfZmxvYXRcbmxldCBwcmludF9lbmRsaW5lID0gcHJpbnRfZW5kbGluZVxubGV0IHByaW50X25ld2xpbmUgPSBwcmludF9uZXdsaW5lXG5sZXQgcHJlcnJfY2hhciA9IHByZXJyX2NoYXJcbmxldCBwcmVycl9zdHJpbmcgPSBwcmVycl9zdHJpbmdcbmxldCBwcmVycl9ieXRlcyA9IHByZXJyX2J5dGVzXG5sZXQgcHJlcnJfaW50ID0gcHJlcnJfaW50XG5sZXQgcHJlcnJfZmxvYXQgPSBwcmVycl9mbG9hdFxubGV0IHByZXJyX2VuZGxpbmUgPSBwcmVycl9lbmRsaW5lXG5sZXQgcHJlcnJfbmV3bGluZSA9IHByZXJyX25ld2xpbmVcbmxldCByZWFkX2xpbmUgPSByZWFkX2xpbmVcbmxldCByZWFkX2ludCA9IHJlYWRfaW50XG5sZXQgcmVhZF9pbnRfb3B0ID0gcmVhZF9pbnRfb3B0XG5sZXQgcmVhZF9mbG9hdCA9IHJlYWRfZmxvYXRcbmxldCByZWFkX2Zsb2F0X29wdCA9IHJlYWRfZmxvYXRfb3B0XG50eXBlIG5vbnJlYyBvcGVuX2ZsYWcgPSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5sZXQgb3Blbl9vdXQgPSBvcGVuX291dFxubGV0IG9wZW5fb3V0X2JpbiA9IG9wZW5fb3V0X2JpblxubGV0IG9wZW5fb3V0X2dlbiA9IG9wZW5fb3V0X2dlblxubGV0IGZsdXNoID0gZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBmbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IG91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X3N0cmluZyA9IG91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBvdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBvdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gb3V0cHV0X3N1YnN0cmluZ1xubGV0IG91dHB1dF9ieXRlID0gb3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IG91dHB1dF9iaW5hcnlfaW50XG5sZXQgb3V0cHV0X3ZhbHVlID0gb3V0cHV0X3ZhbHVlXG5sZXQgc2Vla19vdXQgPSBzZWVrX291dFxubGV0IHBvc19vdXQgPSBwb3Nfb3V0XG5sZXQgb3V0X2NoYW5uZWxfbGVuZ3RoID0gb3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2Vfb3V0ID0gY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfb3V0X25vZXJyID0gY2xvc2Vfb3V0X25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX291dCA9IHNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBvcGVuX2luID0gb3Blbl9pblxubGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9iaW5cbmxldCBvcGVuX2luX2dlbiA9IG9wZW5faW5fZ2VuXG5sZXQgaW5wdXRfY2hhciA9IGlucHV0X2NoYXJcbmxldCBpbnB1dF9saW5lID0gaW5wdXRfbGluZVxubGV0IGlucHV0ID0gaW5wdXRcbmxldCByZWFsbHlfaW5wdXQgPSByZWFsbHlfaW5wdXRcbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nID0gcmVhbGx5X2lucHV0X3N0cmluZ1xubGV0IGlucHV0X2J5dGUgPSBpbnB1dF9ieXRlXG5sZXQgaW5wdXRfYmluYXJ5X2ludCA9IGlucHV0X2JpbmFyeV9pbnRcbmxldCBpbnB1dF92YWx1ZSA9IGlucHV0X3ZhbHVlXG5sZXQgc2Vla19pbiA9IHNlZWtfaW5cbmxldCBwb3NfaW4gPSBwb3NfaW5cbmxldCBpbl9jaGFubmVsX2xlbmd0aCA9IGluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2VfaW4gPSBjbG9zZV9pblxubGV0IGNsb3NlX2luX25vZXJyID0gY2xvc2VfaW5fbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfaW4gPSBzZXRfYmluYXJ5X21vZGVfaW5cbm1vZHVsZSBMYXJnZUZpbGUgPSBMYXJnZUZpbGVcbnR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcbnR5cGUgbm9ucmVjICgnYSwnYikgcmVzdWx0ID0gKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcbmxldCBzdHJpbmdfb2ZfZm9ybWF0ID0gc3RyaW5nX29mX2Zvcm1hdFxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxubGV0ICggXl4gKSA9ICggXl4gKVxubGV0IGV4aXQgPSBleGl0XG5sZXQgYXRfZXhpdCA9IGF0X2V4aXRcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSA9IHZhbGlkX2Zsb2F0X2xleGVtXG5sZXQgZG9fYXRfZXhpdCA9IGRvX2F0X2V4aXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgbXVsIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCBkaXYgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsIHJlbSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZm1hIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1hX2Zsb2F0XCIgXCJjYW1sX2ZtYVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcblxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IGlzX2Zpbml0ZSAoeDogZmxvYXQpID0geCAtLiB4ID0gMC5cbmxldCBpc19pbmZpbml0ZSAoeDogZmxvYXQpID0gMS4gLy4geCA9IDAuXG5sZXQgaXNfbmFuICh4OiBmbG9hdCkgPSB4IDw+IHhcblxubGV0IHBpID0gMHgxLjkyMWZiNTQ0NDJkMThwKzFcbmxldCBtYXhfZmxvYXQgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gU3RkbGliLm1pbl9mbG9hdFxubGV0IGVwc2lsb24gPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0b19pbnQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXRcbnR5cGUgZnBjbGFzcyA9IFN0ZGxpYi5mcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwb3cgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNicnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jYnJ0X2Zsb2F0XCIgXCJjYW1sX2NicnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cDJfZmxvYXRcIiBcImNhbWxfZXhwMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMl9mbG9hdFwiIFwiY2FtbF9sb2cyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmYgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZfZmxvYXRcIiBcImNhbWxfZXJmXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZjX2Zsb2F0XCIgXCJjYW1sX2VyZmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdHJ1bmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90cnVuY19mbG9hdFwiIFwiY2FtbF90cnVuY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCByb3VuZCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3JvdW5kX2Zsb2F0XCIgXCJjYW1sX3JvdW5kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbltAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBpc19pbnRlZ2VyIHggPSB4ID0gdHJ1bmMgeCAmJiBpc19maW5pdGUgeFxuXG5leHRlcm5hbCBuZXh0X2FmdGVyIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmV4dGFmdGVyX2Zsb2F0XCIgXCJjYW1sX25leHRhZnRlclwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBzdWNjIHggPSBuZXh0X2FmdGVyIHggaW5maW5pdHlcbmxldCBwcmVkIHggPSBuZXh0X2FmdGVyIHggbmVnX2luZmluaXR5XG5cbmV4dGVybmFsIGNvcHlfc2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2lnbl9iaXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gYm9vbFxuICA9IFwiY2FtbF9zaWduYml0X2Zsb2F0XCIgXCJjYW1sX3NpZ25iaXRcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxudHlwZSB0ID0gZmxvYXRcbmV4dGVybmFsIGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBlcXVhbCB4IHkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0W0BpbmxpbmVdIG1pbiAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHx8IGlzX25hbiB5IHRoZW4gKG5hbiwgbmFuKVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCwgeSkgZWxzZSAoeSwgeClcblxubGV0W0BpbmxpbmVdIG1pbl9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHRoZW4gKHkseSlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuICh4LHgpXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LHkpIGVsc2UgKHkseClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+IGludCAtPiBmbG9hdCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gZmxvYXRhcnJheVxuXG4gIGV4dGVybmFsIGxlbmd0aCA6IHQgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGxldCB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgZm9yIGkgPSBvZnMgdG8gb2ZzICsgbGVuIC0gMSBkbyB1bnNhZmVfc2V0IGEgaSB2IGRvbmVcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPVxuICAgIFwiY2FtbF9mbG9hdGFycmF5X2JsaXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjaGVjayBhIG9mcyBsZW4gbXNnID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzICsgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBsZW5ndGggYSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBsZXQgbWFrZSBuIHYgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbiBpblxuICAgIHVuc2FmZV9maWxsIHJlc3VsdCAwIG4gdjtcbiAgICByZXN1bHRcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IGFwcGVuZCBhMSBhMiA9XG4gICAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gICAgbGV0IGwyID0gbGVuZ3RoIGEyIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgICB1bnNhZmVfYmxpdCBhMSAwIHJlc3VsdCAwIGwxO1xuICAgIHVuc2FmZV9ibGl0IGEyIDAgcmVzdWx0IGwxIGwyO1xuICAgIHJlc3VsdFxuXG4gICgqIG5leHQgMyBmdW5jdGlvbnM6IG1vZGlmaWVkIGNvcHkgb2YgY29kZSBmcm9tIHN0cmluZy5tbCAqKVxuICBsZXQgZW5zdXJlX2dlICh4OmludCkgeSA9XG4gICAgaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuY29uY2F0XCJcblxuICBsZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIGFjYykgYWNjKSB0bFxuXG4gIGxldCBjb25jYXQgbCA9XG4gICAgbGV0IGxlbiA9IHN1bV9sZW5ndGhzIDAgbCBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGwgaSA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gbGVuKVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQgaGxlbiA9IGxlbmd0aCBoZCBpblxuICAgICAgICB1bnNhZmVfYmxpdCBoZCAwIHJlc3VsdCBpIGhsZW47XG4gICAgICAgIGxvb3AgdGwgKGkgKyBobGVuKVxuICAgIGluXG4gICAgbG9vcCBsIDA7XG4gICAgcmVzdWx0XG5cbiAgbGV0IHN1YiBhIG9mcyBsZW4gPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LnN1YlwiO1xuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgYSBvZnMgcmVzdWx0IDAgbGVuO1xuICAgIHJlc3VsdFxuXG4gIGxldCBjb3B5IGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGwgaW5cbiAgICB1bnNhZmVfYmxpdCBhIDAgcmVzdWx0IDAgbDtcbiAgICByZXN1bHRcblxuICBsZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuZmlsbFwiO1xuICAgIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbiAgbGV0IGJsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuID1cbiAgICBjaGVjayBzcmMgc29mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgY2hlY2sgZHN0IGRvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIHVuc2FmZV9ibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlblxuXG4gIGxldCB0b19saXN0IGEgPVxuICAgIExpc3QuaW5pdCAobGVuZ3RoIGEpICh1bnNhZmVfZ2V0IGEpXG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiByZXN1bHRcbiAgICAgIHwgaCA6OiB0IC0+IHVuc2FmZV9zZXQgcmVzdWx0IGkgaDsgZmlsbCAoaSArIDEpIHRcbiAgICBpblxuICAgIGZpbGwgMCBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcjIgZiBhIGIgPVxuICAgIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxuICBsZXQgbWFwIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXG4gICBUaGlzIGlzIGEgbGFnZ2VkLUZpYm9uYWNjaSBGKDU1LCAyNCwgKykgd2l0aCBhIG1vZGlmaWVkIGFkZGl0aW9uXG4gICBmdW5jdGlvbiB0byBlbmhhbmNlIHRoZSBtaXhpbmcgb2YgYml0cy5cbiAgIElmIHdlIHVzZSBub3JtYWwgYWRkaXRpb24sIHRoZSBsb3ctb3JkZXIgYml0IGZhaWxzIHRlc3RzIDEgYW5kIDdcbiAgIG9mIHRoZSBEaWVoYXJkIHRlc3Qgc3VpdGUsIGFuZCBiaXRzIDEgYW5kIDIgYWxzbyBmYWlsIHRlc3QgNy5cbiAgIElmIHdlIHVzZSBtdWx0aXBsaWNhdGlvbiBhcyBzdWdnZXN0ZWQgYnkgTWFyc2FnbGlhLCBpdCBkb2Vzbid0IGZhcmVcbiAgIG11Y2ggYmV0dGVyLlxuICAgQnkgbWl4aW5nIHRoZSBiaXRzIG9mIG9uZSBvZiB0aGUgbnVtYmVycyBiZWZvcmUgYWRkaXRpb24gKFhPUiB0aGVcbiAgIDUgaGlnaC1vcmRlciBiaXRzIGludG8gdGhlIGxvdy1vcmRlciBiaXRzKSwgd2UgZ2V0IGEgZ2VuZXJhdG9yIHRoYXRcbiAgIHBhc3NlcyBhbGwgdGhlIERpZWhhcmQgdGVzdHMuXG4qKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID0geyBzdCA6IGludCBhcnJheTsgbXV0YWJsZSBpZHggOiBpbnQgfVxuXG4gIGxldCBuZXdfc3RhdGUgKCkgPSB7IHN0ID0gQXJyYXkubWFrZSA1NSAwOyBpZHggPSAwIH1cbiAgbGV0IGFzc2lnbiBzdDEgc3QyID1cbiAgICBBcnJheS5ibGl0IHN0Mi5zdCAwIHN0MS5zdCAwIDU1O1xuICAgIHN0MS5pZHggPC0gc3QyLmlkeFxuXG5cbiAgbGV0IGZ1bGxfaW5pdCBzIHNlZWQgPVxuICAgIGxldCBjb21iaW5lIGFjY3UgeCA9IERpZ2VzdC5zdHJpbmcgKGFjY3UgXiBJbnQudG9fc3RyaW5nIHgpIGluXG4gICAgbGV0IGV4dHJhY3QgZCA9XG4gICAgICBDaGFyLmNvZGUgZC5bMF0gKyAoQ2hhci5jb2RlIGQuWzFdIGxzbCA4KSArIChDaGFyLmNvZGUgZC5bMl0gbHNsIDE2KVxuICAgICAgKyAoQ2hhci5jb2RlIGQuWzNdIGxzbCAyNClcbiAgICBpblxuICAgIGxldCBzZWVkID0gaWYgQXJyYXkubGVuZ3RoIHNlZWQgPSAwIHRoZW4gW3wgMCB8XSBlbHNlIHNlZWQgaW5cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgZm9yIGkgPSAwIHRvIDU0IGRvXG4gICAgICBzLnN0LihpKSA8LSBpO1xuICAgIGRvbmU7XG4gICAgbGV0IGFjY3UgPSByZWYgXCJ4XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgKyBJbnQubWF4IDU1IGwgZG9cbiAgICAgIGxldCBqID0gaSBtb2QgNTUgaW5cbiAgICAgIGxldCBrID0gaSBtb2QgbCBpblxuICAgICAgYWNjdSA6PSBjb21iaW5lICFhY2N1IHNlZWQuKGspO1xuICAgICAgcy5zdC4oaikgPC0gKHMuc3QuKGopIGx4b3IgZXh0cmFjdCAhYWNjdSkgbGFuZCAweDNGRkZGRkZGOyAgKCogUFIjNTU3NSAqKVxuICAgIGRvbmU7XG4gICAgcy5pZHggPC0gMFxuXG5cbiAgbGV0IG1ha2Ugc2VlZCA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGZ1bGxfaW5pdCByZXN1bHQgc2VlZDtcbiAgICByZXN1bHRcblxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9IG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gIGxldCBjb3B5IHMgPVxuICAgIGxldCByZXN1bHQgPSBuZXdfc3RhdGUgKCkgaW5cbiAgICBhc3NpZ24gcmVzdWx0IHM7XG4gICAgcmVzdWx0XG5cblxuICAoKiBSZXR1cm5zIDMwIHJhbmRvbSBiaXRzIGFzIGFuIGludGVnZXIgMCA8PSB4IDwgMTA3Mzc0MTgyNCAqKVxuICBsZXQgYml0cyBzID1cbiAgICBzLmlkeCA8LSAocy5pZHggKyAxKSBtb2QgNTU7XG4gICAgbGV0IGN1cnZhbCA9IHMuc3QuKHMuaWR4KSBpblxuICAgIGxldCBuZXd2YWwgPSBzLnN0Ligocy5pZHggKyAyNCkgbW9kIDU1KVxuICAgICAgICAgICAgICAgICArIChjdXJ2YWwgbHhvciAoKGN1cnZhbCBsc3IgMjUpIGxhbmQgMHgxRikpIGluXG4gICAgbGV0IG5ld3ZhbDMwID0gbmV3dmFsIGxhbmQgMHgzRkZGRkZGRiBpbiAgKCogUFIjNTU3NSAqKVxuICAgIHMuc3QuKHMuaWR4KSA8LSBuZXd2YWwzMDtcbiAgICBuZXd2YWwzMFxuXG5cbiAgbGV0IHJlYyBpbnRhdXggcyBuID1cbiAgICBsZXQgciA9IGJpdHMgcyBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gMHgzRkZGRkZGRiAtIG4gKyAxIHRoZW4gaW50YXV4IHMgbiBlbHNlIHZcblxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50YXV4IHMgYm91bmRcblxuICBsZXQgcmVjIGludDYzYXV4IHMgbiA9XG4gICAgbGV0IG1heF9pbnRfMzIgPSAoMSBsc2wgMzApICsgMHgzRkZGRkZGRiBpbiAoKiAweDdGRkZGRkZGICopXG4gICAgbGV0IGIxID0gYml0cyBzIGluXG4gICAgbGV0IGIyID0gYml0cyBzIGluXG4gICAgbGV0IChyLCBtYXhfaW50KSA9XG4gICAgICBpZiBuIDw9IG1heF9pbnRfMzIgdGhlblxuICAgICAgICAoKiAzMSByYW5kb20gYml0cyBvbiBib3RoIDY0LWJpdCBPQ2FtbCBhbmQgSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDE1IGJpdHMgb2YgYjEgYW5kIDE2IGJpdHMgb2YgYjIuICopXG4gICAgICAgIGxldCBicG9zID1cbiAgICAgICAgICAoKChiMiBsYW5kIDB4M0ZGRkMwMDApIGxzbCAxKSBsb3IgKGIxIGxzciAxNSkpXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnRfMzIpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiMyA9IGJpdHMgcyBpblxuICAgICAgICAoKiA2MiByYW5kb20gYml0cyBvbiA2NC1iaXQgT0NhbWw7IHVucmVhY2hhYmxlIG9uIEphdmFTY3JpcHQuXG4gICAgICAgICAgIFVzZSB1cHBlciAyMCBiaXRzIG9mIGIxIGFuZCAyMSBiaXRzIG9mIGIyIGFuZCBiMy4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKChiMyBsYW5kIDB4M0ZGRkZFMDApIGxzbCAxMikgbG9yIChiMiBsc3IgOSkpIGxzbCAyMClcbiAgICAgICAgICAgIGxvciAoYjEgbHNyIDEwKVxuICAgICAgICBpblxuICAgICAgICAgIChicG9zLCBtYXhfaW50KVxuICAgIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiBtYXhfaW50IC0gbiArIDEgdGhlbiBpbnQ2M2F1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgIGVsc2UgaWYgYm91bmQgPiAweDNGRkZGRkZGIHRoZW5cbiAgICAgIGludDYzYXV4IHMgYm91bmRcbiAgICBlbHNlXG4gICAgICBpbnRhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDMyLm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCAoYml0cyBzIGxhbmQgMSkpIDMwIGluXG4gICAgbGV0IHIgPSBJbnQzMi5sb2dvciBiMSBiMiBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgIGlmIEludDMyLnN1YiByIHYgPiBJbnQzMi5hZGQgKEludDMyLnN1YiBJbnQzMi5tYXhfaW50IG4pIDFsXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuXG4gIGxldCByZWMgaW50NjRhdXggcyBuID1cbiAgICBsZXQgYjEgPSBJbnQ2NC5vZl9pbnQgKGJpdHMgcykgaW5cbiAgICBsZXQgYjIgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcykpIDMwIGluXG4gICAgbGV0IGIzID0gSW50NjQuc2hpZnRfbGVmdCAoSW50NjQub2ZfaW50IChiaXRzIHMgbGFuZCA3KSkgNjAgaW5cbiAgICBsZXQgciA9IEludDY0LmxvZ29yIGIxIChJbnQ2NC5sb2dvciBiMiBiMykgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICBpZiBJbnQ2NC5zdWIgciB2ID4gSW50NjQuYWRkIChJbnQ2NC5zdWIgSW50NjQubWF4X2ludCBuKSAxTFxuICAgIHRoZW4gaW50NjRhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDY0IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBMXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NFwiXG4gICAgZWxzZSBpbnQ2NGF1eCBzIGJvdW5kXG5cblxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cblxuICAoKiBSZXR1cm5zIGEgZmxvYXQgMCA8PSB4IDw9IDEgd2l0aCBhdCBtb3N0IDYwIGJpdHMgb2YgcHJlY2lzaW9uLiAqKVxuICBsZXQgcmF3ZmxvYXQgcyA9XG4gICAgbGV0IHNjYWxlID0gMTA3Mzc0MTgyNC4wICAoKiAyXjMwICopXG4gICAgYW5kIHIxID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgYW5kIHIyID0gU3RkbGliLmZsb2F0IChiaXRzIHMpXG4gICAgaW4gKHIxIC8uIHNjYWxlICsuIHIyKSAvLiBzY2FsZVxuXG5cbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgbGV0IGJvb2wgcyA9IChiaXRzIHMgbGFuZCAxID0gMClcblxuICBsZXQgYml0czMyIHMgPVxuICAgIGxldCBiMSA9IEludDMyLihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDE0KSBpbiAgKCogMTYgYml0cyAqKVxuICAgIGxldCBiMiA9IEludDMyLihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDE0KSBpbiAgKCogMTYgYml0cyAqKVxuICAgIEludDMyLihsb2dvciBiMSAoc2hpZnRfbGVmdCBiMiAxNikpXG5cbiAgbGV0IGJpdHM2NCBzID1cbiAgICBsZXQgYjEgPSBJbnQ2NC4oc2hpZnRfcmlnaHRfbG9naWNhbCAob2ZfaW50IChiaXRzIHMpKSA5KSBpbiAgKCogMjEgYml0cyAqKVxuICAgIGxldCBiMiA9IEludDY0LihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDkpIGluICAoKiAyMSBiaXRzICopXG4gICAgbGV0IGIzID0gSW50NjQuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgOCkgaW4gICgqIDIyIGJpdHMgKilcbiAgICBJbnQ2NC4obG9nb3IgYjEgKGxvZ29yIChzaGlmdF9sZWZ0IGIyIDIxKSAoc2hpZnRfbGVmdCBiMyA0MikpKVxuXG4gIGxldCBuYXRpdmViaXRzID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGJpdHMzMiBzKVxuICAgIGVsc2UgZnVuIHMgLT4gSW50NjQudG9fbmF0aXZlaW50IChiaXRzNjQgcylcblxuZW5kXG5cbigqIFRoaXMgaXMgdGhlIHN0YXRlIHlvdSBnZXQgd2l0aCBbaW5pdCAyNzE4MjgxOF0gYW5kIHRoZW4gYXBwbHlpbmdcbiAgIHRoZSBcImxhbmQgMHgzRkZGRkZGRlwiIGZpbHRlciB0byB0aGVtLiAgU2VlICM1NTc1LCAjNTc5MywgIzU5NzcuICopXG5sZXQgZGVmYXVsdCA9IHtcbiAgU3RhdGUuc3QgPSBbfFxuICAgICAgMHgzYWUyNTIyYjsgMHgxZDhkNDYzNDsgMHgxNWI0ZmFkMDsgMHgxOGIxNGFjZTsgMHgxMmY4YTNjNDsgMHgzYjA4NmM0NztcbiAgICAgIDB4MTZkNDY3ZDY7IDB4MTAxZDkxYzc7IDB4MzIxZGYxNzc7IDB4MDE3NmMxOTM7IDB4MWZmNzJiZjE7IDB4MWU4ODkxMDk7XG4gICAgICAweDBiNDY0YjE4OyAweDJiODZiOTdjOyAweDA4OTFkYTQ4OyAweDAzMTM3NDYzOyAweDA4NWFjNWExOyAweDE1ZDYxZjJmO1xuICAgICAgMHgzYmNlZDM1OTsgMHgyOWMxYzEzMjsgMHgzYTg2NzY2ZTsgMHgzNjZkOGM4NjsgMHgxZjViNjIyMjsgMHgzY2UxYjU5ZjtcbiAgICAgIDB4MmViZjc4ZTE7IDB4MjdjZDFiODY7IDB4MjU4ZjNkYzM7IDB4Mzg5YTgxOTQ7IDB4MDJlNGM0NGM7IDB4MThjNDNmN2Q7XG4gICAgICAweDBmNmU1MzRmOyAweDFlN2RmMzU5OyAweDA1NWQwYjdlOyAweDEwZTg0ZTdlOyAweDEyNjE5OGU0OyAweDBlNzcyMmNiO1xuICAgICAgMHgxY2JlZGUyODsgMHgzMzkxYjk2NDsgMHgzZDQwZTkyYTsgMHgwYzU5OTMzZDsgMHgwYjhjZDBiNzsgMHgyNGVmZmYxYztcbiAgICAgIDB4MjgwM2ZkYWE7IDB4MDhlYmM3MmU7IDB4MGY1MjJlMzI7IDB4MDUzOThlZGM7IDB4MjE0NGEwNGM7IDB4MGFlZjNjYmQ7XG4gICAgICAweDAxYWQ0NzE5OyAweDM1YjkzY2Q2OyAweDJhNTU5ZDRmOyAweDFlNmZkNzY4OyAweDI2ZTI3ZjM2OyAweDE4NmYxOGMzO1xuICAgICAgMHgyZmJmOTY3YTtcbiAgICB8XTtcbiAgU3RhdGUuaWR4ID0gMDtcbn1cblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIGRlZmF1bHRcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgZGVmYXVsdCBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgZGVmYXVsdCBib3VuZFxubGV0IGludDMyIGJvdW5kID0gU3RhdGUuaW50MzIgZGVmYXVsdCBib3VuZFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCBkZWZhdWx0IGJvdW5kXG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCBkZWZhdWx0IHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgZGVmYXVsdFxubGV0IGJpdHMzMiAoKSA9IFN0YXRlLmJpdHMzMiBkZWZhdWx0XG5sZXQgYml0czY0ICgpID0gU3RhdGUuYml0czY0IGRlZmF1bHRcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyBkZWZhdWx0XG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IHNlZWRcbmxldCBpbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IGRlZmF1bHRcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiBkZWZhdWx0IHNcblxuKCoqKioqKioqKioqKioqKioqKioqXG5cbigqIFRlc3QgZnVuY3Rpb25zLiAgTm90IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5LlxuICAgVGhlIFtjaGlzcXVhcmVdIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBuID4gMTByLlxuICAgSXQgcmV0dXJucyBhIHRyaXBsZSAobG93LCBhY3R1YWwsIGhpZ2gpLlxuICAgSWYgbG93IDw9IGFjdHVhbCA8PSBoaWdoLCB0aGUgW2ddIGZ1bmN0aW9uIHBhc3NlZCB0aGUgdGVzdCxcbiAgIG90aGVyd2lzZSBpdCBmYWlsZWQuXG5cbiAgU29tZSByZXN1bHRzOlxuXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDUwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI5OTc5MjY0MzsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAxNDE0MjEzNjsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMjQ7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAwOyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMjQ7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDE0MTQyMTM2OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMjk5NzkyNjQzOyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbi0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTk3LjUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4OS43NDAwMDAwMDAwMDUyMzg3LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDQ4NTguNTc4NjQzNzYyNjksIDUwNDUuNSwgNTE0MS40MjEzNTYyMzczMSlcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9XG4oOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTQ0LjgwNTk5OTk5OTk4MjMwNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDE5LjE5NzQ0MDAwMDAwMzU1LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU5LjMxNzc2MDAwMDAwNTM2LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDM5Ljk4NDYzOTk5OTk5NTEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU0LjM4MjA3OTk5OTk5NTc3LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDkwLjA5NjAwMDAwMDAwNSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDc2Ljc4NzIwMDAwMDAwNjEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjE3NjAwMDAwMDAwNjc1MjEsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4yMTYwMDAwMDAwMDAzNDkyLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODAuNjIyMDAwMDAwMDAzMDI2OCwgMTIwLilcblxuKilcblxuKCogUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHNxdWFyZXMgb2YgdltpMCxpMVsgKilcbmxldCByZWMgc3Vtc3EgdiBpMCBpMSA9XG4gIGlmIGkwID49IGkxIHRoZW4gMC4wXG4gIGVsc2UgaWYgaTEgPSBpMCArIDEgdGhlbiBTdGRsaWIuZmxvYXQgdi4oaTApICouIFN0ZGxpYi5mbG9hdCB2LihpMClcbiAgZWxzZSBzdW1zcSB2IGkwICgoaTAraTEpLzIpICsuIHN1bXNxIHYgKChpMCtpMSkvMikgaTFcblxuXG5sZXQgY2hpc3F1YXJlIGcgbiByID1cbiAgaWYgbiA8PSAxMCAqIHIgdGhlbiBpbnZhbGlkX2FyZyBcImNoaXNxdWFyZVwiO1xuICBsZXQgZiA9IEFycmF5Lm1ha2UgciAwIGluXG4gIGZvciBpID0gMSB0byBuIGRvXG4gICAgbGV0IHQgPSBnIHIgaW5cbiAgICBmLih0KSA8LSBmLih0KSArIDFcbiAgZG9uZTtcbiAgbGV0IHQgPSBzdW1zcSBmIDAgclxuICBhbmQgciA9IFN0ZGxpYi5mbG9hdCByXG4gIGFuZCBuID0gU3RkbGliLmZsb2F0IG4gaW5cbiAgbGV0IHNyID0gMi4wICouIHNxcnQgciBpblxuICAociAtLiBzciwgICAociAqLiB0IC8uIG4pIC0uIG4sICAgciArLiBzcilcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIGxpbmVhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbSBudW1iZXJzLlxuKilcbmxldCBzdCA9IHJlZiAwXG5sZXQgaW5pdF9kaWZmIHIgPSBzdCA6PSBpbnQgclxubGV0IGRpZmYgciA9XG4gIGxldCB4MSA9ICFzdFxuICBhbmQgeDIgPSBpbnQgclxuICBpblxuICBzdCA6PSB4MjtcbiAgaWYgeDEgPj0geDIgdGhlblxuICAgIHgxIC0geDJcbiAgZWxzZVxuICAgIHIgKyB4MSAtIHgyXG5cblxubGV0IHN0MSA9IHJlZiAwXG5hbmQgc3QyID0gcmVmIDBcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIHF1YWRyYXRpYyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbVxuICAgbnVtYmVycy5cbiopXG5sZXQgaW5pdF9kaWZmMiByID0gc3QxIDo9IGludCByOyBzdDIgOj0gaW50IHJcbmxldCBkaWZmMiByID1cbiAgbGV0IHgxID0gIXN0MVxuICBhbmQgeDIgPSAhc3QyXG4gIGFuZCB4MyA9IGludCByXG4gIGluXG4gIHN0MSA6PSB4MjtcbiAgc3QyIDo9IHgzO1xuICAoeDMgLSB4MiAtIHgyICsgeDEgKyAyKnIpIG1vZCByXG5cblxuKioqKioqKioqKioqKioqKioqKiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXQgcmVjIGluaXRfdGFpbHJlY19hdXggYWNjIGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gYWNjXG4gIGVsc2UgaW5pdF90YWlscmVjX2F1eCAoZiBpIDo6IGFjYykgKGkrMSkgbiBmXG5cbmxldCByZWMgaW5pdF9hdXggaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHIgPSBmIGkgaW5cbiAgICByIDo6IGluaXRfYXV4IChpKzEpIG4gZlxuXG5sZXQgcmV2X2luaXRfdGhyZXNob2xkID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxMF8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQnc1xuICAgICBzbWFsbC4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaWYgbGVuID4gcmV2X2luaXRfdGhyZXNob2xkIHRoZW4gcmV2IChpbml0X3RhaWxyZWNfYXV4IFtdIDAgbGVuIGYpXG4gIGVsc2UgaW5pdF9hdXggMCBsZW4gZlxuXG5sZXQgcmVjIGZsYXR0ZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgbDo6ciAtPiBsIEAgZmxhdHRlbiByXG5cbmxldCBjb25jYXQgPSBmbGF0dGVuXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgYSBpbiByIDo6IG1hcCBmIGxcblxubGV0IHJlYyBtYXBpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBpIGEgaW4gciA6OiBtYXBpIChpICsgMSkgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0IHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGxldCByID0gZiBhMSBhMiBpbiByIDo6IG1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfYWxsIHAgPVxuICBsZXQgcmVjIGZpbmQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY3VcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gZmluZCAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCBhY2N1IGwgaW5cbiAgZmluZCBbXVxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0IGZpbHRlcmkgcCBsID1cbiAgbGV0IHJlYyBhdXggaSBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2NcbiAgfCB4OjpsIC0+IGF1eCAoaSArIDEpIChpZiBwIGkgeCB0aGVuIHg6OmFjYyBlbHNlIGFjYykgbFxuICBpblxuICBhdXggMCBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwIGYgPVxuICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCBhY2N1IGxcbiAgICAgICAgfCBTb21lIHYgLT4gYXV4ICh2IDo6IGFjY3UpIGxcbiAgaW5cbiAgYXV4IFtdXG5cbmxldCBjb25jYXRfbWFwIGYgbCA9XG4gIGxldCByZWMgYXV4IGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgIGxldCB4cyA9IGYgeCBpblxuICAgICAgIGF1eCBmIChyZXZfYXBwZW5kIHhzIGFjYykgbFxuICBpbiBhdXggZiBbXSBsXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgbGlzdCBvZiBsZW5ndGggYmV0d2VlbiBhYm91dCAxMDAwMDAgKGRlcGVuZGluZyBvbiB0aGUgbWlub3JcbiAgIGhlYXAgc2l6ZSBhbmQgdGhlIHR5cGUgb2YgdGhlIGxpc3QpIGFuZCBTeXMubWF4X2FycmF5X3NpemUsIGl0IGlzXG4gICBhY3R1YWxseSBmYXN0ZXIgdG8gdXNlIHRoZSBmb2xsb3dpbmcsIGJ1dCBpdCBtaWdodCBhbHNvIHVzZSBtb3JlIG1lbW9yeVxuICAgYmVjYXVzZSB0aGUgYXJndW1lbnQgbGlzdCBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQgaW5jcmVtZW50YWxseS5cblxuICAgQWxzbywgdGhlcmUgc2VlbXMgdG8gYmUgYSBidWcgaW4gdGhpcyBjb2RlIG9yIGluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2Ygb2JqX3RydW5jYXRlLlxuXG5leHRlcm5hbCBvYmpfdHJ1bmNhdGUgOiAnYSBhcnJheSAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuXG5sZXQgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgYWNjdSBuIHAgPVxuICAgIGlmIHAgPD0gMCB0aGVuIGFjY3UgZWxzZSBiZWdpblxuICAgICAgaWYgcCA9IG4gdGhlbiBiZWdpblxuICAgICAgICBvYmpfdHJ1bmNhdGUgYSBwO1xuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIChuLTEwMDApIChwLTEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIG4gKHAtMSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpblxuICBsb29wIFtdIChsLTEwMDApIGxcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICBBcnJheS5zdGFibGVfc29ydCBjbXAgYTtcbiAgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhXG5cbiopXG5cblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG47O1xuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuOztcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IHJlYyBkaXJlY3QgZGVwdGggc2VxIDogXyBsaXN0ID1cbiAgICBpZiBkZXB0aD0wXG4gICAgdGhlblxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gc2VxXG4gICAgICB8PiByZXYgKCogdGFpbHJlYyAqKVxuICAgIGVsc2UgbWF0Y2ggc2VxKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFtdXG4gICAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPiB4IDo6IGRpcmVjdCAoZGVwdGgtMSkgbmV4dFxuICBpblxuICBkaXJlY3QgNTAwIHNlcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbl9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9pbl9iaW5cbmxldCBvcGVuX3RleHQgPSBTdGRsaWIub3Blbl9pblxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5faW5fZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgaWMgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2VfaW5fbm9lcnIgaWMpXG4gICAgKGZ1biAoKSAtPiBmIGljKVxuXG5sZXQgd2l0aF9vcGVuX2JpbiBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW5fYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luIHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIHBlcm0pIHMgZlxuXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX2luXG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2VfaW5fbm9lcnJcblxubGV0IGlucHV0X2NoYXIgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gIHwgYyAtPiBTb21lIGNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfYnl0ZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9ieXRlIGljIHdpdGhcbiAgfCBuIC0+IFNvbWUgblxuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9saW5lIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2xpbmUgaWMgd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0ID0gU3RkbGliLmlucHV0XG5cbmxldCByZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuIHdpdGhcbiAgfCAoKSAtPiBTb21lICgpXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbigqIFJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgaW50byBbYnVmXSwgc3RhcnRpbmcgYXQgW29mc10uIFJldHVybiB0b3RhbCBieXRlc1xuICAgcmVhZC4gKilcbmxldCByZWFkX3VwdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3Agb2ZzIGxlbiA9XG4gICAgaWYgbGVuID0gMCB0aGVuIG9mc1xuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gU3RkbGliLmlucHV0IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgICBpZiByID0gMCB0aGVuXG4gICAgICAgIG9mc1xuICAgICAgZWxzZVxuICAgICAgICBsb29wIChvZnMgKyByKSAobGVuIC0gcilcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBvZnMgbGVuIC0gb2ZzXG5cbigqIEJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gcmV0dXJuIGEgYnVmZmVyIHdpdGggPj0gKG9mcyArIG4pIGJ5dGVzIG9mIHN0b3JhZ2UsXG4gICBhbmQgc3VjaCB0aGF0IGl0IGNvaW5jaWRlcyB3aXRoIFtidWZdIGF0IGluZGljZXMgPCBbb2ZzXS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBlcXVhbCB0byBbYnVmXSBpdHNlbGYgaWYgaXQgYWxyZWFkeSBoYXMgc3VmZmljaWVudFxuICAgZnJlZSBzcGFjZS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtYXkgaGF2ZSAqZmV3ZXIqIHRoYW4gW29mcyArIG5dIGJ5dGVzIG9mIHN0b3JhZ2UgaWYgdGhpc1xuICAgbnVtYmVyIGlzID4gW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0uIEhvd2V2ZXIgdGhlIHJldHVybmVkIGJ1ZmZlciB3aWxsXG4gICAqYWx3YXlzKiBoYXZlID4gW29mc10gYnl0ZXMgb2Ygc3RvcmFnZS4gSW4gdGhlIGxpbWl0aW5nIGNhc2Ugd2hlbiBbb2ZzID0gbGVuXG4gICA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKHNvIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlc2l6ZSB0aGUgYnVmZmVyIGF0XG4gICBhbGwpLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxuXG5sZXQgZW5zdXJlIGJ1ZiBvZnMgbiA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA+PSBvZnMgKyBuIHRoZW4gYnVmXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbmV3X2xlbiA9IHJlZiBsZW4gaW5cbiAgICB3aGlsZSAhbmV3X2xlbiA8IG9mcyArIG4gZG9cbiAgICAgIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuICsgMVxuICAgIGRvbmU7XG4gICAgbGV0IG5ld19sZW4gPSAhbmV3X2xlbiBpblxuICAgIGxldCBuZXdfbGVuID1cbiAgICAgIGlmIG5ld19sZW4gPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgbmV3X2xlblxuICAgICAgZWxzZSBpZiBvZnMgPCBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgZmFpbHdpdGggXCJJbl9jaGFubmVsLmlucHV0X2FsbDogY2hhbm5lbCBjb250ZW50IFxcXG4gICAgICAgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIHN0cmluZyBsZW5ndGhcIlxuICAgIGluXG4gICAgbGV0IG5ld19idWYgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmIDAgbmV3X2J1ZiAwIG9mcztcbiAgICBuZXdfYnVmXG4gIGVuZFxuXG5sZXQgaW5wdXRfYWxsIGljID1cbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpbiAoKiBJT19CVUZGRVJfU0laRSAqKVxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBvdXRfY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRvdXQgPSBTdGRsaWIuc3Rkb3V0XG5sZXQgc3RkZXJyID0gU3RkbGliLnN0ZGVyclxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5fb3V0X2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX291dFxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5fb3V0X2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IG9jID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX291dF9ub2VyciBvYylcbiAgICAoZnVuICgpIC0+IGYgb2MpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXRfYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dCBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBTdGRsaWIuZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBTdGRsaWIub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IFN0ZGxpYi5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBTdGRsaWIub3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3Vic3RyaW5nXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcblxuZXh0ZXJuYWwgc2V0X2J1ZmZlcmVkIDogdCAtPiBib29sIC0+IHVuaXQgPSBcImNhbWxfbWxfc2V0X2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNfYnVmZmVyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYnVmZmVyZWRcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZzogc3RyaW5nIC0+IG5hdGl2ZWludCA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2V0X3RhZyA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3NldF90YWdcIlxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0NVxuXG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcbmxldCBmaW5hbF90YWcgPSBjdXN0b21fdGFnXG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbmxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsXG5sZXQgZXh0ZW5zaW9uX25hbWUgPSBFeHRlbnNpb25fY29uc3RydWN0b3IubmFtZVxubGV0IGV4dGVuc2lvbl9pZCA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiOztcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEludGVybmFscyBvZiBmb3JjaW5nIGxhenkgdmFsdWVzLiAqKVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuXG5sZXQgcmFpc2VfdW5kZWZpbmVkID0gT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBVbmRlZmluZWQpXG5cbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6IE9iai50IC0+IE9iai50IC0+IHVuaXQgPSBcImNhbWxfb2JqX21ha2VfZm9yd2FyZFwiXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgKE9iai5yZXByIGJsaykgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCByYWlzZV91bmRlZmluZWQ7XG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICAgIHJlc3VsdFxuICB3aXRoIGUgLT5cbiAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJhaXNlIGVcblxuXG4oKiBBc3N1bWUgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBsYXp5ICopXG5sZXQgZm9yY2VfdmFsX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgbWFrZV9mb3J3YXJkIChPYmoucmVwciBibGspIChPYmoucmVwciByZXN1bHQpO1xuICByZXN1bHRcblxuXG4oKiBbZm9yY2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXMgZGVjbGFyZWQgYXMgYSBwcmltaXRpdmVcbiAgIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0cyBhcmd1bWVudCwgZXhjZXB0IHdoZW4gYWZsXG4gICBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxuXG5sZXQgZm9yY2UgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0cyB0YWcgY291bGQgaGF2ZVxuICAgICAgIGNoYW5nZWQgZHVyaW5nIEdDLCBzbyB0aGF0IGluZm9ybWF0aW9uIG11c3QgYmUgZm9yZ290dGVuIChzZWUgR1BSIzcxM1xuICAgICAgIGFuZCBpc3N1ZSAjNzMwMSlcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfbGF6eV9ibG9jayBsenZcblxuXG5sZXQgZm9yY2VfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW4gKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZykgZWxzZVxuICBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX3ZhbF9sYXp5X2Jsb2NrIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogJ2EgLT4gJ2EgbGF6eV90ID0gXCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkXCJcblxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cblxubGV0IGZvcmNlX3ZhbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfdmFsXG5cbmxldCBmcm9tX2Z1biAoZiA6IHVuaXQgLT4gJ2FyZykgPVxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmxhenlfdGFnIDEgaW5cbiAgT2JqLnNldF9maWVsZCB4IDAgKE9iai5yZXByIGYpO1xuICAoT2JqLm9iaiB4IDogJ2FyZyB0KVxuXG5sZXQgZnJvbV92YWwgKHYgOiAnYXJnKSA9XG4gIGxldCB0ID0gT2JqLnRhZyAoT2JqLnJlcHIgdikgaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB8fCB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5cbmxldCBpc192YWwgKGwgOiAnYXJnIHQpID0gT2JqLnRhZyAoT2JqLnJlcHIgbCkgPD4gT2JqLmxhenlfdGFnXG5cbmxldCBsYXp5X2Zyb21fZnVuID0gZnJvbV9mdW5cblxubGV0IGxhenlfZnJvbV92YWwgPSBmcm9tX3ZhbFxuXG5sZXQgbGF6eV9pc192YWwgPSBpc192YWxcblxuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGxhenlfZnJvbV92YWwgKGYgKGZvcmNlIHgpKVxuICBlbHNlIGxhenkgKGYgKGZvcmNlIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKGYgeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICAgIHwgU29tZSB5IC0+IENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGlmIGYgeFxuICAgICAgdGhlbiBDb25zICh4LCBmaWx0ZXIgZiBuZXh0KVxuICAgICAgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5cbmxldCByZWMgY29uY2F0IHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgIGFwcGVuZCB4IChjb25jYXQgbmV4dCkgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgYXBwZW5kIChmIHgpIChmbGF0X21hcCBmIG5leHQpICgpXG5cbmxldCBjb25jYXRfbWFwID0gZmxhdF9tYXBcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGZvbGRfbGVmdCBmIGFjYyBuZXh0XG5cbmxldCByZWMgaXRlciBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgaXRlciBmIG5leHRcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IE5pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBDb25zICh4LCB1bmZvbGQgZiB1JylcblxubGV0IGlzX2VtcHR5IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoXywgXykgLT5cbiAgICAgIGZhbHNlXG5cbmxldCB1bmNvbnMgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIFNvbWUgKHgsIHhzKVxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuXG5cblxubGV0IHJlYyBsZW5ndGhfYXV4IGFjY3UgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxlbmd0aF9hdXggKGFjY3UgKyAxKSB4c1xuXG5sZXRbQGlubGluZV0gbGVuZ3RoIHhzID1cbiAgbGVuZ3RoX2F1eCAwIHhzXG5cbmxldCByZWMgaXRlcmlfYXV4IGYgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGYgaSB4O1xuICAgICAgaXRlcmlfYXV4IGYgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGl0ZXJpIGYgeHMgPVxuICBpdGVyaV9hdXggZiAwIHhzXG5cbmxldCByZWMgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGkgeCBpblxuICAgICAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBmb2xkX2xlZnRpIGYgYWNjdSB4cyA9XG4gIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAwIHhzXG5cbmxldCByZWMgZm9yX2FsbCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBwIHggJiYgZm9yX2FsbCBwIHhzXG5cbmxldCByZWMgZXhpc3RzIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBwIHggfHwgZXhpc3RzIHAgeHNcblxubGV0IHJlYyBmaW5kIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmQgcCB4c1xuXG5sZXQgcmVjIGZpbmRfbWFwIGYgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBmaW5kX21hcCBmIHhzXG4gICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXN1bHRcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBDYW1saW50ZXJuYWxBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBDYW1saW50ZXJuYWxBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+ZGVmYXVsdCA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGRlZmF1bHRcbmxldCBnZXRfb2sgPSBmdW5jdGlvbiBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIEVycm9yIF9cIlxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgYmluZCByIGYgPSBtYXRjaCByIHdpdGggT2sgdiAtPiBmIHYgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IGpvaW4gPSBmdW5jdGlvbiBPayByIC0+IHIgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcCBmID0gZnVuY3Rpb24gT2sgdiAtPiBPayAoZiB2KSB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBPayB2IC0+IGYgdiB8IEVycm9yIF8gLT4gKClcbmxldCBpdGVyX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGYgZSB8IE9rIF8gLT4gKClcbmxldCBpc19vayA9IGZ1bmN0aW9uIE9rIF8gLT4gdHJ1ZSB8IEVycm9yIF8gLT4gZmFsc2VcbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uIEVycm9yIF8gLT4gdHJ1ZSB8IE9rIF8gLT4gZmFsc2VcblxubGV0IGVxdWFsIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IF8sIF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgT2sgXywgRXJyb3IgXyAtPiAtMVxufCBFcnJvciBfLCBPayBfIC0+IDFcblxubGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uIE9rIHYgLT4gU29tZSB2IHwgRXJyb3IgXyAtPiBOb25lXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE9rIHYgLT4gW3ZdIHwgRXJyb3IgXyAtPiBbXVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE9rIHYgLT4gU2VxLnJldHVybiB2IHwgRXJyb3IgXyAtPiBTZXEuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gYm9vbCA9IGZhbHNlIHwgdHJ1ZVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5sZXQgZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuZXh0ZXJuYWwgdG9faW50IDogYm9vbCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvbiBmYWxzZSAtPiAwLiB8IHRydWUgLT4gMS5cblxuKCpcbmxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxufCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxufCBcInRydWVcIiAtPiBTb21lIHRydWVcbnwgXyAtPiBOb25lXG4qKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb24gZmFsc2UgLT4gXCJmYWxzZVwiIHwgdHJ1ZSAtPiBcInRydWVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgY2hyIG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJDaGFyLmNoclwiIGVsc2UgdW5zYWZlX2NociBuXG5cbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZTogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBieXRlc191bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgZXNjYXBlZCA9IGZ1bmN0aW9uXG4gIHwgJ1xcJycgLT4gXCJcXFxcJ1wiXG4gIHwgJ1xcXFwnIC0+IFwiXFxcXFxcXFxcIlxuICB8ICdcXG4nIC0+IFwiXFxcXG5cIlxuICB8ICdcXHQnIC0+IFwiXFxcXHRcIlxuICB8ICdcXHInIC0+IFwiXFxcXHJcIlxuICB8ICdcXGInIC0+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJ1xuICB8ICdcXDE5MicgLi4gJ1xcMjE0J1xuICB8ICdcXDIxNicgLi4gJ1xcMjIyJyBhcyBjIC0+XG4gICAgdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6J1xuICB8ICdcXDIyNCcgLi4gJ1xcMjQ2J1xuICB8ICdcXDI0OCcgLi4gJ1xcMjU0JyBhcyBjIC0+XG4gICAgdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIGNvcHkgcyBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgbG93ZXJjYXNlIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2Ugc1xuXG5sZXQgY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlIHNcbmxldCB1bmNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZSBzXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcbiAgZWxzZSBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHhcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeCBlbHNlXG4gIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuXG4oKiBVVEYgY29kZWNzIGFuZCB2YWxpZGF0aW9ucyAqKVxuXG5sZXQgZGVjX2ludmFsaWQgPSBVY2hhci51dGZfZGVjb2RlX2ludmFsaWRcbmxldFtAaW5saW5lXSBkZWNfcmV0IG4gdSA9IFVjaGFyLnV0Zl9kZWNvZGUgbiAoVWNoYXIudW5zYWZlX29mX2ludCB1KVxuXG4oKiBJbiBjYXNlIG9mIGRlY29kaW5nIGVycm9yLCBpZiB3ZSBlcnJvciBvbiB0aGUgZmlyc3QgYnl0ZSwgd2VcbiAgIGNvbnN1bWUgdGhlIGJ5dGUsIG90aGVyd2lzZSB3ZSBjb25zdW1lIHRoZSBbbl0gYnl0ZXMgcHJlY2VlZGluZ1xuICAgdGhlIGVycm9yaW5nIGJ5dGUuXG5cbiAgIFRoaXMgbWVhbnMgdGhhdCBpZiBhIGNsaWVudCB1c2VzIGRlY29kZXMgd2l0aG91dCBjYXJpbmcgYWJvdXRcbiAgIHZhbGlkaXR5IGl0IG5hdHVyYWxseSByZXBsYWNlIGJvZ3VzIGRhdGEgd2l0aCBVY2hhci5yZXAgYWNjb3JkaW5nXG4gICB0byB0aGUgV0hBVFdHIEVuY29kaW5nIHN0YW5kYXJkLiBPdGhlciBzY2hlbWVzIGFyZSBwb3NzaWJsZSBieVxuICAgY29uc3VsdGluZyB0aGUgbnVtYmVyIG9mIHVzZWQgYnl0ZXMgb24gaW52YWxpZCBkZWNvZGVzLiBGb3IgbW9yZVxuICAgZGV0YWlscyBzZWUgaHR0cHM6Ly9oc2l2b25lbi5maS9icm9rZW4tdXRmLTgvXG5cbiAgIEZvciB0aGlzIHJlYXNvbiBpbiBbZ2V0X3V0Zl84X3VjaGFyXSB3ZSBncmFkdWFsbHkgY2hlY2sgdGhlIG5leHRcbiAgIGJ5dGUgaXMgYXZhaWxhYmxlIHJhdGhlciB0aGFuIGRvaW5nIGl0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxuICAgZmlyc3QgYnl0ZS4gQ29udHJhc3Qgd2l0aCBbaXNfdmFsaWRfdXRmXzhdLiAqKVxuXG4oKiBVVEYtOCAqKVxuXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194QkYgYiA9IGIgbHNyIDYgPD4gMGIxMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94QTBfdG9feEJGIGIgPSBiIGxzciA1IDw+IDBiMTAxXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OUYgYiA9IGIgbHNyIDUgPD4gMGIxMDBcbmxldFtAaW5saW5lXSBub3RfaW5feDkwX3RvX3hCRiBiID0gYiA8IDB4OTAgfHwgMHhCRiA8IGJcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g4RiBiID0gYiBsc3IgNCA8PiAweDhcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzIgYjAgYjEgPVxuICAoKGIwIGxhbmQgMHgxRikgbHNsIDYpIGxvclxuICAoKGIxIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8zIGIwIGIxIGIyID1cbiAgKChiMCBsYW5kIDB4MEYpIGxzbCAxMikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgNikgbG9yXG4gICgoYjIgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMgPVxuICAoKGIwIGxhbmQgMHgwNykgbHNsIDE4KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCAxMikgbG9yXG4gICgoYjIgbGFuZCAweDNGKSBsc2wgNikgbG9yXG4gICgoYjMgbGFuZCAweDNGKSlcblxubGV0IGdldF91dGZfOF91Y2hhciBiIGkgPVxuICBsZXQgYjAgPSBnZXRfdWludDggYiBpIGluICgqIHJhaXNlcyBpZiBbaV0gaXMgbm90IGEgdmFsaWQgaW5kZXguICopXG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIGIwIHdpdGggKCogU2VlIFRoZSBVbmljb2RlIFN0YW5kYXJkLCBUYWJsZSAzLjcgKilcbiAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gZGVjX3JldCAxIGIwXG4gIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGRlY19yZXQgMiAodXRmXzhfdWNoYXJfMiBiMCBiMSlcbiAgfCAnXFx4RTAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3hBMF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RUQnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194OUYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhGMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDkwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCAnXFx4RjQnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194OEYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgXyAtPiBkZWNfaW52YWxpZCAxXG5cbmxldCBzZXRfdXRmXzhfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgICBzZXRfdWludDggYiBpIHU7XG4gICAgICAxXG4gIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhDMCBsb3IgKHUgbHNyIDYpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAyKVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4RTAgbG9yICh1IGxzciAxMikpO1xuICAgICAgIHNldCBiIChpICsgMSkgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMylcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4RjAgbG9yICh1IGxzciAxOCkpO1xuICAgICAgIHNldCBiIChpICsgMSkgKDB4ODAgbG9yICgodSBsc3IgMTIpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIChpICsgMikgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgNClcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzggYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgKGdldCBiIGkpIHdpdGhcbiAgICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBsb29wIG1heCBiIChpICsgMSlcbiAgICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94QTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFRCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDlGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEYwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g5MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g4RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG5cbigqIFVURi0xNkJFICopXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgYiBpID1cbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgaWYgaSA9IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19yZXQgMiB1XG4gIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZGVjX2ludmFsaWQgMlxuICB8IGhpIC0+ICgqIGNvbWJpbmUgW2hpXSB3aXRoIGEgbG93IHN1cnJvZ2F0ZSAqKVxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGRlY19pbnZhbGlkIChtYXggLSBpICsgMSkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZGVjX2ludmFsaWQgMiAoKiByZXRyeSBoZXJlICopXG4gICAgICB8IGxvIC0+XG4gICAgICAgICAgbGV0IHUgPSAoKChoaSBsYW5kIDB4M0ZGKSBsc2wgMTApIGxvciAobG8gbGFuZCAweDNGRikpICsgMHgxMDAwMCBpblxuICAgICAgICAgIGRlY19yZXQgNCB1XG5cbmxldCBzZXRfdXRmXzE2YmVfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZSAoc2V0IGIgaSB1OyAyKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICAgbGV0IGhpID0gKDB4RDgwMCBsb3IgKHUnIGxzciAxMCkpIGluXG4gICAgICBsZXQgbG8gPSAoMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikpIGluXG4gICAgICBzZXQgYiBpIGhpOyBzZXQgYiAoaSArIDIpIGxvOyA0XG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2JlIGluXG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGlmIGkgPSBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG5cbigqIFVURi0xNkxFICopXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgYiBpID1cbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgaWYgaSA9IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19yZXQgMiB1XG4gIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZGVjX2ludmFsaWQgMlxuICB8IGhpIC0+ICgqIGNvbWJpbmUgW2hpXSB3aXRoIGEgbG93IHN1cnJvZ2F0ZSAqKVxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGRlY19pbnZhbGlkIChtYXggLSBpICsgMSkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZGVjX2ludmFsaWQgMiAoKiByZXRyeSBoZXJlICopXG4gICAgICB8IGxvIC0+XG4gICAgICAgICAgbGV0IHUgPSAoKChoaSBsYW5kIDB4M0ZGKSBsc2wgMTApIGxvciAobG8gbGFuZCAweDNGRikpICsgMHgxMDAwMCBpblxuICAgICAgICAgIGRlY19yZXQgNCB1XG5cbmxldCBzZXRfdXRmXzE2bGVfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZSAoc2V0IGIgaSB1OyAyKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICAgbGV0IGhpID0gKDB4RDgwMCBsb3IgKHUnIGxzciAxMCkpIGluXG4gICAgICBsZXQgbG8gPSAoMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikpIGluXG4gICAgICBzZXQgYiBpIGhpOyBzZXQgYiAoaSArIDIpIGxvOyA0XG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2xlIGluXG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGlmIGkgPSBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgY29weSBzID1cbiAgQi5jb3B5IChib3MgcykgfD4gYnRzXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGZpbGwgPVxuICBCLmZpbGxcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgcmVjIGVzY2FwZV9pZl9uZWVkZWQgcyBuIGkgPVxuICAgIGlmIGkgPj0gbiB0aGVuIHMgZWxzZVxuICAgICAgbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFwwMDAnLi4nXFwwMzEnIHwgJ1xcMTI3Jy4uICdcXDI1NScgLT5cbiAgICAgICAgICBidHMgKEIuZXNjYXBlZCAoYm9zIHMpKVxuICAgICAgfCBfIC0+IGVzY2FwZV9pZl9uZWVkZWQgcyBuIChpKzEpXG4gIGluXG4gIGVzY2FwZV9pZl9uZWVkZWQgcyAobGVuZ3RoIHMpIDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPVxuICBCLnVwcGVyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZSBzID1cbiAgQi5sb3dlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplIHMgPVxuICBCLmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemUgcyA9XG4gIEIudW5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB1bml0ID0gKClcblxubGV0IGVxdWFsICgpICgpID0gdHJ1ZVxubGV0IGNvbXBhcmUgKCkgKCkgPSAwXG5sZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZXh0ZXJuX2ZsYWdzID1cbiAgICBOb19zaGFyaW5nXG4gIHwgQ2xvc3VyZXNcbiAgfCBDb21wYXRfMzJcbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAyMFxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxubGV0IG1ha2VfZmxvYXQgPSBjcmVhdGVfZmxvYXRcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgY3JlYXRlX21hdHJpeCA9IG1ha2VfbWF0cml4XG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbTogIGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIGNlbGwgb3B0aW9uXG5hbmQgJ2EgY2VsbCA9IHsgbXV0YWJsZSBjb3VudCA6IGludDsgbXV0YWJsZSBkYXRhIDogJ2EgZGF0YSB9XG5hbmQgJ2EgZGF0YSA9XG4gICAgU2VtcHR5XG4gIHwgU2NvbnMgb2YgJ2EgKiAnYSBkYXRhXG4gIHwgU2FwcCBvZiAnYSBkYXRhICogJ2EgZGF0YVxuICB8IFNsYXp5IG9mICdhIGRhdGEgTGF6eS50XG4gIHwgU2dlbiBvZiAnYSBnZW5cbiAgfCBTYnVmZmlvIDogYnVmZmlvIC0+IGNoYXIgZGF0YVxuYW5kICdhIGdlbiA9IHsgbXV0YWJsZSBjdXJyIDogJ2Egb3B0aW9uIG9wdGlvbjsgZnVuYyA6IGludCAtPiAnYSBvcHRpb24gfVxuYW5kIGJ1ZmZpbyA9XG4gIHsgaWMgOiBpbl9jaGFubmVsOyBidWZmIDogYnl0ZXM7IG11dGFibGUgbGVuIDogaW50OyBtdXRhYmxlIGluZCA6IGludCB9XG5cbmV4Y2VwdGlvbiBGYWlsdXJlXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBjb3VudCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSB7IGNvdW50IH0gLT4gY291bnRcbmxldCBkYXRhID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFNlbXB0eVxuICB8IFNvbWUgeyBkYXRhIH0gLT4gZGF0YVxuXG5sZXQgZmlsbF9idWZmIGIgPVxuICBiLmxlbiA8LSBpbnB1dCBiLmljIGIuYnVmZiAwIChCeXRlcy5sZW5ndGggYi5idWZmKTsgYi5pbmQgPC0gMFxuXG5cbmxldCByZWMgZ2V0X2RhdGEgOiB0eXBlIHYuIGludCAtPiB2IGRhdGEgLT4gdiBkYXRhID0gZnVuIGNvdW50IGQgLT4gbWF0Y2ggZCB3aXRoXG4gKCogUmV0dXJucyBlaXRoZXIgU2VtcHR5IG9yIFNjb25zKGEsIF8pIGV2ZW4gd2hlbiBkIGlzIGEgZ2VuZXJhdG9yXG4gICAgb3IgYSBidWZmZXIuIEluIHRob3NlIGNhc2VzLCB0aGUgaXRlbSBhIGlzIHNlZW4gYXMgZXh0cmFjdGVkIGZyb21cbiB0aGUgZ2VuZXJhdG9yL2J1ZmZlci5cbiBUaGUgY291bnQgcGFyYW1ldGVyIGlzIHVzZWQgZm9yIGNhbGxpbmcgYFNnZW4tZnVuY3Rpb25zJy4gICopXG4gICBTZW1wdHkgfCBTY29ucyAoXywgXykgLT4gZFxuIHwgU2FwcCAoZDEsIGQyKSAtPlxuICAgICBiZWdpbiBtYXRjaCBnZXRfZGF0YSBjb3VudCBkMSB3aXRoXG4gICAgICAgU2NvbnMgKGEsIGQxMSkgLT4gU2NvbnMgKGEsIFNhcHAgKGQxMSwgZDIpKVxuICAgICB8IFNlbXB0eSAtPiBnZXRfZGF0YSBjb3VudCBkMlxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgIGVuZFxuIHwgU2dlbiB7Y3VyciA9IFNvbWUgTm9uZX0gLT4gU2VtcHR5XG4gfCBTZ2VuICh7Y3VyciA9IFNvbWUoU29tZSBhKX0gYXMgZykgLT5cbiAgICAgZy5jdXJyIDwtIE5vbmU7IFNjb25zKGEsIGQpXG4gfCBTZ2VuIGcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZy5mdW5jIGNvdW50IHdpdGhcbiAgICAgICBOb25lIC0+IGcuY3VyciA8LSBTb21lKE5vbmUpOyBTZW1wdHlcbiAgICAgfCBTb21lIGEgLT4gU2NvbnMoYSwgZClcbiAgICAgICAgICgqIFdhcm5pbmc6IGFueW9uZSB1c2luZyBnIHRoaW5rcyB0aGF0IGFuIGl0ZW0gaGFzIGJlZW4gcmVhZCAqKVxuICAgICBlbmRcbiB8IFNidWZmaW8gYiAtPlxuICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gU2VtcHR5IGVsc2VcbiAgICAgICBsZXQgciA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmIGIuaW5kIGluXG4gICAgICAgKCogV2FybmluZzogYW55b25lIHVzaW5nIGcgdGhpbmtzIHRoYXQgYW4gaXRlbSBoYXMgYmVlbiByZWFkICopXG4gICAgICAgYi5pbmQgPC0gc3VjYyBiLmluZDsgU2NvbnMociwgZClcbiB8IFNsYXp5IGYgLT4gZ2V0X2RhdGEgY291bnQgKExhenkuZm9yY2UgZilcblxuXG5sZXQgcmVjIHBlZWtfZGF0YSA6IHR5cGUgdi4gdiBjZWxsIC0+IHYgb3B0aW9uID0gZnVuIHMgLT5cbiAoKiBjb25zdWx0IHRoZSBmaXJzdCBpdGVtIG9mIHMgKilcbiBtYXRjaCBzLmRhdGEgd2l0aFxuICAgU2VtcHR5IC0+IE5vbmVcbiB8IFNjb25zIChhLCBfKSAtPiBTb21lIGFcbiB8IFNhcHAgKF8sIF8pIC0+XG4gICAgIGJlZ2luIG1hdGNoIGdldF9kYXRhIHMuY291bnQgcy5kYXRhIHdpdGhcbiAgICAgICBTY29ucyhhLCBfKSBhcyBkIC0+IHMuZGF0YSA8LSBkOyBTb21lIGFcbiAgICAgfCBTZW1wdHkgLT4gTm9uZVxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgIGVuZFxuIHwgU2xhenkgZiAtPiBzLmRhdGEgPC0gKExhenkuZm9yY2UgZik7IHBlZWtfZGF0YSBzXG4gfCBTZ2VuIHtjdXJyID0gU29tZSBhfSAtPiBhXG4gfCBTZ2VuIGcgLT4gbGV0IHggPSBnLmZ1bmMgcy5jb3VudCBpbiBnLmN1cnIgPC0gU29tZSB4OyB4XG4gfCBTYnVmZmlvIGIgLT5cbiAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIGJlZ2luIHMuZGF0YSA8LSBTZW1wdHk7IE5vbmUgZW5kXG4gICAgIGVsc2UgU29tZSAoQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmYgYi5pbmQpXG5cblxubGV0IHBlZWsgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgcyAtPiBwZWVrX2RhdGEgc1xuXG5cbmxldCByZWMganVua19kYXRhIDogdHlwZSB2LiB2IGNlbGwgLT4gdW5pdCA9IGZ1biBzIC0+XG4gIG1hdGNoIHMuZGF0YSB3aXRoXG4gICAgU2NvbnMgKF8sIGQpIC0+IHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IHMuZGF0YSA8LSBkXG4gIHwgU2dlbiAoe2N1cnIgPSBTb21lIF99IGFzIGcpIC0+IHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IGcuY3VyciA8LSBOb25lXG4gIHwgU2J1ZmZpbyBiIC0+XG4gICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIHMuZGF0YSA8LSBTZW1wdHlcbiAgICAgIGVsc2UgKHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IGIuaW5kIDwtIHN1Y2MgYi5pbmQpXG4gIHwgXyAtPlxuICAgICAgbWF0Y2ggcGVla19kYXRhIHMgd2l0aFxuICAgICAgICBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiBqdW5rX2RhdGEgc1xuXG5cbmxldCBqdW5rID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkYXRhIC0+IGp1bmtfZGF0YSBkYXRhXG5cbmxldCByZWMgbmdldF9kYXRhIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuIFtdLCBzLmRhdGEsIDBcbiAgZWxzZVxuICAgIG1hdGNoIHBlZWtfZGF0YSBzIHdpdGhcbiAgICAgIFNvbWUgYSAtPlxuICAgICAgICBqdW5rX2RhdGEgcztcbiAgICAgICAgbGV0IChhbCwgZCwgaykgPSBuZ2V0X2RhdGEgKHByZWQgbikgcyBpbiBhIDo6IGFsLCBTY29ucyAoYSwgZCksIHN1Y2Mga1xuICAgIHwgTm9uZSAtPiBbXSwgcy5kYXRhLCAwXG5cblxubGV0IG5wZWVrX2RhdGEgbiBzID1cbiAgbGV0IChhbCwgZCwgbGVuKSA9IG5nZXRfZGF0YSBuIHMgaW5cbiAgcy5jb3VudCA8LSAocy5jb3VudCAtIGxlbik7XG4gIHMuZGF0YSA8LSBkO1xuICBhbFxuXG5cbmxldCBucGVlayBuID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBkIC0+IG5wZWVrX2RhdGEgbiBkXG5cbmxldCBuZXh0IHMgPVxuICBtYXRjaCBwZWVrIHMgd2l0aFxuICAgIFNvbWUgYSAtPiBqdW5rIHM7IGFcbiAgfCBOb25lIC0+IHJhaXNlIEZhaWx1cmVcblxuXG5sZXQgZW1wdHkgcyA9XG4gIG1hdGNoIHBlZWsgcyB3aXRoXG4gICAgU29tZSBfIC0+IHJhaXNlIEZhaWx1cmVcbiAgfCBOb25lIC0+ICgpXG5cblxubGV0IGl0ZXIgZiBzdHJtID1cbiAgbGV0IHJlYyBkb19yZWMgKCkgPVxuICAgIG1hdGNoIHBlZWsgc3RybSB3aXRoXG4gICAgICBTb21lIGEgLT4ganVuayBzdHJtOyBpZ25vcmUoZiBhKTsgZG9fcmVjICgpXG4gICAgfCBOb25lIC0+ICgpXG4gIGluXG4gIGRvX3JlYyAoKVxuXG5cbigqIFN0cmVhbSBidWlsZGluZyBmdW5jdGlvbnMgKilcblxubGV0IGZyb20gZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNnZW4ge2N1cnIgPSBOb25lOyBmdW5jID0gZn19XG5cbmxldCBvZl9saXN0IGwgPVxuICBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biB4IGwgLT4gU2NvbnMgKHgsIGwpKSBsIFNlbXB0eX1cblxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBmcm9tIChmdW4gXyAtPlxuICAgICgqIFdlIGNhbm5vdCB1c2UgdGhlIGluZGV4IHBhc3NlZCBieSB0aGUgW2Zyb21dIGZ1bmN0aW9uIGRpcmVjdGx5XG4gICAgICAgYmVjYXVzZSBpdCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmVhbSBjb3VudCwgd2l0aCBhYnNvbHV0ZWx5IG5vXG4gICAgICAgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCBzdGFydCBmcm9tIDAuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZVxuICAgICAgIG9mIFtTdHJlYW0uaWNvbnMgJ2MnIChTdHJlYW0uZnJvbV9zdHJpbmcgXCJhYlwiKV0sIHRoZSBmaXJzdFxuICAgICAgIGFjY2VzcyB0byB0aGUgc3RyaW5nIHdpbGwgYmUgbWFkZSB3aXRoIGNvdW50IFsxXSBhbHJlYWR5LlxuICAgICopXG4gICAgbGV0IGMgPSAhY291bnQgaW5cbiAgICBpZiBjIDwgU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiAoaW5jciBjb3VudDsgU29tZSBzLltjXSlcbiAgICBlbHNlIE5vbmUpXG5cblxubGV0IG9mX2J5dGVzIHMgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBmcm9tIChmdW4gXyAtPlxuICAgIGxldCBjID0gIWNvdW50IGluXG4gICAgaWYgYyA8IEJ5dGVzLmxlbmd0aCBzXG4gICAgdGhlbiAoaW5jciBjb3VudDsgU29tZSAoQnl0ZXMuZ2V0IHMgYykpXG4gICAgZWxzZSBOb25lKVxuXG5cbmxldCBvZl9jaGFubmVsIGljID1cbiAgU29tZSB7Y291bnQgPSAwO1xuICAgICAgICBkYXRhID0gU2J1ZmZpbyB7aWMgPSBpYzsgYnVmZiA9IEJ5dGVzLmNyZWF0ZSA0MDk2OyBsZW4gPSAwOyBpbmQgPSAwfX1cblxuXG4oKiBTdHJlYW0gZXhwcmVzc2lvbnMgYnVpbGRlcnMgKilcblxubGV0IGlhcHAgaSBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2FwcCAoZGF0YSBpLCBkYXRhIHMpfVxubGV0IGljb25zIGkgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNjb25zIChpLCBkYXRhIHMpfVxubGV0IGlzaW5nIGkgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTY29ucyAoaSwgU2VtcHR5KX1cblxubGV0IGxhcHAgZiBzID1cbiAgU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2FwcCAoZGF0YSAoZiAoKSksIGRhdGEgcykpKX1cblxubGV0IGxjb25zIGYgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNjb25zIChmICgpLCBkYXRhIHMpKSl9XG5sZXQgbHNpbmcgZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNjb25zIChmICgpLCBTZW1wdHkpKSl9XG5cbmxldCBzZW1wdHkgPSBOb25lXG5sZXQgc2xhenkgZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KGRhdGEgKGYgKCkpKSl9XG5cbigqIEZvciBkZWJ1Z2dpbmcgdXNlICopXG5cbmxldCByZWMgZHVtcCA6IHR5cGUgdi4gKHYgLT4gdW5pdCkgLT4gdiB0IC0+IHVuaXQgPSBmdW4gZiBzIC0+XG4gIHByaW50X3N0cmluZyBcIntjb3VudCA9IFwiO1xuICBwcmludF9pbnQgKGNvdW50IHMpO1xuICBwcmludF9zdHJpbmcgXCI7IGRhdGEgPSBcIjtcbiAgZHVtcF9kYXRhIGYgKGRhdGEgcyk7XG4gIHByaW50X3N0cmluZyBcIn1cIjtcbiAgcHJpbnRfbmV3bGluZSAoKVxuYW5kIGR1bXBfZGF0YSA6IHR5cGUgdi4gKHYgLT4gdW5pdCkgLT4gdiBkYXRhIC0+IHVuaXQgPSBmdW4gZiAtPlxuICBmdW5jdGlvblxuICAgIFNlbXB0eSAtPiBwcmludF9zdHJpbmcgXCJTZW1wdHlcIlxuICB8IFNjb25zIChhLCBkKSAtPlxuICAgICAgcHJpbnRfc3RyaW5nIFwiU2NvbnMgKFwiO1xuICAgICAgZiBhO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiLCBcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQ7XG4gICAgICBwcmludF9zdHJpbmcgXCIpXCJcbiAgfCBTYXBwIChkMSwgZDIpIC0+XG4gICAgICBwcmludF9zdHJpbmcgXCJTYXBwIChcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQxO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiLCBcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQyO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiKVwiXG4gIHwgU2xhenkgXyAtPiBwcmludF9zdHJpbmcgXCJTbGF6eVwiXG4gIHwgU2dlbiBfIC0+IHByaW50X3N0cmluZyBcIlNnZW5cIlxuICB8IFNidWZmaW8gXyAtPiBwcmludF9zdHJpbmcgXCJTYnVmZmlvXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbnR5cGUgdCA9XG4ge211dGFibGUgYnVmZmVyIDogYnl0ZXM7XG4gIG11dGFibGUgcG9zaXRpb24gOiBpbnQ7XG4gIG11dGFibGUgbGVuZ3RoIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFswIDw9IGIucG9zaXRpb24gPD0gYi5sZW5ndGhdXG4gICAtIFtiLmxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBiLmJ1ZmZlcl1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7YnVmZmVyID0gczsgcG9zaXRpb24gPSAwOyBsZW5ndGggPSBuOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdCBzcmMuYnVmZmVyIHNyY29mZiBkc3QgZHN0b2ZmIGxlblxuXG5cbmxldCBudGggYiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBiLnBvc2l0aW9uIHRoZW5cbiAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2UgQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBiLmJ1ZmZlciA8LSBiLmluaXRpYWxfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSBCeXRlcy5sZW5ndGggYi5idWZmZXJcblxuKCogW3Jlc2l6ZSBiIG1vcmVdIGVuc3VyZXMgdGhhdCBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIGhvbGRzXG4gICBieSBkeW5hbWljYWxseSBleHRlbmRpbmcgW2IuYnVmZmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IubGVuZ3RoXS5cblxuICAgSW4gcGFydGljdWxhciwgYWZ0ZXIgW3Jlc2l6ZSBiIG1vcmVdIGlzIGNhbGxlZCwgYSBkaXJlY3QgYWNjZXNzIG9mXG4gICBzaXplIFttb3JlXSBhdCBbYi5wb3NpdGlvbl0gd2lsbCBhbHdheXMgYmUgaW4tYm91bmRzLCBzbyB0aGF0XG4gICAodW5zYWZlX3tnZXQsc2V0fSkgbWF5IGJlIHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxuKilcbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IG9sZF9wb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCBvbGRfbGVuID0gYi5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICB3aGlsZSBvbGRfcG9zICsgbW9yZSA+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuYnVmZmVyIDwtIG5ld19idWZmZXI7XG4gIGIubGVuZ3RoIDwtICFuZXdfbGVuO1xuICBhc3NlcnQgKGIucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgYXNzZXJ0IChvbGRfcG9zICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gICgpXG4gICgqIE5vdGU6IHRoZXJlIGFyZSB2YXJpb3VzIHNpdHVhdGlvbnMgKHByZWVtcHRpdmUgdGhyZWFkcywgc2lnbmFscyBhbmRcbiAgICAgZ2MgZmluYWxpemVycykgd2hlcmUgT0NhbWwgY29kZSBtYXkgYmUgcnVuIGFzeW5jaHJvbm91c2x5OyBpblxuICAgICBwYXJ0aWN1bGFyLCB0aGVyZSBtYXkgYmUgYSByYWNlIHdpdGggYW5vdGhlciB1c2VyIG9mIFtiXSwgY2hhbmdpbmdcbiAgICAgaXRzIG11dGFibGUgZmllbGRzIGluIHRoZSBtaWRkbGUgb2YgdGhlIFtyZXNpemVdIGNhbGwuIFRoZSBCdWZmZXJcbiAgICAgbW9kdWxlIGRvZXMgbm90IHByb3ZpZGUgYW55IGNvcnJlY3RuZXNzIGd1YXJhbnRlZSBpZiB0aGF0IGhhcHBlbnMsXG4gICAgIGJ1dCB3ZSBtdXN0IHN0aWxsIGVuc3VyZSB0aGF0IHRoZSBkYXRhc3RydWN0dXJlIGludmFyaWFudHMgaG9sZCBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAtLSBhcyB3ZSBwbGFuIHRvIHVzZSBbdW5zYWZlX3tnZXQsc2V0fV0uXG5cbiAgICAgVGhlcmUgYXJlIHR3byBwb3RlbnRpYWwgYWxsb2NhdGlvbiBwb2ludHMgaW4gdGhpcyBmdW5jdGlvbixcbiAgICAgW3JlZl0gYW5kIFtCeXRlcy5jcmVhdGVdLCBidXQgYWxsIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlIGZpZWxkc1xuICAgICBvZiBbYl0gaGFwcGVuIGJlZm9yZSBib3RoIG9mIHRoZW0gb3IgYWZ0ZXIgYm90aCBvZiB0aGVtLlxuXG4gICAgIFdlIHRoZXJlZm9yZSBhc3N1bWUgdGhhdCBbYi5wb3NpdGlvbl0gbWF5IGNoYW5nZSBhdCB0aGVzZSBhbGxvY2F0aW9ucyxcbiAgICAgYW5kIGNoZWNrIHRoYXQgdGhlIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gcG9zdGNvbmRpdGlvblxuICAgICBob2xkcyBmb3IgYm90aCB2YWx1ZXMgb2YgW2IucG9zaXRpb25dLCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uXG4gICAgIGlzIGNhbGxlZC4gTW9yZSBwcmVjaXNlbHksIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGhvbGQgaWYgdGhlXG4gICAgIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdGx5LCBpbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgYnVmZmVyIGludmFyaWFudHM6XG4gICAgIC0gW29sZChiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbbmV3KGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtvbGQoYi5sZW5ndGgpIDw9IG5ldyhiLmxlbmd0aCldXG5cbiAgICAgTm90ZTogW2IucG9zaXRpb24gKyBtb3JlIDw9IG9sZChiLmxlbmd0aCldIGRvZXMgKm5vdCpcbiAgICAgaG9sZCBpbiBnZW5lcmFsLCBhcyBpdCBpcyBwcmVjaXNlbHkgdGhlIGNhc2Ugd2hlcmUgeW91IG5lZWRcbiAgICAgdG8gY2FsbCBbcmVzaXplXSB0byBpbmNyZWFzZSBbYi5sZW5ndGhdLlxuXG4gICAgIE5vdGU6IFthc3NlcnRdIGFib3ZlIGRvZXMgbm90IG1lYW4gdGhhdCB3ZSBrbm93IHRoZSBjb25kaXRpb25zXG4gICAgIGFsd2F5cyBob2xkLCBidXQgdGhhdCB0aGUgZnVuY3Rpb24gbWF5IHJldHVybiBjb3JyZWN0bHlcbiAgICAgb25seSBpZiB0aGV5IGhvbGQuXG5cbiAgICAgTm90ZTogdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSBkb2VzIG5vdCBuZWVkXG4gICAgIHRvIGJlIGNoZWNrZWQgd2l0aCB0aGlzIGxldmVsIG9mIHNjcnV0aW55LCBnaXZlbiB0aGF0IHRoZXlcbiAgICAgcmVhZC93cml0ZSB0aGUgYnVmZmVyIGltbWVkaWF0ZWx5IGFmdGVyIGNoZWNraW5nIHRoYXRcbiAgICAgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkIG9yIGNhbGxpbmcgW3Jlc2l6ZV0uXG4gICopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxubGV0IHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCA9IDRcbmxldCB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4ID0gNFxuXG5sZXQgcmVjIGFkZF91dGZfOF91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl84X3VjaGFyIGIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl84X3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZiZV91Y2hhciBiLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmxlX3VjaGFyIGIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZsZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIG9mZnNldCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIDAgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAoKiBUaGUgYXNzZXJ0aW9uIGJlbG93IG1heSBmYWlsIGluIHdlaXJkIHNjZW5hcmlvIHdoZXJlXG4gICAgIHRocmVhZGVkL2ZpbmFsaXplciBjb2RlLCBydW4gYXN5bmNocm9ub3VzbHkgZHVyaW5nIHRoZVxuICAgICBbcmVhbGx5X2lucHV0X3VwX3RvXSBjYWxsLCByYWNlcyBvbiB0aGUgYnVmZmVyOyB3ZSBkb24ndCBlbnN1cmVcbiAgICAgY29ycmVjdG5lc3MgaW4gdGhpcyBjYXNlLCBidXQgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAoc2VlIGRpc2N1c3Npb24gb2YgW3Jlc2l6ZV0pLiAqKVxuICBhc3NlcnQgKGIucG9zaXRpb24gKyBuIDw9IGIubGVuZ3RoKTtcbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyBqIGxpbSBpblxuICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIHByZXZpb3VzID09ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgdW5zYWZlX3NldF9pbnQ4IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICB1bnNhZmVfc2V0X2ludDE2IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQzMl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICB1bnNhZmVfc2V0X2ludDMyIGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQ2NF9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA4O1xuICB1bnNhZmVfc2V0X2ludDY0IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9sZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MTZfYmUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuXG5sZXQgYWRkX2ludDMyX2xlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQzMl9iZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG5cbmxldCBhZGRfaW50NjRfbGUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDY0X2JlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcblxubGV0IGFkZF91aW50OCA9IGFkZF9pbnQ4XG5sZXQgYWRkX3VpbnQxNl9uZSA9IGFkZF9pbnQxNl9uZVxubGV0IGFkZF91aW50MTZfbGUgPSBhZGRfaW50MTZfbGVcbmxldCBhZGRfdWludDE2X2JlID0gYWRkX2ludDE2X2JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIFhhdmllciBMZXJveSBhbmQgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG5sZXQga2ZwcmludGYgayBvIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBvIGFjYzsgayBvKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGticHJpbnRmIGsgYiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IGJ1ZnB1dF9hY2MgYiBhY2M7IGsgYikgRW5kX29mX2FjYyBmbXRcbmxldCBpa2ZwcmludGYgayBvYyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIG9jIGZtdFxubGV0IGlrYnByaW50ZiA9IGlrZnByaW50ZlxuXG5sZXQgZnByaW50ZiBvYyBmbXQgPSBrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgYnByaW50ZiBiIGZtdCA9IGticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IGlmcHJpbnRmIG9jIGZtdCA9IGlrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgaWJwcmludGYgYiBmbXQgPSBpa2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3Rkb3V0IGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBzdGRlcnIgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGsnIGFjYyA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBzdHJwdXRfYWNjIGJ1ZiBhY2M7XG4gICAgayAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXRcblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IHMpIGZtdFxuXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gc3RyaW5nXG50eXBlIGRvYyA9IHN0cmluZ1xudHlwZSB1c2FnZV9tc2cgPSBzdHJpbmdcbnR5cGUgYW5vbl9mdW4gPSAoc3RyaW5nIC0+IHVuaXQpXG5cbnR5cGUgc3BlYyA9XG4gIHwgVW5pdCBvZiAodW5pdCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB1bml0IGFyZ3VtZW50ICopXG4gIHwgQm9vbCBvZiAoYm9vbCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGJvb2wgYXJndW1lbnQgKilcbiAgfCBTZXQgb2YgYm9vbCByZWYgICAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0cnVlICopXG4gIHwgQ2xlYXIgb2YgYm9vbCByZWYgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gZmFsc2UgKilcbiAgfCBTdHJpbmcgb2YgKHN0cmluZyAtPiB1bml0KSAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgU2V0X3N0cmluZyBvZiBzdHJpbmcgcmVmICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IEludCBvZiAoaW50IC0+IHVuaXQpICAgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYW4gaW50IGFyZ3VtZW50ICopXG4gIHwgU2V0X2ludCBvZiBpbnQgcmVmICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGludCBhcmd1bWVudCAqKVxuICB8IEZsb2F0IG9mIChmbG9hdCAtPiB1bml0KSAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFNldF9mbG9hdCBvZiBmbG9hdCByZWYgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFR1cGxlIG9mIHNwZWMgbGlzdCAgICAgICAgICgqIFRha2Ugc2V2ZXJhbCBhcmd1bWVudHMgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMgbGlzdCAqKVxuICB8IFN5bWJvbCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUYWtlIG9uZSBvZiB0aGUgc3ltYm9scyBhcyBhcmd1bWVudCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzeW1ib2wuICopXG4gIHwgUmVzdCBvZiAoc3RyaW5nIC0+IHVuaXQpICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBlYWNoIHJlbWFpbmluZyBhcmd1bWVudCAqKVxuICB8IFJlc3RfYWxsIG9mIChzdHJpbmcgbGlzdCAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYWxsIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG4gIHwgRXhwYW5kIG9mIChzdHJpbmcgLT4gc3RyaW5nIGFycmF5KSAoKiBJZiB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB0byBwcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgb2YgdGhlIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXCItZm9vXCI7IFwiYXJnXCJdIEAgcmVzdF0gd2hlcmUgXCJmb29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVnaXN0ZXJlZCBhcyBbRXhwYW5kIGZdLCB0aGVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIFtmIFwiYXJnXCIgQCByZXN0XSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC4gT25seSBhbGxvd2VkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNdLiAqKVxuXG5leGNlcHRpb24gQmFkIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEhlbHAgb2Ygc3RyaW5nXG5cbnR5cGUgZXJyb3IgPVxuICB8IFVua25vd24gb2Ygc3RyaW5nXG4gIHwgV3Jvbmcgb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nICAoKiBvcHRpb24sIGFjdHVhbCwgZXhwZWN0ZWQgKilcbiAgfCBNaXNzaW5nIG9mIHN0cmluZ1xuICB8IE1lc3NhZ2Ugb2Ygc3RyaW5nXG5cbmV4Y2VwdGlvbiBTdG9wIG9mIGVycm9yICgqIHVzZWQgaW50ZXJuYWxseSAqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcmVjIGFzc29jMyB4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoeTEsIHkyLCBfKSA6OiBfIHdoZW4geTEgPSB4IC0+IHkyXG4gIHwgXyA6OiB0IC0+IGFzc29jMyB4IHRcblxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJz0nIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgU3RyaW5nLnN1YiBzIDAgaSwgU3RyaW5nLnN1YiBzIChpKzEpIChsZW4tKGkrMSkpXG5cblxubGV0IG1ha2Vfc3ltbGlzdCBwcmVmaXggc2VwIHN1ZmZpeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCI8bm9uZT5cIlxuICB8IGg6OnQgLT4gKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IHggXiBzZXAgXiB5KSAocHJlZml4IF4gaCkgdCkgXiBzdWZmaXhcblxuXG5sZXQgcHJpbnRfc3BlYyBidWYgKGtleSwgc3BlYywgZG9jKSA9XG4gIGlmIFN0cmluZy5sZW5ndGggZG9jID4gMCB0aGVuXG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBTeW1ib2wgKGwsIF8pIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlcyVzXFxuXCIga2V5IChtYWtlX3N5bWxpc3QgXCJ7XCIgXCJ8XCIgXCJ9XCIgbCkgZG9jXG4gICAgfCBfIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlc1xcblwiIGtleSBkb2NcblxuXG5sZXQgaGVscF9hY3Rpb24gKCkgPSByYWlzZSAoU3RvcCAoVW5rbm93biBcIi1oZWxwXCIpKVxuXG5sZXQgYWRkX2hlbHAgc3BlY2xpc3QgPVxuICBsZXQgYWRkMSA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgYW5kIGFkZDIgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi0taGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLS1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgaW5cbiAgc3BlY2xpc3QgQCAoYWRkMSBAIGFkZDIpXG5cblxubGV0IHVzYWdlX2IgYnVmIHNwZWNsaXN0IGVycm1zZyA9XG4gIGJwcmludGYgYnVmIFwiJXNcXG5cIiBlcnJtc2c7XG4gIExpc3QuaXRlciAocHJpbnRfc3BlYyBidWYpIChhZGRfaGVscCBzcGVjbGlzdClcblxuXG5sZXQgdXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgdXNhZ2VfYiBiIHNwZWNsaXN0IGVycm1zZztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgdXNhZ2Ugc3BlY2xpc3QgZXJybXNnID1cbiAgZXByaW50ZiBcIiVzXCIgKHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cpXG5cblxubGV0IGN1cnJlbnQgPSByZWYgMFxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoYm9vbF9vZl9zdHJpbmcgeClcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGFsbG93X2V4cGFuZCBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPVxuICBsZXQgaW5pdHBvcyA9ICFjdXJyZW50IGluXG4gIGxldCBjb252ZXJ0X2Vycm9yIGVycm9yID1cbiAgICAoKiBjb252ZXJ0IGFuIGludGVybmFsIGVycm9yIHRvIGEgQmFkL0hlbHAgZXhjZXB0aW9uXG4gICAgICAgKm9yKiBhZGQgdGhlIHByb2dyYW0gbmFtZSBhcyBhIHByZWZpeCBhbmQgdGhlIHVzYWdlIG1lc3NhZ2UgYXMgYSBzdWZmaXhcbiAgICAgICB0byBhbiB1c2VyLXJhaXNlZCBCYWQgZXhjZXB0aW9uLlxuICAgICopXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICAgIGxldCBwcm9nbmFtZSA9XG4gICAgICBpZiBpbml0cG9zIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oaW5pdHBvcykgZWxzZSBcIig/KVwiIGluXG4gICAgYmVnaW4gbWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgfCBVbmtub3duIFwiLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIFwiLS1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHVua25vd24gb3B0aW9uICclcycuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBNaXNzaW5nIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogb3B0aW9uICclcycgbmVlZHMgYW4gYXJndW1lbnQuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBXcm9uZyAob3B0LCBhcmcsIGV4cGVjdGVkKSAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB3cm9uZyBhcmd1bWVudCAnJXMnOyBvcHRpb24gJyVzJyBleHBlY3RzICVzLlxcblwiXG4gICAgICAgICAgICAgICAgICBwcm9nbmFtZSBhcmcgb3B0IGV4cGVjdGVkXG4gICAgICB8IE1lc3NhZ2UgcyAtPiAoKiB1c2VyIGVycm9yIG1lc3NhZ2UgKilcbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogJXMuXFxuXCIgcHJvZ25hbWUgc1xuICAgIGVuZDtcbiAgICB1c2FnZV9iIGIgIXNwZWNsaXN0IGVycm1zZztcbiAgICBpZiBlcnJvciA9IFVua25vd24gXCItaGVscFwiIHx8IGVycm9yID0gVW5rbm93biBcIi0taGVscFwiXG4gICAgdGhlbiBIZWxwIChCdWZmZXIuY29udGVudHMgYilcbiAgICBlbHNlIEJhZCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gIGluXG4gIGluY3IgY3VycmVudDtcbiAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSBkb1xuICAgIGJlZ2luIHRyeVxuICAgICAgbGV0IHMgPSAhYXJndi4oIWN1cnJlbnQpIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMSAmJiBzLlswXSA9ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnQ7XG4gIG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgdmVyYm9zZSA6IGludDtcbiAgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnQ7XG4gIHdpbmRvd19zaXplIDogaW50O1xuICBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50O1xufVxuXG5leHRlcm5hbCBzdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3N0YXRcIlxuZXh0ZXJuYWwgcXVpY2tfc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19xdWlja19zdGF0XCJcbmV4dGVybmFsIGNvdW50ZXJzIDogdW5pdCAtPiAoZmxvYXQgKiBmbG9hdCAqIGZsb2F0KSA9IFwiY2FtbF9nY19jb3VudGVyc1wiXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pXG4gID0gXCJjYW1sX2djX21pbm9yX3dvcmRzXCIgXCJjYW1sX2djX21pbm9yX3dvcmRzX3VuYm94ZWRcIlxuZXh0ZXJuYWwgZ2V0IDogdW5pdCAtPiBjb250cm9sID0gXCJjYW1sX2djX2dldFwiXG5leHRlcm5hbCBzZXQgOiBjb250cm9sIC0+IHVuaXQgPSBcImNhbWxfZ2Nfc2V0XCJcbmV4dGVybmFsIG1pbm9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21pbm9yXCJcbmV4dGVybmFsIG1ham9yX3NsaWNlIDogaW50IC0+IGludCA9IFwiY2FtbF9nY19tYWpvcl9zbGljZVwiXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBmdWxsX21ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2Z1bGxfbWFqb3JcIlxuZXh0ZXJuYWwgY29tcGFjdCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19jb21wYWN0aW9uXCJcbmV4dGVybmFsIGdldF9taW5vcl9mcmVlIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21pbm9yX2ZyZWVcIlxuZXh0ZXJuYWwgZ2V0X2J1Y2tldCA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2J1Y2tldFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBnZXRfY3JlZGl0IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2NyZWRpdFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBodWdlX2ZhbGxiYWNrX2NvdW50IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFwiXG5leHRlcm5hbCBldmVudGxvZ19wYXVzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19wYXVzZVwiXG5leHRlcm5hbCBldmVudGxvZ19yZXN1bWUgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcmVzdW1lXCJcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIHJlZlxudHlwZSBhbGFybV9yZWMgPSB7YWN0aXZlIDogYWxhcm07IGYgOiB1bml0IC0+IHVuaXR9XG5cbmxldCByZWMgY2FsbF9hbGFybSBhcmVjID1cbiAgaWYgIShhcmVjLmFjdGl2ZSkgdGhlbiBiZWdpblxuICAgIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgICBhcmVjLmYgKCk7XG4gIGVuZFxuXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSByZWYgdHJ1ZTsgZiA9IGYgfSBpblxuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubGV0IGRlbGV0ZV9hbGFybSBhID0gYSA6PSBmYWxzZVxuXG5tb2R1bGUgTWVtcHJvZiA9XG4gIHN0cnVjdFxuICAgIHR5cGUgYWxsb2NhdGlvbl9zb3VyY2UgPSBOb3JtYWwgfCBNYXJzaGFsIHwgQ3VzdG9tXG4gICAgdHlwZSBhbGxvY2F0aW9uID1cbiAgICAgIHsgbl9zYW1wbGVzIDogaW50O1xuICAgICAgICBzaXplIDogaW50O1xuICAgICAgICBzb3VyY2UgOiBhbGxvY2F0aW9uX3NvdXJjZTtcbiAgICAgICAgY2FsbHN0YWNrIDogUHJpbnRleGMucmF3X2JhY2t0cmFjZSB9XG5cbiAgICB0eXBlICgnbWlub3IsICdtYWpvcikgdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yOiBhbGxvY2F0aW9uIC0+ICdtaW5vciBvcHRpb247XG4gICAgICBhbGxvY19tYWpvcjogYWxsb2NhdGlvbiAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgcHJvbW90ZTogJ21pbm9yIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBkZWFsbG9jX21pbm9yOiAnbWlub3IgLT4gdW5pdDtcbiAgICAgIGRlYWxsb2NfbWFqb3I6ICdtYWpvciAtPiB1bml0O1xuICAgIH1cblxuICAgIGxldCBudWxsX3RyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGFsbG9jX21ham9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgcHJvbW90ZSA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGRlYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgICAgZGVhbGxvY19tYWpvciA9IChmdW4gXyAtPiAoKSk7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWwgY19zdGFydCA6XG4gICAgICBmbG9hdCAtPiBpbnQgLT4gKCdtaW5vciwgJ21ham9yKSB0cmFja2VyIC0+IHVuaXRcbiAgICAgID0gXCJjYW1sX21lbXByb2Zfc3RhcnRcIlxuXG4gICAgbGV0IHN0YXJ0XG4gICAgICB+c2FtcGxpbmdfcmF0ZVxuICAgICAgPyhjYWxsc3RhY2tfc2l6ZSA9IG1heF9pbnQpXG4gICAgICB0cmFja2VyID1cbiAgICAgIGNfc3RhcnQgc2FtcGxpbmdfcmF0ZSBjYWxsc3RhY2tfc2l6ZSB0cmFja2VyXG5cbiAgICBleHRlcm5hbCBzdG9wIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2Zfc3RvcFwiXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNZXNzYWdlIGRpZ2VzdCAoTUQ1KSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG5leHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxubGV0IHN0cmluZyBzdHIgPVxuICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxubGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxubGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG5sZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID0gc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxubGV0IGZpbGUgZmlsZW5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlbmFtZSBpblxuICBtYXRjaCBjaGFubmVsIGljICgtMSkgd2l0aFxuICAgIHwgZCAtPiBjbG9zZV9pbiBpYzsgZFxuICAgIHwgZXhjZXB0aW9uIGUgLT4gY2xvc2VfaW4gaWM7IHJhaXNlIGVcblxubGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9XG4gIG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxubGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gMTZcblxubGV0IGNoYXJfaGV4IG4gPVxuICBDaGFyLnVuc2FmZV9jaHIgKG4gKyBpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnIGVsc2UgKENoYXIuY29kZSAnYScgLSAxMCkpXG5cbmxldCB0b19oZXggZCA9XG4gIGlmIFN0cmluZy5sZW5ndGggZCA8PiAxNiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDMyIGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIGxldCB4ID0gQ2hhci5jb2RlIGQuW2ldIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMikgKGNoYXJfaGV4ICh4IGxzciA0KSk7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMisxKSAoY2hhcl9oZXggKHggbGFuZCAweDBmKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG5cbmxldCBmcm9tX2hleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IDMyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuZnJvbV9oZXhcIjtcbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEaWdlc3QuZnJvbV9oZXhcIilcbiAgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIEJ5dGVzLnNldCByZXN1bHQgaSAoQ2hhci5jaHIgKGJ5dGUgKDIgKiBpKSkpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIGJ1Y2tldHMgYmVjb21lIHRvbyBsb25nLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSByZWYgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSByYW5kb21pemVkIDo9IHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gIXJhbmRvbWl6ZWRcblxubGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IG1lbSBoIGtleSA9XG4gIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXIgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuXG4gIGxldCBmaW5kX29yIHQgZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBtZXJnZSB0IGQgPVxuICAgIGZpbmRfb3IgdCBkIChmdW4gaCBpbmRleCAtPiBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaW5kZXg7IGQpXG5cblxuICBsZXQgZmluZCB0IGQgPSBmaW5kX29yIHQgZCAoZnVuIF9oIF9pbmRleCAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgZmluZF9zaGFkb3cgdCBkIGlmZm91bmQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmRcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gaWZmb3VuZCBidWNrZXQgaVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IHJlbW92ZSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biB3IGkgLT4gc2V0IHcgaSBOb25lKSAoKVxuXG5cbiAgbGV0IG1lbSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biBfdyBfaSAtPiB0cnVlKSBmYWxzZVxuXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9vcGVuX3RhZyBzdGF0ZSBzID0gcHBfb3Blbl9zdGFnIHN0YXRlIChTdHJpbmdfdGFnIHMpXG5sZXQgcHBfY2xvc2VfdGFnIHN0YXRlICgpID0gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgYiA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgYiB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgdHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPSBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCA9IHBwX29wZW5faGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl92Ym94ID0gcHBfb3Blbl92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2h2Ym94ID0gcHBfb3Blbl9odmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ob3Zib3ggPSBwcF9vcGVuX2hvdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9ib3ggPSBwcF9vcGVuX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfYm94ID0gcHBfY2xvc2VfYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3RhZyA9IHBwX29wZW5fdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90YWcgPSBwcF9jbG9zZV90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fc3RhZyA9IHBwX29wZW5fc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2Vfc3RhZyA9IHBwX2Nsb3NlX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2FzID0gcHBfcHJpbnRfYXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3N0cmluZyA9IHBwX3ByaW50X3N0cmluZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnl0ZXMgPSBwcF9wcmludF9ieXRlcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaW50ID0gcHBfcHJpbnRfaW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbG9hdCA9IHBwX3ByaW50X2Zsb2F0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jaGFyID0gcHBfcHJpbnRfY2hhciBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYm9vbCA9IHBwX3ByaW50X2Jvb2wgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2JyZWFrID0gcHBfcHJpbnRfYnJlYWsgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2N1dCA9IHBwX3ByaW50X2N1dCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3BhY2UgPSBwcF9wcmludF9zcGFjZSBzdGRfZm9ybWF0dGVyXG5hbmQgZm9yY2VfbmV3bGluZSA9IHBwX2ZvcmNlX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ZsdXNoID0gcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X25ld2xpbmUgPSBwcF9wcmludF9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pZl9uZXdsaW5lID0gcHBfcHJpbnRfaWZfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBvcGVuX3Rib3ggPSBwcF9vcGVuX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3Rib3ggPSBwcF9jbG9zZV90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YnJlYWsgPSBwcF9wcmludF90YnJlYWsgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X3RhYiA9IHBwX3NldF90YWIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RhYiA9IHBwX3ByaW50X3RhYiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWFyZ2luID0gcHBfc2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9pbmRlbnQgPSBwcF9zZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZ2VvbWV0cnkgPSBwcF9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHNhZmVfc2V0X2dlb21ldHJ5ID0gcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9nZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgdXBkYXRlX2dlb21ldHJ5ID0gcHBfdXBkYXRlX2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfYm94ZXMgPSBwcF9zZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2JveGVzID0gcHBfZ2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Zlcl9tYXhfYm94ZXMgPSBwcF9vdmVyX21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZWxsaXBzaXNfdGV4dCA9IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZWxsaXBzaXNfdGV4dCA9IHBwX2dldF9lbGxpcHNpc190ZXh0IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3ByaW50X3RhZ3MgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X3ByaW50X3RhZ3MgPVxuICBwcF9nZXRfcHJpbnRfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X21hcmtfdGFncyA9XG4gIHBwX3NldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJrX3RhZ3MgPVxuICBwcF9nZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfdGFncyA9XG4gIHBwX3NldF90YWdzIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHJlYyBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbdl0gLT4gcHBfdiBwcGYgdlxuICB8IHYgOjogdnMgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBwX3YgcHBmIHZzXG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcmVjIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV90YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZF9mb3JtYXR0ZXIgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIGVycl9mb3JtYXR0ZXIgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXIgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIGVycl9mb3JtYXR0ZXIgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbigqXG5cbiAgRGVwcmVjYXRlZCBzdHVmZi5cblxuKilcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGVcbiAgICB+b3V0OmYgfmZsdXNoOmcgfm5ld2xpbmU6aCB+c3BhY2VzOmkgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGlcblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoLFxuICAgc3RhdGUucHBfb3V0X25ld2xpbmUsIHN0YXRlLnBwX291dF9zcGFjZXMpXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBlcnJvciBwcm9uZSBmdW5jdGlvbiwgZG8gbm90IHVzZSBpdC5cbiAgIFRoaXMgZnVuY3Rpb24gaXMgbmVpdGhlciBjb21wb3NpdGlvbmFsIG5vciBpbmNyZW1lbnRhbCwgc2luY2UgaXQgZmx1c2hlc1xuICAgdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGF0IGVhY2ggY2FsbC5cbiAgIFRvIGdldCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCBkZWZpbmUgYSBmb3JtYXR0ZXIgb2YgeW91ciBvd24gd3JpdGluZyB0b1xuICAgdGhlIGJ1ZmZlciBhcmd1bWVudCwgYXMgaW5cbiAgIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJcbiAgIHRoZW4gdXNlIHshZnByaW50ZiBwcGZ9IGFzIHVzdWFsLiAqKVxubGV0IGJwcmludGYgYiAoRm9ybWF0IChmbXQsIF8pIDogKCdhLCBmb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdCkgPVxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9IG91dHB1dF9hY2MgcHBmIGFjYzsgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG4oKiBEZXByZWNhdGVkIDogYWxpYXMgZm9yIGtzcHJpbnRmLiAqKVxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuXG5cblxuKCogRGVwcmVjYXRlZCB0YWcgZnVuY3Rpb25zICopXG5cbnR5cGUgZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fdGFnIDogdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3RhZyA6IHRhZyAtPiB1bml0O1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl90YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3RhZyA9IHBjdDtcbiAgIH0gPVxuICBsZXQgc3RyaW5naWZ5IGYgZSA9IGZ1bmN0aW9uIFN0cmluZ190YWcgcyAtPiBmIHMgfCBfIC0+IGUgaW5cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBzdHJpbmdpZnkgbW90IFwiXCI7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBtY3QgXCJcIjtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gc3RyaW5naWZ5IHBvdCAoKTtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHN0cmluZ2lmeSBwY3QgKClcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBmbXQgKCkgPVxuICBsZXQgZnVucyA9IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG4gIGxldCBtYXJrX29wZW5fdGFnIHMgPSBmdW5zLm1hcmtfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBtYXJrX2Nsb3NlX3RhZyBzID0gZnVucy5tYXJrX2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X29wZW5fdGFnIHMgPSBmdW5zLnByaW50X29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfY2xvc2VfdGFnIHMgPSBmdW5zLnByaW50X2Nsb3NlX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAge21hcmtfb3Blbl90YWc7IG1hcmtfY2xvc2VfdGFnOyBwcmludF9vcGVuX3RhZzsgcHJpbnRfY2xvc2VfdGFnfVxuXG5sZXQgc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogYWxpYXMgdG8gYXZvaWQgd2FybmluZyBmb3IgYW1iaWd1aXR5IGJldHdlZW5cbiAgIFN0ZGxpYi5mb3JtYXQ2XG4gICBhbmQgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcblxuICAgKHRoZSBmb3JtZXIgaXMgaW4gZmFjdCBhbiBhbGlhcyBmb3IgdGhlIGxhdHRlcixcbiAgICBidXQgdGhlIGFtYmlndWl0eSB3YXJuaW5nIGRvZXNuJ3QgY2FyZSlcbiopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIFN0ZGxpYi5mb3JtYXQ2XG5cblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5uZXJzLiAqKVxuXG4oKiBTY2FubmluZyBidWZmZXJzLiAqKVxubW9kdWxlIHR5cGUgU0NBTk5JTkcgPSBzaWdcblxuICB0eXBlIGluX2NoYW5uZWxcblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB2YWwgc3RkaW4gOiBpbl9jaGFubmVsXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBbc3RkaWJdIGlzIGVxdWl2YWxlbnQgdG8gW1NjYW5uaW5nLmZyb21fY2hhbm5lbCBTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBzdGRpYiA6IGluX2NoYW5uZWxcbiAgKCogQW4gYWxpYXMgZm9yIFtTY2FuZi5zdGRpbl0sIHRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tXG4gICAgIFtTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBuZXh0X2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLm5leHRfY2hhciBpYl0gYWR2YW5jZSB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyLlxuICAgICBJZiBubyBtb3JlIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJdIG1hcmsgdGhlIGN1cnJlbnRfY2hhciBhcyBhbHJlYWR5XG4gICAgIHNjYW5uZWQuICopXG5cbiAgdmFsIHBlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcucGVla19jaGFyIGliXSByZXR1cm5zIHRoZSBjdXJyZW50IGNoYXIgYXZhaWxhYmxlIGluXG4gICAgIHRoZSBidWZmZXIgb3IgcmVhZHMgb25lIGlmIG5lY2Vzc2FyeSAod2hlbiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXNcbiAgICAgYWxyZWFkeSBzY2FubmVkKS5cbiAgICAgSWYgbm8gY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGFuIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBjaGVja2VkX3BlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBTYW1lIGFzIFtTY2FubmluZy5wZWVrX2NoYXJdIGFib3ZlIGJ1dCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGNoYXIgb3JcbiAgICAgZmFpbHM6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgbnVsbCBjaGFyIHdoZW4gdGhlIHJlYWRpbmcgbWV0aG9kIG9mIHRoZVxuICAgICBpbnB1dCBidWZmZXIgaGFzIHJlYWNoZWQgYW4gZW5kIG9mIGZpbGUsIHRoZSBmdW5jdGlvbiByYWlzZXMgZXhjZXB0aW9uXG4gICAgIFtFbmRfb2ZfZmlsZV0uICopXG5cbiAgdmFsIHN0b3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBjaGFyIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc3RvcmVfY2hhciBsaW0gaWIgY10gYWRkcyBbY10gdG8gdGhlIHRva2VuIGJ1ZmZlclxuICAgICBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyIFtpYl0uIEl0IGFsc28gYWR2YW5jZXMgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3RlciBhbmQgcmV0dXJucyBbbGltIC0gMV0sIGluZGljYXRpbmcgdGhlIG5ldyBsaW1pdCBmb3IgdGhlXG4gICAgIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbi4gKilcblxuICB2YWwgc2tpcF9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5za2lwX2NoYXIgbGltIGliXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4gKilcblxuICB2YWwgaWdub3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmlnbm9yZV9jaGFyIGliIGxpbV0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kXG4gICAgIGRlY3JlbWVudHMgdGhlIGxpbWl0LiAqKVxuXG4gIHZhbCB0b2tlbiA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy50b2tlbiBpYl0gcmV0dXJucyB0aGUgc3RyaW5nIHN0b3JlZCBpbnRvIHRoZSB0b2tlblxuICAgICBidWZmZXIgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlcjogaXQgcmV0dXJucyB0aGUgdG9rZW4gbWF0Y2hlZCBieSB0aGVcbiAgICAgZm9ybWF0LiAqKVxuXG4gIHZhbCByZXNldF90b2tlbiA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWJdIHJlc2V0cyB0aGUgdG9rZW4gYnVmZmVyIG9mXG4gICAgIHRoZSBnaXZlbiBzY2FubmluZyBidWZmZXIuICopXG5cbiAgdmFsIGNoYXJfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuY2hhcl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnNcbiAgICAgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBsaW5lX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmxpbmVfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBuZXcgbGluZVxuICAgICBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgdG9rZW5fY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcudG9rZW5fY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiB0b2tlbnMgcmVhZFxuICAgICBzbyBmYXIgZnJvbSBbaWJdLiAqKVxuXG4gIHZhbCBlb2YgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVvZiBpYl0gcmV0dXJucyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBlbmRfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlciAoaWYgbm8gY2hhciBoYXMgZXZlciBiZWVuIHJlYWQsIGFuIGF0dGVtcHQgdG9cbiAgICAgcmVhZCBvbmUgaXMgcGVyZm9ybWVkKS4gKilcblxuICB2YWwgYmVnaW5uaW5nX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5iZWdpbm5pbmdfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBiZWdpbm5pbmcgb2YgaW5wdXRcbiAgICAgY29uZGl0aW9uIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIG5hbWVfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcubmFtZV9vZl9pbnB1dCBpYl0gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY2hhcmFjdGVyXG4gICAgIHNvdXJjZSBmb3IgaW5wdXQgYnVmZmVyIFtpYl0uICopXG5cbiAgdmFsIG9wZW5faW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgb3Blbl9pbl9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZV9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9mdW5jdGlvbiA6ICh1bml0IC0+IGNoYXIpIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcblxuICB2YWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXRcblxuICB2YWwgbWVtb19mcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG4gICgqIE9ic29sZXRlLiAqKVxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGliXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG5cbiAgbGV0IHN0ZGliID0gc3RkaW5cblxuICBsZXQgb3Blbl9pbl9maWxlIG9wZW5faW4gZm5hbWUgPVxuICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICB8IFwiLVwiIC0+IHN0ZGluXG4gICAgfCBmbmFtZSAtPlxuICAgICAgbGV0IGljID0gb3Blbl9pbiBmbmFtZSBpblxuICAgICAgZnJvbV9pY19jbG9zZV9hdF9lbmQgKEZyb21fZmlsZSAoZm5hbWUsIGljKSkgaWNcblxuXG4gIGxldCBvcGVuX2luID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luXG4gIGxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9maWxlID0gb3Blbl9pblxuICBsZXQgZnJvbV9maWxlX2JpbiA9IG9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBpYyA9XG4gICAgZnJvbV9pY19yYWlzZV9hdF9lbmQgKEZyb21fY2hhbm5lbCBpYykgaWNcblxuXG4gIGxldCBjbG9zZV9pbiBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgaWMgLT5cbiAgICAgIFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9maWxlIChfZm5hbWUsIGljKSAtPiBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZnVuY3Rpb24gfCBGcm9tX3N0cmluZyAtPiAoKVxuXG5cbiAgKCpcbiAgICAgT2Jzb2xldGU6IGEgbWVtbyBbZnJvbV9jaGFubmVsXSB2ZXJzaW9uIHRvIGJ1aWxkIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdXG4gICAgIHNjYW5uaW5nIGJ1ZmZlciBvdXQgb2YgYSBbU3RkbGliLmluX2NoYW5uZWxdLlxuICAgICBUaGlzIGZ1bmN0aW9uIHdhcyB1c2VkIHRvIHRyeSB0byBwcmVzZXJ2ZSB0aGUgc2Nhbm5pbmdcbiAgICAgc2VtYW50aWNzIGZvciB0aGUgKG5vdyBvYnNvbGV0ZSkgZnVuY3Rpb24gW2ZzY2FuZl0uXG4gICAgIEdpdmVuIHRoYXQgYWxsIHNjYW5uZXIgbXVzdCByZWFkIGZyb20gYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gc2Nhbm5pbmdcbiAgICAgYnVmZmVyLCBbZnNjYW5mXSBtdXN0IHJlYWQgZnJvbSBvbmUhXG4gICAgIE1vcmUgcHJlY2lzZWx5LCBnaXZlbiBbaWNdLCBhbGwgc3VjY2Vzc2l2ZSBjYWxscyBbZnNjYW5mIGljXSBtdXN0IHJlYWRcbiAgICAgZnJvbSB0aGUgc2FtZSBzY2FubmluZyBidWZmZXIuXG4gICAgIFRoaXMgb2JsaWdlZCB0aGlzIGxpYnJhcnkgdG8gYWxsb2NhdGVkIHNjYW5uaW5nIGJ1ZmZlcnMgdGhhdCB3ZXJlXG4gICAgIG5vdCBwcm9wZXJseSBnYXJiYWdlIGNvbGxlY3RhYmxlLCBoZW5jZSBsZWFkaW5nIHRvIG1lbW9yeSBsZWFrcy5cbiAgICAgSWYgeW91IG5lZWQgdG8gcmVhZCBmcm9tIGEgW1N0ZGxpYi5pbl9jaGFubmVsXSBpbnB1dCBjaGFubmVsXG4gICAgIFtpY10sIHNpbXBseSBkZWZpbmUgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF0gZm9ybWF0dGVkIGlucHV0IGNoYW5uZWwgYXMgaW5cbiAgICAgW2xldCBpYiA9IFNjYW5uaW5nLmZyb21fY2hhbm5lbCBpY10sIHRoZW4gdXNlIFtTY2FuZi5ic2NhbmYgaWJdIGFzIHVzdWFsLlxuICAqKVxuICBsZXQgbWVtb19mcm9tX2ljID1cbiAgICBsZXQgbWVtbyA9IHJlZiBbXSBpblxuICAgIChmdW4gc2Nhbl9jbG9zZV9pYyBpYyAtPlxuICAgICB0cnkgTGlzdC5hc3NxIGljICFtZW1vIHdpdGhcbiAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICBsZXQgaWIgPVxuICAgICAgICAgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIChGcm9tX2NoYW5uZWwgaWMpIGljIGluXG4gICAgICAgbWVtbyA6PSAoaWMsIGliKSA6OiAhbWVtbztcbiAgICAgICBpYilcblxuXG4gICgqIE9ic29sZXRlOiBzZWUgeyFtZW1vX2Zyb21faWN9IGFib3ZlLiAqKVxuICBsZXQgbWVtb19mcm9tX2NoYW5uZWwgPSBtZW1vX2Zyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cblxuKCogUmVwb3J0aW5nIGVycm9ycy4gKilcbmV4Y2VwdGlvbiBTY2FuX2ZhaWx1cmUgb2Ygc3RyaW5nXG5cbmxldCBiYWRfaW5wdXQgcyA9IHJhaXNlIChTY2FuX2ZhaWx1cmUgcylcblxubGV0IGJhZF9pbnB1dF9lc2NhcGUgYyA9XG4gIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgJUNcIiBjKVxuXG5cbmxldCBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgdGhlIHNwZWNpZmllZCBsZW5ndGggd2FzIHRvbyBzaG9ydCBmb3IgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICBwcmVtYXR1cmUgZW5kIG9mIGZpbGUgb2NjdXJyZWQgYmVmb3JlIGVuZCBvZiB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm8gZG90IG9yIGV4cG9uZW50IHBhcnQgZm91bmQgaW4gZmxvYXQgdG9rZW5cIlxuXG5cbmxldCBiYWRfaGV4X2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm90IGEgdmFsaWQgZmxvYXQgaW4gaGV4YWRlY2ltYWwgbm90YXRpb25cIlxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kgPVxuICBQcmludGYuc3ByaW50ZiBcImxvb2tpbmcgZm9yICVDLCBmb3VuZCAlQ1wiIGMgY2lcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoIGMgY2kgPVxuICBiYWRfaW5wdXQgKGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSlcblxuXG5sZXQgcmVjIHNraXBfd2hpdGVzIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW4gYmVnaW5cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPlxuICAgICAgU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IHNraXBfd2hpdGVzIGliXG4gICAgfCBfIC0+ICgpXG4gIGVuZFxuXG5cbigqIENoZWNraW5nIHRoYXQgW2NdIGlzIGluZGVlZCBpbiB0aGUgaW5wdXQsIHRoZW4gc2tpcHMgaXQuXG4gICBJbiB0aGlzIGNhc2UsIHRoZSBjaGFyYWN0ZXIgW2NdIGhhcyBiZWVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZVxuICAgZm9ybWF0IGFzIGJlaW5nIG1hbmRhdG9yeSBpbiB0aGUgaW5wdXQ7IGhlbmNlIHdlIHNob3VsZCBmYWlsIHdpdGhcbiAgIFtFbmRfb2ZfZmlsZV0gaW4gY2FzZSBvZiBlbmRfb2ZfaW5wdXQuXG4gICAoUmVtZW1iZXIgdGhhdCBbU2Nhbl9mYWlsdXJlXSBpcyByYWlzZWQgb25seSB3aGVuICh3ZSBjYW4gcHJvdmUgYnlcbiAgIGV2aWRlbmNlKSB0aGF0IHRoZSBpbnB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybWF0IHN0cmluZyBnaXZlbi4gV2UgbXVzdFxuICAgdGh1cyBkaWZmZXJlbnRpYXRlIFtFbmRfb2ZfZmlsZV0gYXMgYW4gZXJyb3IgZHVlIHRvIGxhY2sgb2YgaW5wdXQsIGFuZFxuICAgW1NjYW5fZmFpbHVyZV0gd2hpY2ggaXMgZHVlIHRvIHByb3ZhYmx5IHdyb25nIGlucHV0LiBJIGFtIG5vdCBzdXJlIHRoaXMgaXNcbiAgIHdvcnRoIHRoZSBidXJkZW46IGl0IGlzIGNvbXBsZXggYW5kIHNvbWVob3cgc3VibGltaW5hbDsgc2hvdWxkIGJlIGNsZWFyZXJcbiAgIHRvIGZhaWwgd2l0aCBTY2FuX2ZhaWx1cmUgXCJOb3QgZW5vdWdoIGlucHV0IHRvIGNvbXBsZXRlIHNjYW5uaW5nXCIhKVxuXG4gICBUaGF0J3Mgd2h5LCB3YWl0aW5nIGZvciBhIGJldHRlciBzb2x1dGlvbiwgd2UgdXNlIGNoZWNrZWRfcGVla19jaGFyIGhlcmUuXG4gICBXZSBhcmUgYWxzbyBjYXJlZnVsIHRvIHRyZWF0IFwiXFxyXFxuXCIgaW4gdGhlIGlucHV0IGFzIGFuIGVuZCBvZiBsaW5lIG1hcmtlcjpcbiAgIGl0IGFsd2F5cyBtYXRjaGVzIGEgJ1xcbicgc3BlY2lmaWNhdGlvbiBpbiB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZy4gKilcbmxldCByZWMgY2hlY2tfY2hhciBpYiBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJyAnIC0+IHNraXBfd2hpdGVzIGliXG4gIHwgJ1xcbicgLT4gY2hlY2tfbmV3bGluZSBpYlxuICB8IGMgLT4gY2hlY2tfdGhpc19jaGFyIGliIGNcblxuYW5kIGNoZWNrX3RoaXNfY2hhciBpYiBjID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgY2kgPSBjIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgZWxzZVxuICBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5hbmQgY2hlY2tfbmV3bGluZSBpYiA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGNpIHdpdGhcbiAgfCAnXFxuJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICB8ICdcXHInIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBjaGVja190aGlzX2NoYXIgaWIgJ1xcbidcbiAgfCBfIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxuJyBjaVxuXG5cbigqIEV4dHJhY3RpbmcgdG9rZW5zIGZyb20gdGhlIG91dHB1dCB0b2tlbiBidWZmZXIuICopXG5cbmxldCB0b2tlbl9jaGFyIGliID0gKFNjYW5uaW5nLnRva2VuIGliKS5bMF1cblxubGV0IHRva2VuX3N0cmluZyA9IFNjYW5uaW5nLnRva2VuXG5cbmxldCB0b2tlbl9ib29sIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcudG9rZW4gaWIgd2l0aFxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBzIC0+IGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbnZhbGlkIGJvb2xlYW4gJyVzJ1wiIHMpXG5cblxuKCogVGhlIHR5cGUgb2YgaW50ZWdlciBjb252ZXJzaW9ucy4gKilcbnR5cGUgaW50ZWdlcl9jb252ZXJzaW9uID1cbiAgfCBCX2NvbnZlcnNpb24gKCogVW5zaWduZWQgYmluYXJ5IGNvbnZlcnNpb24gKilcbiAgfCBEX2NvbnZlcnNpb24gKCogU2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IElfY29udmVyc2lvbiAoKiBTaWduZWQgaW50ZWdlciBjb252ZXJzaW9uICopXG4gIHwgT19jb252ZXJzaW9uICgqIFVuc2lnbmVkIG9jdGFsIGNvbnZlcnNpb24gKilcbiAgfCBVX2NvbnZlcnNpb24gKCogVW5zaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgWF9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGhleGFkZWNpbWFsIGNvbnZlcnNpb24gKilcblxuXG5sZXQgaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgPSBmdW5jdGlvblxuICB8ICdiJyAtPiBCX2NvbnZlcnNpb25cbiAgfCAnZCcgLT4gRF9jb252ZXJzaW9uXG4gIHwgJ2knIC0+IElfY29udmVyc2lvblxuICB8ICdvJyAtPiBPX2NvbnZlcnNpb25cbiAgfCAndScgLT4gVV9jb252ZXJzaW9uXG4gIHwgJ3gnIHwgJ1gnIC0+IFhfY29udmVyc2lvblxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuKCogRXh0cmFjdCBhbiBpbnRlZ2VyIGxpdGVyYWwgdG9rZW4uXG4gICBTaW5jZSB0aGUgZnVuY3Rpb25zIFN0ZGxpYi4qaW50Kl9vZl9zdHJpbmcgZG8gbm90IGFjY2VwdCBhIGxlYWRpbmcgKyxcbiAgIHdlIHNraXAgaXQgaWYgbmVjZXNzYXJ5LiAqKVxubGV0IHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIgPVxuICBsZXQgdG9rID1cbiAgICBtYXRjaCBjb252IHdpdGhcbiAgICB8IERfY29udmVyc2lvbiB8IElfY29udmVyc2lvbiAtPiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgVV9jb252ZXJzaW9uIC0+IFwiMHVcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBPX2NvbnZlcnNpb24gLT4gXCIwb1wiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFhfY29udmVyc2lvbiAtPiBcIjB4XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgQl9jb252ZXJzaW9uIC0+IFwiMGJcIiBeIFNjYW5uaW5nLnRva2VuIGliIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCB0b2sgaW5cbiAgaWYgbCA9IDAgfHwgdG9rLlswXSA8PiAnKycgdGhlbiB0b2sgZWxzZSBTdHJpbmcuc3ViIHRvayAxIChsIC0gMSlcblxuXG4oKiBBbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBudW1iZXIgcmFpc2UgdGhlIGV4Y2VwdGlvblxuICAgRmFpbHVyZSB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBwb3NzaWJsZS5cbiAgIFRoaXMgZXhjZXB0aW9uIGlzIHRoZW4gdHJhcHBlZCBpbiBba3NjYW5mXS4gKilcbmxldCB0b2tlbl9pbnQgY29udiBpYiA9IGludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbmxldCB0b2tlbl9mbG9hdCBpYiA9IGZsb2F0X29mX3N0cmluZyAoU2Nhbm5pbmcudG9rZW4gaWIpXG5cbigqIFRvIHNjYW4gbmF0aXZlIGludHMsIGludDMyIGFuZCBpbnQ2NCBpbnRlZ2Vycy5cbiAgIFdlIGNhbm5vdCBhY2Nlc3MgdG8gY29udmVyc2lvbnMgdG8vZnJvbSBzdHJpbmdzIGZvciB0aG9zZSB0eXBlcyxcbiAgIE5hdGl2ZWludC5vZl9zdHJpbmcsIEludDMyLm9mX3N0cmluZywgYW5kIEludDY0Lm9mX3N0cmluZyxcbiAgIHNpbmNlIHRob3NlIG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8gW1NjYW5mXS5cbiAgIEhvd2V2ZXIsIHdlIGNhbiBiaW5kIGFuZCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgcHJpbWl0aXZlcyB0aGF0IGFyZVxuICAgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lLiAqKVxuZXh0ZXJuYWwgbmF0aXZlaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDMyX29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQ2NF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxuXG5sZXQgdG9rZW5fbmF0aXZlaW50IGNvbnYgaWIgPSBuYXRpdmVpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDMyIGNvbnYgaWIgPSBpbnQzMl9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50NjQgY29udiBpYiA9IGludDY0X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxuKCogU2Nhbm5pbmcgbnVtYmVycy4gKilcblxuKCogRGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzdXBwb3NlIHRoYXQgb25lIGNoYXJhY3RlciBoYXMgYmVlbiBjaGVja2VkIGFuZFxuICAgaXMgYXZhaWxhYmxlLCBzaW5jZSB0aGV5IHJldHVybiBhdCBlbmQgb2YgZmlsZSB3aXRoIHRoZSBjdXJyZW50bHkgZm91bmRcbiAgIHRva2VuIHNlbGVjdGVkLlxuXG4gICBQdXQgaXQgaW4gYW5vdGhlciB3YXksIHRoZSBkaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHNjYW4gZm9yIGEgcG9zc2libHlcbiAgIGVtcHR5IHNlcXVlbmNlIG9mIGRpZ2l0cywgKGhlbmNlLCBhIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcgZnJvbSBvbmUgb2YgdGhvc2VcbiAgIGZ1bmN0aW9ucyBkb2VzIG5vdCBpbXBseSB0aGF0IHRoZSB0b2tlbiBpcyBhIHdlbGwtZm9ybWVkIG51bWJlcjogdG8gZ2V0IGFcbiAgIHRydWUgbnVtYmVyLCBpdCBpcyBtYW5kYXRvcnkgdG8gY2hlY2sgdGhhdCBhdCBsZWFzdCBvbmUgdmFsaWQgZGlnaXQgaXNcbiAgIGF2YWlsYWJsZSBiZWZvcmUgY2FsbGluZyBvbmUgb2YgdGhlIGRpZ2l0IHNjYW5uaW5nIGZ1bmN0aW9ucykuICopXG5cbigqIFRoZSBkZWNpbWFsIGNhc2UgaXMgdHJlYXRlZCBlc3BlY2lhbGx5IGZvciBvcHRpbWl6YXRpb24gcHVycG9zZXMuICopXG5sZXQgcmVjIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgJ18nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGVjaW1hbCBkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgZGVjaW1hbCBkaWdpdFwiIGMpXG5cblxuKCogVG8gc2NhbiBudW1iZXJzIGZyb20gb3RoZXIgYmFzZXMsIHdlIHVzZSBhIHByZWRpY2F0ZSBhcmd1bWVudCB0b1xuICAgc2NhbiBkaWdpdHMuICopXG5sZXQgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9kaWdpdHMgd2lkdGggaWIgPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8IGMgd2hlbiBkaWdpdHAgYyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgJ18nIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8IF8gLT4gd2lkdGggaW5cbiAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9kaWdpdF9wbHVzIGJhc2lzIGRpZ2l0cCB3aWR0aCBpYiA9XG4gICgqIEVuc3VyZSB3ZSBoYXZlIGdvdCBlbm91Z2ggd2lkdGggbGVmdCxcbiAgICAgYW5kIHJlYWQgYXQgbGVhc3Qgb25lIGRpZ2l0LiAqKVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGRpZ2l0cCBjIHRoZW5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliXG4gIGVsc2VcbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIHZhbGlkICVzIGRpZ2l0XCIgYyBiYXNpcylcblxuXG5sZXQgaXNfYmluYXJ5X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzEnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fYmluYXJ5X2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImJpbmFyeVwiIGlzX2JpbmFyeV9kaWdpdFxuXG5sZXQgaXNfb2N0YWxfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnNycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9vY3RhbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJvY3RhbFwiIGlzX29jdGFsX2RpZ2l0XG5cbmxldCBpc19oZXhhX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9oZXhhZGVjaW1hbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJoZXhhZGVjaW1hbFwiIGlzX2hleGFfZGlnaXRcblxuKCogU2NhbiBhIGRlY2ltYWwgaW50ZWdlci4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50ID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXNcblxubGV0IHNjYW5fc2lnbiB3aWR0aCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJysnIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8ICctJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW4gYW4gdW5zaWduZWQgaW50ZWdlciB0aGF0IGNvdWxkIGJlIGdpdmVuIGluIGFueSAoY29tbW9uKSBiYXNpcy5cbiAgIElmIGRpZ2l0cyBhcmUgcHJlZml4ZWQgYnkgb25lIG9mIDB4LCAwWCwgMG8sIG9yIDBiLCB0aGUgbnVtYmVyIGlzXG4gICBhc3N1bWVkIHRvIGJlIHdyaXR0ZW4gcmVzcGVjdGl2ZWx5IGluIGhleGFkZWNpbWFsLCBoZXhhZGVjaW1hbCxcbiAgIG9jdGFsLCBvciBiaW5hcnkuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgYmVnaW4gbWF0Y2ggYyB3aXRoXG4gICAgfCAneCcgfCAnWCcgLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdvJyAtPiBzY2FuX29jdGFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ2InIC0+IHNjYW5fYmluYXJ5X2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgXyAtPiBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBlbmRcbiAgfCBfIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9pbnRfY29udmVyc2lvbiBjb252IHdpZHRoIGliID1cbiAgbWF0Y2ggY29udiB3aXRoXG4gIHwgQl9jb252ZXJzaW9uIC0+IHNjYW5fYmluYXJ5X2ludCB3aWR0aCBpYlxuICB8IERfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgSV9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliXG4gIHwgT19jb252ZXJzaW9uIC0+IHNjYW5fb2N0YWxfaW50IHdpZHRoIGliXG4gIHwgVV9jb252ZXJzaW9uIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBYX2NvbnZlcnNpb24gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FubmluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqKVxuXG4oKiBGcmFjdGlvbmFsIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIEV4cCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJ2UnIHwgJ0UnIGFzIGMgLT5cbiAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIFNjYW4gdGhlIGludGVnZXIgcGFydCBvZiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgKG5vdCB1c2luZyB0aGVcbiAgIE9DYW1sIGxleGljYWwgY29udmVudGlvbiBzaW5jZSB0aGUgaW50ZWdlciBwYXJ0IGNhbiBiZSBlbXB0eSk6XG4gICBhbiBvcHRpb25hbCBzaWduLCBmb2xsb3dlZCBieSBhIHBvc3NpYmx5IGVtcHR5IHNlcXVlbmNlIG9mIGRlY2ltYWxcbiAgIGRpZ2l0cyAoZS5nLiAtLjEpLiAqKVxubGV0IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG5cblxuKCpcbiAgIEZvciB0aGUgdGltZSBiZWluZyB3ZSBoYXZlIChhcyBmb3VuZCBpbiBzY2FuZi5tbGkpOlxuICAgdGhlIGZpZWxkIHdpZHRoIGlzIGNvbXBvc2VkIG9mIGFuIG9wdGlvbmFsIGludGVnZXIgbGl0ZXJhbFxuICAgaW5kaWNhdGluZyB0aGUgbWF4aW1hbCB3aWR0aCBvZiB0aGUgdG9rZW4gdG8gcmVhZC5cbiAgIFVuZm9ydHVuYXRlbHksIHRoZSB0eXBlLWNoZWNrZXIgbGV0IHRoZSB1c2VyIHdyaXRlIGFuIG9wdGlvbmFsIHByZWNpc2lvbixcbiAgIHNpbmNlIHRoaXMgaXMgdmFsaWQgZm9yIHByaW50ZiBmb3JtYXQgc3RyaW5ncy5cblxuICAgVGh1cywgdGhlIG5leHQgc3RlcCBmb3IgU2NhbmYgaXMgdG8gc3VwcG9ydCBhIGZ1bGwgd2lkdGggYW5kIHByZWNpc2lvblxuICAgaW5kaWNhdGlvbiwgbW9yZSBvciBsZXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmb3IgcHJpbnRmLCBwb3NzaWJseSBleHRlbmRlZFxuICAgdG8gdGhlIHNwZWNpZmljYXRpb24gb2YgYSBbbWF4LCBtaW5dIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWRcbiAgIGZvciBzdHJpbmdzLiBTb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHNwZWMgZm9yIHNjYW5mLm1saTpcblxuICAgVGhlIG9wdGlvbmFsIFt3aWR0aF0gaXMgYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsXG4gICB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC4gRm9yIGluc3RhbmNlLCBbJTZkXSByZWFkcyBhbiBpbnRlZ2VyLFxuICAgaGF2aW5nIGF0IG1vc3QgNiBjaGFyYWN0ZXJzLlxuXG4gICBUaGUgb3B0aW9uYWwgW3ByZWNpc2lvbl0gaXMgYSBkb3QgWy5dIGZvbGxvd2VkIGJ5IGFuIGludGVnZXI6XG5cbiAgIC0gaW4gdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBjb252ZXJzaW9ucyAoWyVmXSwgWyVlXSwgWyVnXSwgWyVGXSwgWyVFXSxcbiAgIGFuZCBbJUZdIGNvbnZlcnNpb25zLCB0aGUgW3ByZWNpc2lvbl0gaW5kaWNhdGVzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAgZGlnaXRzIHRoYXQgbWF5IGZvbGxvdyB0aGUgZGVjaW1hbCBwb2ludC4gRm9yIGluc3RhbmNlLCBbJS40Zl0gcmVhZHMgYVxuICAgW2Zsb2F0XSB3aXRoIGF0IG1vc3QgNCBmcmFjdGlvbmFsIGRpZ2l0cyxcblxuICAgLSBpbiB0aGUgc3RyaW5nIGNvbnZlcnNpb25zIChbJXNdLCBbJVNdLCBbJVxcWyByYW5nZSBcXF1dKSwgYW5kIGluIHRoZVxuICAgaW50ZWdlciBudW1iZXIgY29udmVyc2lvbnMgKFslaV0sIFslZF0sIFsldV0sIFsleF0sIFslb10sIGFuZCB0aGVpclxuICAgW2ludDMyXSwgW2ludDY0XSwgYW5kIFtuYXRpdmVfaW50XSBjb3JyZXNwb25kZW50KSwgdGhlIFtwcmVjaXNpb25dXG4gICBpbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHRva2VuIHJlYWQsXG5cbiAgIC0gb24gYWxsIG90aGVyIGNvbnZlcnNpb25zLCB0aGUgd2lkdGggYW5kIHByZWNpc2lvbiBzcGVjaWZ5IHRoZSBbbWF4LCBtaW5dXG4gICByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLlxuKilcbmxldCBzY2FuX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliKSBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG4gIHwgXyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG5cblxubGV0IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGVycm9yIHN0ciA9XG4gIGxldCBsb3dlcmNhc2UgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnQScgLi4gJ1onIC0+XG4gICAgICBjaGFyX29mX2ludCAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIGludF9vZl9jaGFyICdhJylcbiAgICB8IF8gLT4gYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoID0gcmVmIHdpZHRoIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBsb3dlcmNhc2UgYyA8PiBsb3dlcmNhc2Ugc3RyLltpXSB0aGVuIGVycm9yICgpO1xuICAgIGlmICF3aWR0aCA9IDAgdGhlbiBlcnJvciAoKTtcbiAgICB3aWR0aCA6PSBTY2FubmluZy5zdG9yZV9jaGFyICF3aWR0aCBpYiBjO1xuICBkb25lO1xuICAhd2lkdGhcblxuXG5sZXQgc2Nhbl9oZXhfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgbGV0IHdpZHRoID0gY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcInhcIiBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgICApXG4gICAgICAgICAgfCBfIC0+IHdpZHRoIGluXG4gICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICAgIHwgXyAtPiB3aWR0aFxuICApXG4gIHwgJ24nIHwgJ04nIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwiYW5cIlxuICB8ICdpJyB8ICdJJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcIm5maW5pdHlcIlxuICB8IF8gLT4gYmFkX2hleF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAoKiBUaGUgZWZmZWN0aXZlIHdpZHRoIGF2YWlsYWJsZSBmb3Igc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCBpc1xuICAgICAgIHRoZSBtaW5pbXVtIG9mIGRlY2xhcmVkIHByZWNpc2lvbiBhbmQgd2lkdGggbGVmdC4gKilcbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAoKiBBZnRlciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHdpdGggW3ByZWNpc2lvbl0gcHJvdmlzaW9uYWwgd2lkdGgsXG4gICAgICAgW3dpZHRoX3ByZWNpc2lvbl0gaXMgbGVmdC4gKilcbiAgICBsZXQgd2lkdGhfcHJlY2lzaW9uID0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliIGluXG4gICAgKCogSGVuY2UsIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgdG9vayBleGFjdGx5XG4gICAgICAgW3ByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbl0gY2hhcnMuICopXG4gICAgbGV0IGZyYWNfd2lkdGggPSBwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb24gaW5cbiAgICAoKiBBbmQgbmV3IHByb3Zpc2lvbmFsIHdpZHRoIGlzIFt3aWR0aCAtIHdpZHRoX3ByZWNpc2lvbi4gKilcbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIGZyYWNfd2lkdGggaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCAnZScgfCAnRScgLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICB8ICd4JyB8ICdYJyBhcyBjIC0+IChcbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgIClcbiAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGJhZF9mbG9hdCAoKSBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgfCBfIC0+IHdpZHRoXG4gICAgKVxuICAgIHwgXyAtPlxuICAgICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4gIClcbiAgfCAnMScgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuKCogU3BlY2lhbCBjYXNlIG9mIG5hbiBhbmQgaW5maW5pdHk6XG4gIHwgJ2knIC0+XG4gIHwgJ24nIC0+XG4qKVxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxuKCogU2NhbiBhIHJlZ3VsYXIgc3RyaW5nOlxuICAgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgYSBzcGFjZSwgaWYgbm8gc2Nhbm5pbmcgaW5kaWNhdGlvbiBoYXMgYmVlbiBnaXZlbjtcbiAgIG90aGVyd2lzZSwgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHNjYW5uaW5nXG4gICBpbmRpY2F0aW9uIFtzdHBdLlxuICAgSXQgYWxzbyBzdG9wcyBhdCBlbmQgb2YgZmlsZSBvciB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGhhc1xuICAgYmVlbiByZWFkLiAqKVxubGV0IHNjYW5fc3RyaW5nIHN0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgbG9vcCB3aWR0aCA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbWF0Y2ggc3RwIHdpdGhcbiAgICAgIHwgU29tZSBjJyB3aGVuIGMgPSBjJyAtPiBTY2FubmluZy5za2lwX2NoYXIgd2lkdGggaWJcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaW5cbiAgbG9vcCB3aWR0aFxuXG5cbigqIFNjYW4gYSBjaGFyOiBwZWVrIHN0cmljdGx5IG9uZSBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LCB3aGF0c29ldmVyLiAqKVxubGV0IHNjYW5fY2hhciB3aWR0aCBpYiA9XG4gICgqIFRoZSBjYXNlIHdpZHRoID0gMCBjb3VsZCBub3QgaGFwcGVuIGhlcmUsIHNpbmNlIGl0IGlzIHRlc3RlZCBiZWZvcmVcbiAgICAgY2FsbGluZyBzY2FuX2NoYXIsIGluIHRoZSBtYWluIHNjYW5uaW5nIGZ1bmN0aW9uLlxuICAgIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJhIGNoYXJhY3RlclwiIGVsc2UgKilcbiAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIpXG5cblxubGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gIHwgJ24nIC0+ICdcXDAxMCdcbiAgfCAncicgLT4gJ1xcMDEzJ1xuICB8ICdiJyAtPiAnXFwwMDgnXG4gIHwgJ3QnIC0+ICdcXDAwOSdcbiAgfCBjIC0+IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPSBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG5cbmxldCBjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTAwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMwICtcbiAgICAgMTAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJiYWQgY2hhcmFjdGVyIGRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWMlY1wiIGMwIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgaGV4YWRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9XG4gIGxldCBkID0gaW50X29mX2NoYXIgYyBpblxuICAoKiBDb3VsZCBhbHNvIGJlOlxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJzknIHRoZW4gZCAtIGludF9vZl9jaGFyICcwJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnRicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnQScgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ2YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ2EnIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICopXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ2EnIHRoZW5cbiAgICBkIC0gODcgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICopIGVsc2VcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnQScgdGhlblxuICAgIGQgLSA1NSAgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICopIGVsc2VcbiAgICBkIC0gaW50X29mX2NoYXIgJzAnXG5cblxubGV0IGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTYgKiBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJiYWQgY2hhcmFjdGVyIGhleGFkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjXCIgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIENhbGxlZCBpbiBwYXJ0aWN1bGFyIHdoZW4gZW5jb3VudGVyaW5nICdcXFxcJyBhcyBzdGFydGVyIG9mIGEgY2hhci5cbiAgIFN0b3BzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyAnXFwnJy4gKilcbmxldCBjaGVja19uZXh0X2NoYXIgbWVzc2FnZSB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSBlbHNlXG4gIGNcblxuXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBDaGFyXCJcbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyA9IGNoZWNrX25leHRfY2hhciBcImEgU3RyaW5nXCJcblxubGV0IHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIgPVxuICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1xcXCInIHwgJ24nIHwgJ3QnIHwgJ2InIHwgJ3InIGFzIGMgLT5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChjaGFyX2Zvcl9iYWNrc2xhc2ggYylcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzAgPSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyKVxuICB8ICd4JyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMilcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0X2VzY2FwZSBjXG5cblxuKCogU2NhbiBhIGNoYXJhY3RlciAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9jaGFyIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IGZpbmRfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjXG5cbiAgYW5kIGZpbmRfY2hhciB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFxcJyAtPlxuICAgICAgZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYikgaWIpXG4gICAgfCBjIC0+XG4gICAgICBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGMgaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGRlbGltaXRlZCBzdHJpbmcgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcXCInIGNcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8ICdcXFxcJyAtPiBzY2FuX2JhY2tzbGFzaCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBzY2FuX2JhY2tzbGFzaCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xccicgLT4gc2tpcF9uZXdsaW5lIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliKVxuXG4gIGFuZCBza2lwX25ld2xpbmUgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliICdcXHInKVxuXG4gIGFuZCBza2lwX3NwYWNlcyB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJyAnIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIHdpZHRoIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBib29sZWFuIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9ib29sIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAndCcgLT4gNFxuICAgIHwgJ2YnIC0+IDVcbiAgICB8IGMgLT5cbiAgICAgIGJhZF9pbnB1dFxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJ0aGUgY2hhcmFjdGVyICVDIGNhbm5vdCBzdGFydCBhIGJvb2xlYW5cIiBjKSBpblxuICBzY2FuX3N0cmluZyBOb25lIG0gaWJcblxuXG4oKiBTY2FuIGEgc3RyaW5nIGNvbnRhaW5pbmcgZWxlbWVudHMgaW4gY2hhcl9zZXQgYW5kIHRlcm1pbmF0ZWQgYnkgc2Nhbl9pbmRpY1xuICAgaWYgcHJvdmlkZWQuICopXG5sZXQgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBzY2FuX2luZGljIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2NoYXJzIGkgc3RwID1cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGkgPiAwICYmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSAmJlxuICAgICAgIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgJiZcbiAgICAgICBpbnRfb2ZfY2hhciBjIDw+IHN0cCB0aGVuXG4gICAgICBsZXQgXyA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgbWF4X2ludCBpYiBjIGluXG4gICAgICBzY2FuX2NoYXJzIChpIC0gMSkgc3RwIGluXG4gIG1hdGNoIHNjYW5faW5kaWMgd2l0aFxuICB8IE5vbmUgLT4gc2Nhbl9jaGFycyB3aWR0aCAoLTEpO1xuICB8IFNvbWUgYyAtPlxuICAgIHNjYW5fY2hhcnMgd2lkdGggKGludF9vZl9jaGFyIGMpO1xuICAgIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuXG4gICAgICBsZXQgY2kgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICAgIGlmIGMgPSBjaVxuICAgICAgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICAgICAgZWxzZSBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5cbigqIFRoZSBnbG9iYWwgZXJyb3IgcmVwb3J0IGZ1bmN0aW9uIGZvciBbU2NhbmZdLiAqKVxubGV0IHNjYW5mX2JhZF9pbnB1dCBpYiA9IGZ1bmN0aW9uXG4gIHwgU2Nhbl9mYWlsdXJlIHMgfCBGYWlsdXJlIHMgLT5cbiAgICBsZXQgaSA9IFNjYW5uaW5nLmNoYXJfY291bnQgaWIgaW5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwic2NhbmY6IGJhZCBpbnB1dCBhdCBjaGFyIG51bWJlciAlaTogJXNcIiBpIHMpXG4gIHwgeCAtPiByYWlzZSB4XG5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIGEgY291bnRlciBmcm9tIGFuIGlucHV0IGJ1ZmZlci4gKilcbmxldCBnZXRfY291bnRlciBpYiBjb3VudGVyID1cbiAgbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyIC0+IFNjYW5uaW5nLmxpbmVfY291bnQgaWJcbiAgfCBDaGFyX2NvdW50ZXIgLT4gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYlxuICB8IFRva2VuX2NvdW50ZXIgLT4gU2Nhbm5pbmcudG9rZW5fY291bnQgaWJcblxuXG4oKiBDb21wdXRlIHRoZSB3aWR0aCBvZiBhIHBhZGRpbmcgb3B0aW9uIChzZWUgXCIlNDJ7XCIgYW5kIFwiJTEyMyhcIikuICopXG5sZXQgd2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBtYXhfaW50XG4gIHwgU29tZSB3aWR0aCAtPiB3aWR0aFxuXG5cbmxldCBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyA9XG4gIGlmIGZtdGluZyA9IEVzY2FwZWRfcGVyY2VudCB0aGVuICclJywgXCJcIiBlbHNlXG4gICAgbGV0IHN0ciA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgaW5cbiAgICBsZXQgc3RwID0gc3RyLlsxXSBpblxuICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgMiAoU3RyaW5nLmxlbmd0aCBzdHIgLSAyKSBpblxuICAgIHN0cCwgc3ViX3N0clxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBSZWFkZXIgbWFuYWdlbWVudCAqKVxuXG4oKiBBIGNhbGwgdG8gdGFrZV9mb3JtYXRfcmVhZGVycyBvbiBhIGZvcm1hdCBpcyBldmFsdWF0ZWQgaW50byBmdW5jdGlvbnNcbiAgIHRha2luZyByZWFkZXJzIGFzIGFyZ3VtZW50cyBhbmQgYWdncmVnYXRlIHRoZW0gaW50byBhbiBoZXRlcm9nZW5lb3VzIGxpc3QgKilcbigqIFdoZW4gYWxsIHJlYWRlcnMgYXJlIHRha2VuLCBmaW5hbGx5IHBhc3MgdGhlIGxpc3Qgb2YgdGhlIHJlYWRlcnMgdG8gdGhlXG4gICBjb250aW51YXRpb24gay4gKilcbmxldCByZWMgdGFrZV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIGQgPVxuZnVuIGsgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3RcbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX3N0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50MzIgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBOYXRpdmVpbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDY0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmxvYXQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBCb29sIChfLCByZXN0KSAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDdXN0b20gKF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpICAgIC0+XG4gICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSkgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgICAgICAgIC0+IHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyBrIGlnbiByZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAgICAgICAtPiBrIE5pbFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBmbXR0eSBjb21pbmcgZnJvbSBhIEZvcm1hdF9zdWJzdCBcIiUoLi4uJSlcIi4gKilcbmFuZCB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGZtdHR5IC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBSZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBpZ25vcmVkIHBhcmFtZXRlci4gKilcbmFuZCB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgaWdub3JlZCAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHNjYW5uaW5nICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHNjYW5uaW5nIGZ1bmN0aW9uLiAqKVxuKCogU2NhbiBhIHN0cmVhbSBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgYW5kIHJlYWRlcnMgb2J0YWluZWQgYnlcbiAgIHRha2VfZm9ybWF0X3JlYWRlcnMsIGFuZCBhZ2dyZWdhdGUgc2Nhbm5lZCB2YWx1ZXMgaW50byBhblxuICAgaGV0ZXJvZ2VuZW91cyBsaXN0LiAqKVxuKCogUmV0dXJuIHRoZSBoZXRlcm9nZW5lb3VzIGxpc3Qgb2Ygc2Nhbm5lZCB2YWx1ZXMuICopXG5sZXQgcmVjIG1ha2Vfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZi5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+IChhLCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgc3RwKSB3aWR0aCBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAneycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ1snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgTm9uZSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG5cbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludCBjKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQzMiBjKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5fbmF0aXZlaW50IGMpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDY0IGMpXG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfRiB8IEZsb2F0X0NGKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9jYW1sX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cpKSxcbiAgICAgICAgICAgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfaCB8IEZsb2F0X0gpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2hleF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiBfIF8gaWIgPSBzY2FuX2Jvb2wgaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX2Jvb2xcbiAgfCBBbHBoYSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiVhXFxcIlwiXG4gIHwgVGhldGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIldFxcXCJcIlxuICB8IEN1c3RvbSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiU/XFxcIiAoY3VzdG9tIGNvbnZlcnRlcilcIlxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGJlZ2luIG1hdGNoIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpIC0+XG4gICAgICAgIGxldCB4ID0gcmVhZGVyIGliIGluXG4gICAgICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10X3Jlc3QgcmVhZGVyc19yZXN0KVxuICAgIHwgTmlsIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwic2NhbmY6IG1pc3NpbmcgcmVhZGVyXCJcbiAgICBlbmRcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgaWYgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgICBlbHNlIGJhZF9pbnB1dCBcImVuZCBvZiBpbnB1dCBub3QgZm91bmRcIlxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgc3RyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiBjaHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzIGZtdHR5XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKGZtdCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQsIGZtdCcgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10JyA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgKCogVE9ETzogZmluZCBhIHdheSB0byBhdm9pZCByZXBhcnNpbmcgdHdpY2UgKilcblxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0eXBlLWNoZWNrcyBiZWxvdyAqY2FuKiBmYWlsIGJlY2F1c2Ugb2YgdHlwZVxuICAgICAgICAgICBhbWJpZ3VpdHkgaW4gcHJlc2VuY2Ugb2YgaWdub3JlZC1yZWFkZXJzOiBcIiVfciVkXCIgYW5kIFwiJWQlX3JcIlxuICAgICAgICAgICBhcmUgdHlwZWQgaW4gdGhlIHNhbWUgd2F5LlxuXG4gICAgICAgICAgICMgU2NhbmYuc3NjYW5mIFwiXFxcIiVfciVkXFxcIjNcIiBcIiUoJWQlX3IlKVwiIGlnbm9yZVxuICAgICAgICAgICAgIChmdW4gZm10IG4gLT4gc3RyaW5nX29mX2Zvcm1hdCBmbXQsIG4pXG4gICAgICAgICAgIEV4Y2VwdGlvbjogQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2guXG5cbiAgICAgICAgICAgV2Ugc2hvdWxkIHByb3Blcmx5IGNhdGNoIHRoaXMgZXhjZXB0aW9uLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCBmbXR0eSksXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCcgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKEZvcm1hdCAoZm10LCBzKSxcbiAgICAgICAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycylcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKFNvbWUgc3RwKSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IE5vbmUgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIGxldCBjb3VudCA9IGdldF9jb3VudGVyIGliIGNvdW50ZXIgaW5cbiAgICBDb25zIChjb3VudCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCk7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICd7JztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ1snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG5cbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgIGJlZ2luIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10JyByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKF8sIGFyZ19yZXN0KSAtPiBhcmdfcmVzdFxuICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgIGVuZFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIE5pbFxuXG4oKiBDYXNlIGFuYWx5c2lzIG9uIHBhZGRpbmcgYW5kIHByZWNpc2lvbi4gKilcbigqIFJlamVjdCBmb3JtYXRzIGNvbnRhaW5pbmcgXCIlKlwiIG9yIFwiJS4qXCIuICopXG4oKiBQYXNzIHBhZGRpbmcgYW5kIHByZWNpc2lvbiB0byB0aGUgZ2VuZXJpYyBzY2FubmVyIGBzY2FuJy4gKilcbmFuZCBwYWRfcHJlY19zY2FuZiA6IHR5cGUgYSBjIGQgZSBmIHggeSB6IHQgLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+XG4gICAgICAoaW50IC0+IGludCAtPiBTY2FubmluZy5pbl9jaGFubmVsIC0+IHQpIC0+XG4gICAgICAoU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB6KSAtPlxuICAgICAgKHgsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gdG9rZW4gLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiB3IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoTGVmdCwgXyksIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJS1cXFwiXCJcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCBfKSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IEFyZ19wYWRkaW5nIF8sIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAoKiBEZWZpbmluZyBbc2NhbmZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW3NjYW5mXSAqKVxuXG50eXBlICdhIGtzY2FuZl9yZXN1bHQgPSBBcmdzIG9mICdhIHwgRXhjIG9mIGV4blxuXG5sZXQga3NjYW5mIGliIGVmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIHRyeSBBcmdzIChtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKSB3aXRoXG4gICAgICB8IChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlKSBhcyBleGMgLT4gRXhjIGV4Y1xuICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHdpdGhcbiAgICAgIHwgQXJncyBhcmdzIC0+IGFwcGx5IGYgYXJnc1xuICAgICAgfCBFeGMgZXhjIC0+IGVmIGliIGV4Y1xuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQga3NzY2FuZiBzIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGVmIGZtdFxubGV0IHNzY2FuZiBzIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG5cblxuKCogRGVwcmVjYXRlZCAqKVxubGV0IGtmc2NhbmYgaWMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIGVmIGZtdFxubGV0IGZzY2FuZiBpYyBmbXQgPSBrc2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBzY2FuZl9iYWRfaW5wdXQgZm10XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBPYmpcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAobWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBtYWdpYyB0YWdcblxuKCoqKiogU3BhcnNlIGFycmF5ICoqKiopXG5cbm1vZHVsZSBWYXJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSB2YXJzID0gaW50IFZhcnMudFxuXG5tb2R1bGUgTWV0aHMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIG1ldGhzID0gbGFiZWwgTWV0aHMudFxubW9kdWxlIExhYnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gbGFiZWwgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbGFicyA9IGJvb2wgTGFicy50XG5cbigqIFRoZSBjb21waWxlciBhc3N1bWVzIHRoYXQgdGhlIGZpcnN0IGZpZWxkIG9mIHRoaXMgc3RydWN0dXJlIGlzIFtzaXplXS4gKilcbnR5cGUgdGFibGUgPVxuIHsgbXV0YWJsZSBzaXplOiBpbnQ7XG4gICBtdXRhYmxlIG1ldGhvZHM6IGNsb3N1cmUgYXJyYXk7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbmFtZTogbWV0aHM7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbGFiZWw6IGxhYnM7XG4gICBtdXRhYmxlIHByZXZpb3VzX3N0YXRlczpcbiAgICAgKG1ldGhzICogbGFicyAqIChsYWJlbCAqIGl0ZW0pIGxpc3QgKiB2YXJzICpcbiAgICAgIGxhYmVsIGxpc3QgKiBzdHJpbmcgbGlzdCkgbGlzdDtcbiAgIG11dGFibGUgaGlkZGVuX21ldGhzOiAobGFiZWwgKiBpdGVtKSBsaXN0O1xuICAgbXV0YWJsZSB2YXJzOiB2YXJzO1xuICAgbXV0YWJsZSBpbml0aWFsaXplcnM6IChvYmogLT4gdW5pdCkgbGlzdCB9XG5cbmxldCBkdW1teV90YWJsZSA9XG4gIHsgbWV0aG9kcyA9IFt8IGR1bW15X2l0ZW0gfF07XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IDAgfVxuXG5sZXQgdGFibGVfY291bnQgPSByZWYgMFxuXG4oKiBkdW1teV9tZXQgc2hvdWxkIGJlIGEgcG9pbnRlciwgc28gdXNlIGFuIGF0b20gKilcbmxldCBkdW1teV9tZXQgOiBpdGVtID0gb2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIG1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gbWFnaWMgKGZpdF9zaXplIGxlbiAqIFN5cy53b3JkX3NpemUgLyA4IC0gMSk7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvIG1ldGhvZHMuKGkqMiszKSA8LSBtYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBtYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gbWFnaWMgMCB0aGVuIG5ld190YWJsZSBbfHxdIGVsc2VcbiAgKCogW3B1YmxpY19tZXRob2RzXSBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciBmb3IgYnl0ZWNvZGUgKilcbiAgbGV0IHRhZ3MgPSBBcnJheS5tYXAgcHVibGljX21ldGhvZF9sYWJlbCBwdWJsaWNfbWV0aG9kcyBpblxuICBsZXQgdGFibGUgPSBuZXdfdGFibGUgdGFncyBpblxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gaSBtZXQgLT5cbiAgICAgIGxldCBsYWIgPSBpKjIrMiBpblxuICAgICAgdGFibGUubWV0aG9kc19ieV9uYW1lICA8LSBNZXRocy5hZGQgbWV0IGxhYiB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYiB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwpXG4gICAgcHVibGljX21ldGhvZHM7XG4gIHRhYmxlXG5cbmxldCBpbml0X2NsYXNzIHRhYmxlID1cbiAgaW5zdF92YXJfY291bnQgOj0gIWluc3RfdmFyX2NvdW50ICsgdGFibGUuc2l6ZSAtIDE7XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBMaXN0LnJldiB0YWJsZS5pbml0aWFsaXplcnM7XG4gIHJlc2l6ZSB0YWJsZSAoMyArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgcmVwciBpbml0IHxdO1xuICAgICBtYWdpYyAoQXJyYXkubWFwIChnZXRfdmFyaWFibGUgY2xhKSAodG9fYXJyYXkgdmFscykgOiBpbnQgYXJyYXkpO1xuICAgICBBcnJheS5tYXBcbiAgICAgICAoZnVuIG5tIC0+IHJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgbWFnaWMgYXJyLighaSkgaW5cbiAgbWF0Y2ggbmV4dCgpIHdpdGhcbiAgICBHZXRDb25zdCAtPiBsZXQgeCA6IHQgPSBuZXh0KCkgaW4gZ2V0X2NvbnN0IHhcbiAgfCBHZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfdmFyIG5cbiAgfCBHZXRFbnYgICAtPiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfZW52IGUgblxuICB8IEdldE1ldGggIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF9tZXRoIG5cbiAgfCBTZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBzZXRfdmFyIG5cbiAgfCBBcHBDb25zdCAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBhcHBfY29uc3QgZiB4XG4gIHwgQXBwVmFyICAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF92YXIgZiBuXG4gIHwgQXBwRW52ICAgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluICBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2VudiBmIGUgblxuICB8IEFwcE1ldGggIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfbWV0aCBmIG5cbiAgfCBBcHBDb25zdENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgeSA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2NvbnN0IGYgeCB5XG4gIHwgQXBwQ29uc3RWYXIgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfdmFyIGYgeCBuXG4gIHwgQXBwQ29uc3RFbnYgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2VudiBmIHggZSBuXG4gIHwgQXBwQ29uc3RNZXRoIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X21ldGggZiB4IG5cbiAgfCBBcHBWYXJDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF92YXJfY29uc3QgZiBuIHhcbiAgfCBBcHBFbnZDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52X2NvbnN0IGYgZSBuIHhcbiAgfCBBcHBNZXRoQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfbWV0aF9jb25zdCBmIG4geFxuICB8IE1ldGhBcHBDb25zdCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbWV0aF9hcHBfY29uc3QgbiB4XG4gIHwgTWV0aEFwcFZhciAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfdmFyIG4gbVxuICB8IE1ldGhBcHBFbnYgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluXG4gICAgICBtZXRoX2FwcF9lbnYgbiBlIG1cbiAgfCBNZXRoQXBwTWV0aCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfbWV0aCBuIG1cbiAgfCBTZW5kQ29uc3QgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIHNlbmRfY29uc3QgbSB4IChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZFZhciAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfdmFyIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRFbnYgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBzZW5kX2VudiBtIGUgbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRNZXRoIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF9tZXRoIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IENsb3N1cmUgXyBhcyBjbG8gLT4gbWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl0gKCogaWdub3JlIGRlcHJlY2F0aW9uIHdhcm5pbmcgYWJvdXQgbW9kdWxlIFN0cmVhbSAqKVxuXG50eXBlIHRva2VuID1cbiAgICBLd2Qgb2Ygc3RyaW5nXG4gIHwgSWRlbnQgb2Ygc3RyaW5nXG4gIHwgSW50IG9mIGludFxuICB8IEZsb2F0IG9mIGZsb2F0XG4gIHwgU3RyaW5nIG9mIHN0cmluZ1xuICB8IENoYXIgb2YgY2hhclxuXG4oKiBUaGUgc3RyaW5nIGJ1ZmZlcmluZyBtYWNoaW5lcnkgKilcblxubGV0IGluaXRpYWxfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDMyXG5cbmxldCBidWZmZXIgPSByZWYgaW5pdGlhbF9idWZmZXJcbmxldCBidWZwb3MgPSByZWYgMFxuXG5sZXQgcmVzZXRfYnVmZmVyICgpID0gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBidWZwb3MgOj0gMFxuXG5sZXQgc3RvcmUgYyA9XG4gIGlmICFidWZwb3MgPj0gQnl0ZXMubGVuZ3RoICFidWZmZXIgdGhlbiBiZWdpblxuICAgIGxldCBuZXdidWZmZXIgPSBCeXRlcy5jcmVhdGUgKDIgKiAhYnVmcG9zKSBpblxuICAgIEJ5dGVzLmJsaXQgIWJ1ZmZlciAwIG5ld2J1ZmZlciAwICFidWZwb3M7XG4gICAgYnVmZmVyIDo9IG5ld2J1ZmZlclxuICBlbmQ7XG4gIEJ5dGVzLnNldCAhYnVmZmVyICFidWZwb3MgYztcbiAgaW5jciBidWZwb3NcblxubGV0IGdldF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgIWJ1ZmZlciAwICFidWZwb3MgaW4gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBzXG5cbigqIFRoZSBsZXhlciAqKVxuXG5sZXQgbWFrZV9sZXhlciBrZXl3b3JkcyA9XG4gIGxldCBrd2RfdGFibGUgPSBIYXNodGJsLmNyZWF0ZSAxNyBpblxuICBMaXN0Lml0ZXIgKGZ1biBzIC0+IEhhc2h0YmwuYWRkIGt3ZF90YWJsZSBzIChLd2QgcykpIGtleXdvcmRzO1xuICBsZXQgaWRlbnRfb3Jfa2V5d29yZCBpZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgaWQgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IElkZW50IGlkXG4gIGFuZCBrZXl3b3JkX29yX2Vycm9yIGMgPVxuICAgIGxldCBzID0gU3RyaW5nLm1ha2UgMSBjIGluXG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgcyB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciAoXCJJbGxlZ2FsIGNoYXJhY3RlciBcIiBeIHMpKVxuICBpblxuICBsZXQgcmVjIG5leHRfdG9rZW4gKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJyAnIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMDknIHwgJ1xcMDI2JyB8ICdcXDAxMicpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbmV4dF90b2tlbiBzdHJtX19cbiAgICB8IFNvbWUgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXycgfCAnXFwxOTInLi4nXFwyNTUnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfCAnPicgfFxuICAgICAgICAgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICdcXCcnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBjaGFyIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAnXFwnJyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKENoYXIgYylcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lICdcXFwiJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgU29tZSAoU3RyaW5nIChzdHJpbmcgcykpXG4gICAgfCBTb21lICctJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG5lZ19udW1iZXIgc3RybV9fXG4gICAgfCBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChrZXl3b3JkX29yX2Vycm9yIGMpXG4gICAgfCBfIC0+IE5vbmVcbiAgYW5kIGlkZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXFwxOTInLi4nXFwyNTUnIHwgJzAnLi4nOScgfCAnXycgfCAnXFwnJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBpZGVudDIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy0nIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHxcbiAgICAgICAgICc+JyB8ICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgbmVnX251bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgXyAtPiBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgaWRlbnQyIHNcbiAgYW5kIG51bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICcuJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICcuJzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChJbnQgKGludF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGRlY2ltYWxfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnKycgfCAnLScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IGVuZF9leHBvbmVudF9wYXJ0IHN0cm1fX1xuICBhbmQgZW5kX2V4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIHN0cmluZyAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFwiJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGdldF9zdHJpbmcgKClcbiAgICB8IFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBjaGFyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBlc2NhcGUgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnbicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxuJ1xuICAgIHwgU29tZSAncicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxyJ1xuICAgIHwgU29tZSAndCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFx0J1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYzEpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMikgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMzKSAtPlxuICAgICAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgICAgICBDaGFyLmNoclxuICAgICAgICAgICAgICAgICAgKChDaGFyLmNvZGUgYzEgLSA0OCkgKiAxMDAgKyAoQ2hhci5jb2RlIGMyIC0gNDgpICogMTAgK1xuICAgICAgICAgICAgICAgICAgICAgKENoYXIuY29kZSBjMyAtIDQ4KSlcbiAgICAgICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBuZXh0X3Rva2VuIHNcbiAgICB8IF8gLT4gU29tZSAoa2V5d29yZF9vcl9lcnJvciAnKCcpXG4gIGFuZCBjb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfbmVzdGVkX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX25lc3RlZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBjb21tZW50IHNcbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9lbmRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcpJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICgpXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgaW5cbiAgZnVuIGlucHV0IC0+IFN0cmVhbS5mcm9tIChmdW4gX2NvdW50IC0+IG5leHRfdG9rZW4gaW5wdXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiA/cmFuZG9tICgqdGh3YXJ0IHRvb2xzL3N5bmNfc3RkbGliX2RvY3MqKSA6IGJvb2wgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIEdlbkhhc2hUYWJsZSA9IHN0cnVjdFxuXG4gIHR5cGUgZXF1YWwgPVxuICB8IEVUcnVlIHwgRUZhbHNlXG4gIHwgRURlYWQgKCoqIHRoZSBnYXJiYWdlIGNvbGxlY3RvciByZWNsYWltZWQgdGhlIGRhdGEgKilcblxuICBtb2R1bGUgTWFrZVNlZWRlZChIOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlICdhIGNvbnRhaW5lclxuICAgIHZhbCBjcmVhdGU6IHQgLT4gJ2EgLT4gJ2EgY29udGFpbmVyXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgZ2V0X2tleTogJ2EgY29udGFpbmVyIC0+IHQgb3B0aW9uXG4gICAgdmFsIHNldF9rZXlfZGF0YTogJ2EgY29udGFpbmVyIC0+IHQgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBjaGVja19rZXk6ICdhIGNvbnRhaW5lciAtPiBib29sXG4gIGVuZCkgOiBTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnRcbiAgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgICAgIG11dGFibGUgZGF0YTogJ2EgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgICAgIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICAgICAgfVxuXG4gICAgYW5kICdhIGJ1Y2tldGxpc3QgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbnMgb2YgaW50ICgqIGhhc2ggb2YgdGhlIGtleSAqKSAqICdhIEguY29udGFpbmVyICogJ2EgYnVja2V0bGlzdFxuXG4gICAgKCoqIHRoZSBoYXNoIG9mIHRoZSBrZXkgaXMga2VwdCBpbiBvcmRlciB0byB0ZXN0IHRoZSBlcXVhbGl0eSBvZiB0aGUgaGFzaFxuICAgICAgYmVmb3JlIHRoZSBrZXkuIFNhbWUgcmVhc29uIGFzIGZvciBXZWFrLk1ha2UgKilcblxuICAgIHR5cGUga2V5ID0gSC50XG5cbiAgICBsZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgICAgIGlmIHggPj0gbiB0aGVuIHhcbiAgICAgIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgICAgIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxuICAgIGxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbiAgICBsZXQgY3JlYXRlID8ocmFuZG9tID0gKEhhc2h0YmwuaXNfcmFuZG9taXplZCAoKSkpIGluaXRpYWxfc2l6ZSA9XG4gICAgICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gICAgICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICAgICAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG4gICAgbGV0IGNsZWFyIGggPVxuICAgICAgaC5zaXplIDwtIDA7XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgZG9uZVxuXG4gICAgbGV0IHJlc2V0IGggPVxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGlmIGxlbiA9IGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICAgICAgY2xlYXIgaFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBoLnNpemUgPC0gMDtcbiAgICAgICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgaC5pbml0aWFsX3NpemUgRW1wdHlcbiAgICAgIGVuZFxuXG4gICAgbGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5jb3B5IGguZGF0YSB9XG5cbiAgICBsZXQga2V5X2luZGV4IGggaGtleSA9XG4gICAgICBoa2V5IGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGNsZWFuIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBub3QgKEguY2hlY2tfa2V5IGMpIC0+XG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgIHwgQ29ucyhoa2V5LCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgQ29ucyhoa2V5LCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgICgqKiByZXNpemUgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdG8gZG8gdGhlIGFjdHVhbCBjbGVhbmluZyBvZiBkZWFkIGtleXNcbiAgICAgICAgKHJlbW92ZSBkb2VzIGl0IGp1c3QgYmVjYXVzZSBpdCBjb3VsZCkuXG5cbiAgICAgICAgVGhlIGdvYWwgaXMgdG86XG5cbiAgICAgICAgLSBub3QgcmVzaXplIGluZmluaXRlbHkgd2hlbiB0aGUgYWN0dWFsIG51bWJlciBvZiBhbGl2ZSBrZXlzIGlzXG4gICAgICAgIGJvdW5kZWQgYnV0IGtleXMgYXJlIGNvbnRpbnVvdXNseSBhZGRlZC4gVGhhdCB3b3VsZCBoYXBwZW4gaWZcbiAgICAgICAgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmVzaXplLlxuICAgICAgICAtIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZWFjaCBhZGRpdGlvbiwgdGhhdCB3b3VsZCBoYXBwZW4gaWYgdGhpc1xuICAgICAgICBmdW5jdGlvbiBkb24ndCByZXNpemUgZXZlbiB3aGVuIG9ubHkgb25lIGtleSBpcyBkZWFkLlxuXG4gICAgICAgIFNvIHRoZSBhbGdvcml0aG06XG4gICAgICAgIC0gY2xlYW4gdGhlIGtleXMgYmVmb3JlIHJlc2l6aW5nXG4gICAgICAgIC0gaWYgdGhlIG51bWJlciBvZiByZW1haW5pbmcga2V5cyBpcyBsZXNzIHRoYW4gaGFsZiB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgYXJyYXksIGRvbid0IHJlc2l6ZS5cbiAgICAgICAgLSBpZiBpdCBpcyBtb3JlLCByZXNpemUuXG5cbiAgICAgICAgVGhlIHNlY29uZCBwcm9ibGVtIHJlbWFpbnMgaWYgdGhlIHRhYmxlIHJlYWNoZXMgeyFTeXMubWF4X2FycmF5X2xlbmd0aH0uXG5cbiAgICAqKVxuICAgIGxldCByZXNpemUgaCA9XG4gICAgICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICAgICAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gICAgICBjbGVhbiBoO1xuICAgICAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCAmJiBoLnNpemUgPj0gb3NpemUgbHNyIDEgdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgKCogc28gdGhhdCBrZXlfaW5kZXggc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgICAgICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgICAgICB8IENvbnMoaGtleSwgZGF0YSwgcmVzdCkgLT5cbiAgICAgICAgICAgICAgaW5zZXJ0X2J1Y2tldCByZXN0OyAoKiBwcmVzZXJ2ZSBvcmlnaW5hbCBvcmRlciBvZiBlbGVtZW50cyAqKVxuICAgICAgICAgICAgICBsZXQgbmlkeCA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgICAgICAgICAgbmRhdGEuKG5pZHgpIDwtIENvbnMoaGtleSwgZGF0YSwgbmRhdGEuKG5pZHgpKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gb3NpemUgLSAxIGRvXG4gICAgICAgICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgICAgICAgZG9uZVxuICAgICAgZW5kXG5cbiAgICBsZXQgYWRkIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFpdGVyfSwgeyFmb2xkfSwgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWMga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IEguc2V0X2tleV9kYXRhIGMga2V5IGluZm9cbiAgICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhfLF8sbmV4dCkgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICB0cnlcbiAgICAgICAgcmVwbGFjZV9idWNrZXQgbFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29ucyhoa2V5LCBjb250YWluZXIsIGwpO1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgaXRlciBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZFxuICAgICAgICAgICAgZW5kOyBkb19idWNrZXQgcmVzdCBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgZm9sZCBmIGggaW5pdCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgICAgICBtYXRjaCBiIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICAgYWNjdVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkIGFjY3VcbiAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3QgYWNjdSAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgICBkb25lO1xuICAgICAgIWFjY3VcblxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBmIGsgZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIG5ld19kIC0+XG4gICAgICAgICAgICAgICAgICAgIEguc2V0X2tleV9kYXRhIGMgayBuZXdfZDtcbiAgICAgICAgICAgICAgICAgICAgQ29ucyhoaywgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHRvX3NlcSB0YmwgPVxuICAgICAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAgICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gICAgICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAgICAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgICAgIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgICAgIHwgQ29ucyAoXywgYywgbmV4dCkgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCBpIG5leHQgKClcbiAgICAgICAgICAgICAgfCBTb21lIGtleSwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBhdXggMCBFbXB0eVxuXG4gICAgbGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKGs6J2spIDogdW5pdCA9IE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAodDI6KCdrLCdkKSB0KTogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggPSBILmhhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSA9IGdldF9rZXlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazFfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGsxX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXkgayBlID1cbiAgICAgIG1hdGNoIGdldF9rZXkgZSB3aXRoXG4gICAgICB8IFNvbWUgeCB3aGVuIHggPT0gayAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXkgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5IGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEsyID0gc3RydWN0XG4gIHR5cGUgKCdrMSwgJ2syLCAnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnazEsJ2syLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAyXG5cbiAgbGV0IGdldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5MV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IGdldF9rZXkyX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDEpXG4gIGxldCBzZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2syKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMSAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAxXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG5cbiAgbGV0IGJsaXRfa2V5MSAodDE6KCdrMSxfLF8pIHQpICh0MjooJ2sxLF8sXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcbiAgbGV0IGJsaXRfa2V5MiAodDE6KF8sJ2syLF8pIHQpICh0MjooXywnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMSB0MiAxIDFcbiAgbGV0IGJsaXRfa2V5MTIgKHQxOignazEsJ2syLF8pIHQpICh0MjooJ2sxLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMlxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIChkOidkKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXyxfLCdkKSB0KSAodDI6KF8sXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIGxldCBtYWtlIGtleTEga2V5MiBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleTEgZXBoIGtleTE7XG4gICAgc2V0X2tleTIgZXBoIGtleTI7XG4gICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IGtleTEpO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5MSBrZXkyID1cbiAgICBtYXRjaCBnZXRfa2V5MSBlcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGsgd2hlbiBrID09IGtleTEgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZ2V0X2tleTIgZXBoIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleTIgLT4gZ2V0X2RhdGEgZXBoXG4gICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkXG4gICAgICAoSDE6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKVxuICAgICAgKEgyOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSDEudCxIMi50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBIMS50ICogSDIudFxuICAgICAgbGV0IGNyZWF0ZSAoazEsazIpIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLmhhc2ggc2VlZCBrMSArIEgyLmhhc2ggc2VlZCBrMiAqIDY1NTk5XG4gICAgICBsZXQgZXF1YWwgYyAoazEsazIpID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPlxuICAgICAgICAgICAgaWYgSDEuZXF1YWwgazEgazEnICYmIEgyLmVxdWFsIGsyIGsyJ1xuICAgICAgICAgICAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+IFNvbWUgKGsxJywgazInKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIChrMSxrMikgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPSBjaGVja19rZXkxIGMgJiYgY2hlY2tfa2V5MiBjXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEgxOiBIYXNodGJsLkhhc2hlZFR5cGUpKEgyOiBIYXNodGJsLkhhc2hlZFR5cGUpOlxuICAgIChTIHdpdGggdHlwZSBrZXkgPSBIMS50ICogSDIudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWRcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgxLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMS5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgbilcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIChrOidrKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgbiAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IG5cbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IG5cblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKG8xOmludCkgKHQyOignaywnZCkgdCkgKG8yOmludCkgKGw6aW50KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSBvMSB0MiBvMiBsXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbGV0IG1ha2Uga2V5cyBkYXRhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBrZXlzIGluXG4gICAgbGV0IGVwaCA9IGNyZWF0ZSBsIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHNldF9rZXkgZXBoIGkga2V5cy4oaSkgZG9uZTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleXMgPVxuICAgIGxldCBsID0gbGVuZ3RoIGVwaCBpblxuICAgIHRyeVxuICAgICAgaWYgbCA8PiBBcnJheS5sZW5ndGgga2V5cyB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBlcGggaSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSBFeGl0XG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXlzLihpKSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgZ2V0X2RhdGEgZXBoXG4gICAgd2l0aCBFeGl0IC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5oYXNoIHNlZWQgay4oaSkgKiA2NTU5OSArICFoO1xuICAgICAgICBkb25lO1xuICAgICAgICAhaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgIGxldCBsZW4gID0gQXJyYXkubGVuZ3RoIGsgaW5cbiAgICAgICAgbGV0IGxlbicgPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gIT0gbGVuJyB0aGVuIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCByZWMgZXF1YWxfYXJyYXkgayBjIGkgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrLihpKSBraVxuICAgICAgICAgICAgICAgICAgdGhlbiBlcXVhbF9hcnJheSBrIGMgKGktMSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXF1YWxfYXJyYXkgayBjIChsZW4tMSlcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbGV0IGxlbiA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiBTb21lIFt8fF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyAwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBrMCAtPlxuICAgICAgICAgICAgICBsZXQgcmVjIGZpbGwgYSBpID1cbiAgICAgICAgICAgICAgICBpZiBpIDwgMSB0aGVuIFNvbWUgYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgICAgICBhLihpKSA8LSBraTtcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsIGEgKGktMSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiBrMCBpblxuICAgICAgICAgICAgICBmaWxsIGEgKGxlbi0xKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGtuX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrbl9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5cyBrIGUgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIGxlbmd0aCBlIDw+IEFycmF5Lmxlbmd0aCBrIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBrIC0gMSBkb1xuICAgICAgICAgIG1hdGNoIGdldF9rZXkgZSBpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCB3aGVuIHggPT0gay4oaSkgLT4gKClcbiAgICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgICAgICBkb25lO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIEV4aXQgLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIE1hbnVlbCBTZXJyYW5vIGV0IFhhdmllciBMZXJveSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0JpZ2FycmF5XTogbGFyZ2UsIG11bHRpLWRpbWVuc2lvbmFsLCBudW1lcmljYWwgYXJyYXlzICopXG5cbigqIFRoZXNlIHR5cGVzIGluIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIHRhYmxlcyBpblxuICAgLi4vdHlwaW5nL3R5cGVvcHQubWwgKilcblxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxudHlwZSAoJ2EsICdiKSBraW5kID1cbiAgICBGbG9hdDMyIDogKGZsb2F0LCBmbG9hdDMyX2VsdCkga2luZFxuICB8IEZsb2F0NjQgOiAoZmxvYXQsIGZsb2F0NjRfZWx0KSBraW5kXG4gIHwgSW50OF9zaWduZWQgOiAoaW50LCBpbnQ4X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3Vuc2lnbmVkIDogKGludCwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl9zaWduZWQgOiAoaW50LCBpbnQxNl9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfdW5zaWduZWQgOiAoaW50LCBpbnQxNl91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQzMiA6IChpbnQzMiwgaW50MzJfZWx0KSBraW5kXG4gIHwgSW50NjQgOiAoaW50NjQsIGludDY0X2VsdCkga2luZFxuICB8IEludCA6IChpbnQsIGludF9lbHQpIGtpbmRcbiAgfCBOYXRpdmVpbnQgOiAobmF0aXZlaW50LCBuYXRpdmVpbnRfZWx0KSBraW5kXG4gIHwgQ29tcGxleDMyIDogKENvbXBsZXgudCwgY29tcGxleDMyX2VsdCkga2luZFxuICB8IENvbXBsZXg2NCA6IChDb21wbGV4LnQsIGNvbXBsZXg2NF9lbHQpIGtpbmRcbiAgfCBDaGFyIDogKGNoYXIsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2tpbmQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBtYXRjaCBBcnJheS5sZW5ndGggZGltcywgbGF5b3V0IHdpdGhcbiAgICB8IDAsIF8gLT4gYXJyXG4gICAgfCBkbGVuLCBDX2xheW91dCAtPiBjbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAwKSBmIDAgZGltczsgYXJyXG4gICAgfCBkbGVuLCBGb3J0cmFuX2xheW91dCAtPiBmbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAxKSBmIChwcmVkIGRsZW4pIGRpbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBhIHNwZWNpZmljYXRpb24gbGFuZ3VhZ2UgZm9yIHRheFxuICAgYW5kIHNvY2lhbCBiZW5lZml0cyBjb21wdXRhdGlvbiBydWxlcy4gQ29weXJpZ2h0IChDKSAyMDIwIElucmlhLCBjb250cmlidXRvcjpcbiAgIERlbmlzIE1lcmlnb3V4IDxkZW5pcy5tZXJpZ291eEBpbnJpYS5mcj4sIEVtaWxlIFJvbGxleSA8ZW1pbGUucm9sbGV5QHR1dGEuaW8+XG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbigqIEFuIGludGVnZXIgbnVtYmVyIG9mIGNlbnRzICopXG50eXBlIG1vbmV5ID0gWi50XG50eXBlIGludGVnZXIgPSBaLnRcbnR5cGUgZGVjaW1hbCA9IFEudFxudHlwZSBkYXRlID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlXG50eXBlIGR1cmF0aW9uID0gRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RcbnR5cGUgJ2EgZW9wdGlvbiA9IEVOb25lIG9mIHVuaXQgfCBFU29tZSBvZiAnYVxuXG50eXBlIHNvdXJjZV9wb3NpdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIHN0YXJ0X2xpbmUgOiBpbnQ7XG4gIHN0YXJ0X2NvbHVtbiA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2x1bW4gOiBpbnQ7XG4gIGxhd19oZWFkaW5ncyA6IHN0cmluZyBsaXN0O1xufVxuW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG5leGNlcHRpb24gRW1wdHlFcnJvclxuZXhjZXB0aW9uIEFzc2VydGlvbkZhaWxlZCBvZiBzb3VyY2VfcG9zaXRpb25cbmV4Y2VwdGlvbiBDb25mbGljdEVycm9yIG9mIHNvdXJjZV9wb3NpdGlvblxuZXhjZXB0aW9uIFVuY29tcGFyYWJsZUR1cmF0aW9uc1xuZXhjZXB0aW9uIEluZGl2aXNpYmxlRHVyYXRpb25zXG5leGNlcHRpb24gSW1wb3NzaWJsZURhdGVcbmV4Y2VwdGlvbiBOb1ZhbHVlUHJvdmlkZWQgb2Ygc291cmNlX3Bvc2l0aW9uXG5cbmxldCBtb25leV9vZl9jZW50c19zdHJpbmcgKGNlbnRzIDogc3RyaW5nKSA6IG1vbmV5ID0gWi5vZl9zdHJpbmcgY2VudHNcbmxldCBtb25leV9vZl91bml0c19pbnQgKHVuaXRzIDogaW50KSA6IG1vbmV5ID0gWi4ob2ZfaW50IHVuaXRzICogb2ZfaW50IDEwMClcbmxldCBtb25leV9vZl9jZW50c19pbnRlZ2VyIChjZW50cyA6IGludGVnZXIpIDogbW9uZXkgPSBjZW50c1xubGV0IG1vbmV5X3RvX2Zsb2F0IChtIDogbW9uZXkpIDogZmxvYXQgPSBaLnRvX2Zsb2F0IG0gLy4gMTAwLlxuXG5sZXQgbW9uZXlfb2ZfZGVjaW1hbCAoZCA6IGRlY2ltYWwpIDogbW9uZXkgPVxuICBRLnRvX2JpZ2ludCAoUS5tdWwgZCAoUS5vZl9pbnQgMTAwKSlcblxubGV0IG1vbmV5X3RvX3N0cmluZyAobSA6IG1vbmV5KSA6IHN0cmluZyA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiUuMmZcIiBRLih0b19mbG9hdCAob2ZfYmlnaW50IG0gLyBvZl9pbnQgMTAwKSlcblxubGV0IG1vbmV5X3RvX2NlbnRzIG0gPSBtXG5cbmxldCBtb25leV9yb3VuZCAobSA6IG1vbmV5KSA6IG1vbmV5ID1cbiAgbGV0IHVuaXRzLCBjZW50cyA9IFouZGl2X3JlbSBtIChaLm9mX2ludCAxMDApIGluXG4gICgqIElmIFttXSBpcyBuZWdhdGl2ZSwgW2NlbnRzXSB3aWxsIGFsc28gYmUgbmVnYXRpdmUuICopXG4gIGlmIFouKGFicyBjZW50cyA8IG9mX2ludCA1MCkgdGhlbiBaLih1bml0cyAqIG9mX2ludCAxMDApXG4gIGVsc2UgWi4oKHVuaXRzICsgb2ZfaW50IChzaWduIHVuaXRzKSkgKiBvZl9pbnQgMTAwKVxuXG5sZXQgZGVjaW1hbF9vZl9zdHJpbmcgKGQgOiBzdHJpbmcpIDogZGVjaW1hbCA9IFEub2Zfc3RyaW5nIGRcbmxldCBkZWNpbWFsX3RvX2Zsb2F0IChkIDogZGVjaW1hbCkgOiBmbG9hdCA9IFEudG9fZmxvYXQgZFxubGV0IGRlY2ltYWxfb2ZfZmxvYXQgKGQgOiBmbG9hdCkgOiBkZWNpbWFsID0gUS5vZl9mbG9hdCBkXG5sZXQgZGVjaW1hbF9vZl9pbnRlZ2VyIChkIDogaW50ZWdlcikgOiBkZWNpbWFsID0gUS5vZl9iaWdpbnQgZFxuXG5sZXQgZGVjaW1hbF90b19zdHJpbmcgfihtYXhfcHJlY19kaWdpdHMgOiBpbnQpIChpIDogZGVjaW1hbCkgOiBzdHJpbmcgPVxuICBsZXQgc2lnbiA9IFEuc2lnbiBpIGluXG4gIGxldCBuID0gWi5hYnMgKFEubnVtIGkpIGluXG4gIGxldCBkID0gWi5hYnMgKFEuZGVuIGkpIGluXG4gIGxldCBpbnRfcGFydCA9IFouZWRpdiBuIGQgaW5cbiAgbGV0IG4gPSByZWYgKFouZXJlbSBuIGQpIGluXG4gIGxldCBkaWdpdHMgPSByZWYgW10gaW5cbiAgbGV0IGxlYWRpbmdfemVyb2VzIChkaWdpdHMgOiBaLnQgbGlzdCkgOiBpbnQgPVxuICAgIG1hdGNoXG4gICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgKGZ1biBkaWdpdCBudW1fbGVhZGluZ196ZXJvZXMgLT5cbiAgICAgICAgICBtYXRjaCBudW1fbGVhZGluZ196ZXJvZXMgd2l0aFxuICAgICAgICAgIHwgYEVuZCBfIC0+IG51bV9sZWFkaW5nX3plcm9lc1xuICAgICAgICAgIHwgYEJlZ2luIGkgLT4gaWYgWi4oZGlnaXQgPSB6ZXJvKSB0aGVuIGBCZWdpbiAoaSArIDEpIGVsc2UgYEVuZCBpKVxuICAgICAgICBkaWdpdHMgKGBCZWdpbiAwKVxuICAgIHdpdGhcbiAgICB8IGBFbmQgaSAtPiBpXG4gICAgfCBgQmVnaW4gaSAtPiBpXG4gIGluXG4gIHdoaWxlXG4gICAgIW4gPD4gWi56ZXJvXG4gICAgJiYgTGlzdC5sZW5ndGggIWRpZ2l0cyAtIGxlYWRpbmdfemVyb2VzICFkaWdpdHMgPCBtYXhfcHJlY19kaWdpdHNcbiAgZG9cbiAgICBuIDo9IFoubXVsICFuIChaLm9mX2ludCAxMCk7XG4gICAgZGlnaXRzIDo9IFouZWRpdiAhbiBkIDo6ICFkaWdpdHM7XG4gICAgbiA6PSBaLmVyZW0gIW4gZFxuICBkb25lO1xuICBGb3JtYXQuYXNwcmludGYgXCIlcyVhLiVhJXNcIlxuICAgIChpZiBzaWduIDwgMCB0aGVuIFwiLVwiIGVsc2UgXCJcIilcbiAgICBaLnBwX3ByaW50IGludF9wYXJ0XG4gICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgfnBwX3NlcDooZnVuIF9mbXQgKCkgLT4gKCkpXG4gICAgICAgKGZ1biBmbXQgZGlnaXQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiJWFcIiBaLnBwX3ByaW50IGRpZ2l0KSlcbiAgICAoTGlzdC5yZXYgIWRpZ2l0cylcbiAgICAoaWYgTGlzdC5sZW5ndGggIWRpZ2l0cyAtIGxlYWRpbmdfemVyb2VzICFkaWdpdHMgPSBtYXhfcHJlY19kaWdpdHMgdGhlbiBcIuKAplwiXG4gICAgZWxzZSBcIlwiKVxuXG5sZXQgZGVjaW1hbF9yb3VuZCAocSA6IGRlY2ltYWwpIDogZGVjaW1hbCA9XG4gICgqIEltcGxlbWVudHMgdGhlIHdvcmthcm91bmQgYnlcbiAgICAgaHR0cHM6Ly9nbXBsaWIub3JnL2xpc3QtYXJjaGl2ZXMvZ21wLWRpc2N1c3MvMjAwOS1NYXkvMDAzNzY3Lmh0bWwgKilcbiAgbGV0IG4gPSBRLm51bSBxIGluXG4gIGxldCBkID0gUS5kZW4gcSBpblxuICBRLm9mX2JpZ2ludCBaLihmZGl2ICgob2ZfaW50IDIgKiBuKSArIGQpIChvZl9pbnQgMiAqIGQpKVxuXG5sZXQgZGVjaW1hbF9vZl9tb25leSAobSA6IG1vbmV5KSA6IGRlY2ltYWwgPVxuICBRLmRpdiAoUS5vZl9iaWdpbnQgbSkgKFEub2ZfaW50IDEwMClcblxubGV0IGludGVnZXJfb2Zfc3RyaW5nIChzIDogc3RyaW5nKSA6IGludGVnZXIgPSBaLm9mX3N0cmluZyBzXG5sZXQgaW50ZWdlcl90b19zdHJpbmcgKGkgOiBpbnRlZ2VyKSA6IHN0cmluZyA9IFoudG9fc3RyaW5nIGlcbmxldCBpbnRlZ2VyX3RvX2ludCAoaSA6IGludGVnZXIpIDogaW50ID0gWi50b19pbnQgaVxubGV0IGludGVnZXJfb2ZfaW50IChpIDogaW50KSA6IGludGVnZXIgPSBaLm9mX2ludCBpXG5sZXQgaW50ZWdlcl9leHBvbmVudGlhdGlvbiAoaSA6IGludGVnZXIpIChlIDogaW50KSA6IGludGVnZXIgPSBaLnBvdyBpIGVcbmxldCBpbnRlZ2VyX2xvZzIgPSBaLmxvZzJcblxubGV0IHllYXJfb2ZfZGF0ZSAoZCA6IGRhdGUpIDogaW50ZWdlciA9XG4gIGxldCB5LCBfLCBfID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlX3RvX3ltZCBkIGluXG4gIFoub2ZfaW50IHlcblxubGV0IG1vbnRoX251bWJlcl9vZl9kYXRlIChkIDogZGF0ZSkgOiBpbnRlZ2VyID1cbiAgbGV0IF8sIG0sIF8gPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVfdG9feW1kIGQgaW5cbiAgWi5vZl9pbnQgbVxuXG5sZXQgaXNfbGVhcF95ZWFyICh5IDogaW50ZWdlcikgPVxuICBsZXQgeSA9IFoudG9faW50IHkgaW5cbiAgRGF0ZXNfY2FsYy5EYXRlcy5pc19sZWFwX3llYXIgeVxuXG5sZXQgZGF5X29mX21vbnRoX29mX2RhdGUgKGQgOiBkYXRlKSA6IGludGVnZXIgPVxuICBsZXQgXywgXywgZCA9IERhdGVzX2NhbGMuRGF0ZXMuZGF0ZV90b195bWQgZCBpblxuICBaLm9mX2ludCBkXG5cbmxldCBkYXRlX29mX251bWJlcnMgKHllYXIgOiBpbnQpIChtb250aCA6IGludCkgKGRheSA6IGludCkgOiBkYXRlID1cbiAgdHJ5IERhdGVzX2NhbGMuRGF0ZXMubWFrZV9kYXRlIH55ZWFyIH5tb250aCB+ZGF5XG4gIHdpdGggXyAtPiByYWlzZSBJbXBvc3NpYmxlRGF0ZVxuXG5sZXQgZGF0ZV90b19zdHJpbmcgKGQgOiBkYXRlKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRGF0ZXNfY2FsYy5EYXRlcy5mb3JtYXRfZGF0ZSBkXG5cbmxldCBmaXJzdF9kYXlfb2ZfbW9udGggPSBEYXRlc19jYWxjLkRhdGVzLmZpcnN0X2RheV9vZl9tb250aFxubGV0IGxhc3RfZGF5X29mX21vbnRoID0gRGF0ZXNfY2FsYy5EYXRlcy5sYXN0X2RheV9vZl9tb250aFxuXG5sZXQgZHVyYXRpb25fb2ZfbnVtYmVycyAoeWVhciA6IGludCkgKG1vbnRoIDogaW50KSAoZGF5IDogaW50KSA6IGR1cmF0aW9uID1cbiAgRGF0ZXNfY2FsYy5EYXRlcy5tYWtlX3BlcmlvZCB+eWVhcnM6eWVhciB+bW9udGhzOm1vbnRoIH5kYXlzOmRheVxuXG5sZXQgZHVyYXRpb25fdG9fc3RyaW5nIChkIDogZHVyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBEYXRlc19jYWxjLkRhdGVzLmZvcm1hdF9wZXJpb2QgZFxuKCogYnJlYWtzIHByZXZpb3VzIGZvcm1hdCAqKVxuKCogbGV0IHgsIHksIHogPSBDYWxlbmRhckxpYi5EYXRlLlBlcmlvZC55bWQgZCBpblxuICogbGV0IHRvX3ByaW50ID1cbiAqICAgTGlzdC5maWx0ZXIgKGZ1biAoYSwgXykgLT4gYSA8PiAwKSBbeCwgXCJ5ZWFyc1wiOyB5LCBcIm1vbnRoc1wiOyB6LCBcImRheXNcIl1cbiAqIGluXG4gKiBtYXRjaCB0b19wcmludCB3aXRoXG4gKiB8IFtdIC0+IFwiZW1wdHkgZHVyYXRpb25cIlxuICogfCBfIC0+XG4gKiAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAqICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAqICAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiKVxuICogICAgICAgIChmdW4gZm10IChkLCBsKSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZCAlc1wiIGQgbCkpXG4gKiAgICAgdG9fcHJpbnQgKilcblxubGV0IGR1cmF0aW9uX3RvX3llYXJzX21vbnRoc19kYXlzIChkIDogZHVyYXRpb24pIDogaW50ICogaW50ICogaW50ID1cbiAgRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9feW1kcyBkXG5cbmxldCB5b2pzb25fb2ZfbW9uZXkgKG0gOiBtb25leSkgPSBgRmxvYXQgKG1vbmV5X3RvX2Zsb2F0IG0pXG5sZXQgeW9qc29uX29mX2ludGVnZXIgKGkgOiBpbnRlZ2VyKSA9IGBJbnQgKGludGVnZXJfdG9faW50IGkpXG5sZXQgeW9qc29uX29mX2RlY2ltYWwgKGQgOiBkZWNpbWFsKSA9IGBGbG9hdCAoZGVjaW1hbF90b19mbG9hdCBkKVxubGV0IHlvanNvbl9vZl9kYXRlIChkIDogZGF0ZSkgPSBgU3RyaW5nIChkYXRlX3RvX3N0cmluZyBkKVxubGV0IHlvanNvbl9vZl9kdXJhdGlvbiAoZCA6IGR1cmF0aW9uKSA9IGBTdHJpbmcgKGR1cmF0aW9uX3RvX3N0cmluZyBkKVxuXG50eXBlIHJ1bnRpbWVfdmFsdWUgPVxuICB8IFVuaXRcbiAgfCBCb29sIG9mIGJvb2xcbiAgfCBNb25leSBvZiBtb25leVxuICB8IEludGVnZXIgb2YgaW50ZWdlclxuICB8IERlY2ltYWwgb2YgZGVjaW1hbFxuICB8IERhdGUgb2YgZGF0ZVxuICB8IER1cmF0aW9uIG9mIGR1cmF0aW9uXG4gIHwgRW51bSBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgKiBydW50aW1lX3ZhbHVlKVxuICB8IFN0cnVjdCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgKiBydW50aW1lX3ZhbHVlKSBsaXN0XG4gIHwgQXJyYXkgb2YgcnVudGltZV92YWx1ZSBhcnJheVxuICB8IFVuZW1iZWRkYWJsZVxuW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG5sZXQgdW5lbWJlZGRhYmxlIF8gPSBVbmVtYmVkZGFibGVcbmxldCBlbWJlZF91bml0ICgpID0gVW5pdFxubGV0IGVtYmVkX2Jvb2wgeCA9IEJvb2wgeFxubGV0IGVtYmVkX21vbmV5IHggPSBNb25leSB4XG5sZXQgZW1iZWRfaW50ZWdlciB4ID0gSW50ZWdlciB4XG5sZXQgZW1iZWRfZGVjaW1hbCB4ID0gRGVjaW1hbCB4XG5sZXQgZW1iZWRfZGF0ZSB4ID0gRGF0ZSB4XG5sZXQgZW1iZWRfZHVyYXRpb24geCA9IER1cmF0aW9uIHhcbmxldCBlbWJlZF9hcnJheSBmIHggPSBBcnJheSAoQXJyYXkubWFwIGYgeClcblxudHlwZSBpbmZvcm1hdGlvbiA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIHlvanNvbl9vZl1cblxudHlwZSByYXdfZXZlbnQgPVxuICB8IEJlZ2luQ2FsbCBvZiBpbmZvcm1hdGlvblxuICB8IEVuZENhbGwgb2YgaW5mb3JtYXRpb25cbiAgfCBWYXJpYWJsZURlZmluaXRpb24gb2YgaW5mb3JtYXRpb24gKiBydW50aW1lX3ZhbHVlXG4gIHwgRGVjaXNpb25UYWtlbiBvZiBzb3VyY2VfcG9zaXRpb25cblxudHlwZSBldmVudCA9XG4gIHwgVmFyQ29tcHV0YXRpb24gb2YgdmFyX2RlZlxuICB8IEZ1bkNhbGwgb2YgZnVuX2NhbGxcbiAgfCBTdWJTY29wZUNhbGwgb2Yge1xuICAgICAgbmFtZSA6IGluZm9ybWF0aW9uO1xuICAgICAgaW5wdXRzIDogdmFyX2RlZiBsaXN0O1xuICAgICAgYm9keSA6IGV2ZW50IGxpc3Q7XG4gICAgfVxuW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG5hbmQgdmFyX2RlZiA9IHtcbiAgcG9zIDogc291cmNlX3Bvc2l0aW9uIG9wdGlvbjtcbiAgbmFtZSA6IGluZm9ybWF0aW9uO1xuICB2YWx1ZSA6IHJ1bnRpbWVfdmFsdWU7XG4gIGZ1bl9jYWxscyA6IGZ1bl9jYWxsIGxpc3Qgb3B0aW9uO1xufVxuXG5hbmQgZnVuX2NhbGwgPSB7XG4gIGZ1bl9uYW1lIDogaW5mb3JtYXRpb247XG4gIGZ1bl9pbnB1dHMgOiB2YXJfZGVmIGxpc3Q7XG4gIGJvZHkgOiBldmVudCBsaXN0O1xuICBvdXRwdXQgOiB2YXJfZGVmO1xufVxuXG5sZXQgbG9nX3JlZiA6IHJhd19ldmVudCBsaXN0IHJlZiA9IHJlZiBbXVxubGV0IHJlc2V0X2xvZyAoKSA9IGxvZ19yZWYgOj0gW11cbmxldCByZXRyaWV2ZV9sb2cgKCkgPSBMaXN0LnJldiAhbG9nX3JlZlxuXG5sZXQgbG9nX2JlZ2luX2NhbGwgaW5mbyBmID1cbiAgbG9nX3JlZiA6PSBCZWdpbkNhbGwgaW5mbyA6OiAhbG9nX3JlZjtcbiAgZlxuXG5sZXQgbG9nX2VuZF9jYWxsIGluZm8geCA9XG4gIGxvZ19yZWYgOj0gRW5kQ2FsbCBpbmZvIDo6ICFsb2dfcmVmO1xuICB4XG5cbmxldCBsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiAoaW5mbyA6IHN0cmluZyBsaXN0KSBlbWJlZCAoeCA6ICdhKSA9XG4gIGxvZ19yZWYgOj0gVmFyaWFibGVEZWZpbml0aW9uIChpbmZvLCBlbWJlZCB4KSA6OiAhbG9nX3JlZjtcbiAgeFxuXG5sZXQgbG9nX2RlY2lzaW9uX3Rha2VuIHBvcyB4ID1cbiAgaWYgeCB0aGVuIGxvZ19yZWYgOj0gRGVjaXNpb25UYWtlbiBwb3MgOjogIWxvZ19yZWY7XG4gIHhcblxubGV0IHJlYyBwcF9ldmVudHMgPyhpc19maXJzdF9jYWxsID0gdHJ1ZSkgcHBmIGV2ZW50cyA9XG4gIGxldCByZWMgZm9ybWF0X3Zhcl9kZWYgcHBmIHZhciA9XG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8aG92IDI+PHZhcl9kZWYgYXQgJWE+QCAlczpAICVhQF1cIiBmb3JtYXRfcG9zX29wdFxuICAgICAgdmFyLnBvc1xuICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgdmFyLm5hbWUpXG4gICAgICBmb3JtYXRfdmFsdWUgdmFyLnZhbHVlXG4gIGFuZCBmb3JtYXRfcG9zX29wdCBwcGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJub19wb3NcIlxuICAgIHwgU29tZSBwb3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzIGxpbmUgJWQgdG8gJWRcIiBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgcG9zLmVuZF9saW5lXG4gIGFuZCBmb3JtYXRfdmFyX2RlZnMgcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAIFwiKVxuICAgICAgZm9ybWF0X3Zhcl9kZWYgcHBmXG4gIGFuZCBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyBwcGYgdmFyX3dpdGhfZnVuID1cbiAgICBtYXRjaCB2YXJfd2l0aF9mdW4uZnVuX2NhbGxzIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIFtdIC0+IGZvcm1hdF92YXJfZGVmIHBwZiB2YXJfd2l0aF9mdW5cbiAgICB8IFNvbWUgZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxob3YgMj48dmFyX2RlZl93aXRoX2Z1bj5AICVzOiAlYUAgY29tcHV0ZWQgZnJvbUAgOkAgQFs8aHYgMj5bQCAlYUA7XFxcbiAgICAgICAgIDwxIC0yPl1AXSBAXVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIHZhcl93aXRoX2Z1bi5uYW1lKVxuICAgICAgICBmb3JtYXRfdmFsdWUgdmFyX3dpdGhfZnVuLnZhbHVlXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKVxuICAgICAgICAgICAoZnVuIHBwZiBmdW5fY2FsbCAtPiBmb3JtYXRfZXZlbnQgcHBmIChGdW5DYWxsIGZ1bl9jYWxsKSkpXG4gICAgICAgIGZ1bl9jYWxsc1xuICBhbmQgZm9ybWF0X3ZhbHVlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmVtYmVkZGFibGUgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiZnVuXCJcbiAgICB8IFVuaXQgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiKClcIlxuICAgIHwgQm9vbCB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiViXCIgeFxuICAgIHwgTW9uZXkgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc+KCrFwiIChtb25leV90b19zdHJpbmcgeClcbiAgICB8IEludGVnZXIgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZFwiIChpbnRlZ2VyX3RvX2ludCB4KVxuICAgIHwgRGVjaW1hbCB4IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIChkZWNpbWFsX3RvX3N0cmluZyB+bWF4X3ByZWNfZGlnaXRzOjEwIHgpXG4gICAgfCBEYXRlIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZGF0ZV90b19zdHJpbmcgeClcbiAgICB8IER1cmF0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZHVyYXRpb25fdG9fc3RyaW5nIHgpXG4gICAgfCBFbnVtIChfLCAobmFtZSwgXykpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgbmFtZVxuICAgIHwgU3RydWN0IChuYW1lLCBhdHRycykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbPGh2IDI+JXMgPSB7QCAlYUA7PDEgLTI+fUBdXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgbmFtZSlcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiLEAsXCIpXG4gICAgICAgICAgIChmdW4gZm10IChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlczogJWFcIiBuYW1lIGZvcm1hdF92YWx1ZSB2YWx1ZSkpXG4gICAgICAgIGF0dHJzXG4gICAgfCBBcnJheSBlbHRzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzxodiAyPltAICVhQDs8MSAtMj5dQF1cIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCI7QCBcIilcbiAgICAgICAgICAgZm9ybWF0X3ZhbHVlKVxuICAgICAgICAoZWx0cyB8PiBBcnJheS50b19saXN0KVxuICBhbmQgZm9ybWF0X2V2ZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmX3dpdGhfZnVuXG4gICAgICB3aGVuIE9wdGlvbi5pc19zb21lIHZhcl9kZWZfd2l0aF9mdW4uZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYVwiIGZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIHZhcl9kZWZfd2l0aF9mdW5cbiAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWYgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWFcIiBmb3JtYXRfdmFyX2RlZiB2YXJfZGVmXG4gICAgfCBGdW5DYWxsIHsgZnVuX25hbWU7IGZ1bl9pbnB1dHM7IGJvZHk7IG91dHB1dCB9IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxob3YgMT48ZnVuY3Rpb25fY2FsbD5AICVzIDo9QCB7QFs8aHYgMT5AIGlucHV0OkAgJWEsQCBvdXRwdXQ6QCBcXFxuICAgICAgICAgJWEsQCBib2R5OkAgW0AsXFxcbiAgICAgICAgICVhXUBdQCxcXFxuICAgICAgICAgQF1ALFxcXG4gICAgICAgICB9XCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgZnVuX25hbWUpXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiOyBcIilcbiAgICAgICAgICAgZm9ybWF0X3Zhcl9kZWYpXG4gICAgICAgIGZ1bl9pbnB1dHMgZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMgb3V0cHV0XG4gICAgICAgIChwcF9ldmVudHMgfmlzX2ZpcnN0X2NhbGw6ZmFsc2UpXG4gICAgICAgIGJvZHlcbiAgICB8IFN1YlNjb3BlQ2FsbCB7IG5hbWU7IGlucHV0czsgYm9keSB9IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxodiAyPjxzdWJzY29wZV9jYWxsPkAgJXMgOj1AIHtAWzxodiAxPkAsXFxcbiAgICAgICAgIGlucHV0czpAIEBbPGh2IDI+W0AsXFxcbiAgICAgICAgICVhQF1dLEAsXFxcbiAgICAgICAgIGJvZHk6QCBAWzxodiAyPltAICVhQCBdQF1AXUBdQCxcXFxuICAgICAgICAgfVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIG5hbWUpIGZvcm1hdF92YXJfZGVmcyBpbnB1dHNcbiAgICAgICAgKHBwX2V2ZW50cyB+aXNfZmlyc3RfY2FsbDpmYWxzZSlcbiAgICAgICAgYm9keVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAoXCJAWzxodiAxPiVhQF1cIiBeXiBpZiBpc19maXJzdF9jYWxsIHRoZW4gXCJALlwiIGVsc2UgXCJcIilcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkAgXCIpXG4gICAgICAgZm9ybWF0X2V2ZW50KVxuICAgIGV2ZW50c1xuXG5tb2R1bGUgRXZlbnRQYXJzZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFZhckRlZk1hcCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdHJpbmdNYXAgPSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgdHlwZSB0ID0gdmFyX2RlZiBsaXN0IFN0cmluZ01hcC50XG5cbiAgICBsZXQgYWRkIChuYW1lIDogc3RyaW5nKSAodiA6IHZhcl9kZWYpIChtYXAgOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGhcbiAgICAgIHwgU29tZSBscyAtPiBTdHJpbmdNYXAuYWRkIG5hbWUgKHYgOjogbHMpIG1hcFxuICAgICAgfCBOb25lIC0+IFN0cmluZ01hcC5hZGQgbmFtZSBbdl0gbWFwXG5cbiAgICAoKiogW2dldCBuYW1lIG1hcF0gcmV0dXJucyB0aGUgbGlzdCBvZiBkZWZpbml0aW9ucyBpZiB0aGVyZSBpcyBhXG4gICAgICAgIGNvcnJlc3BvbmRpbmcgZW50cnksIG90aGVyd2lzZSwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS4gKilcbiAgICBsZXQgZ2V0IChuYW1lIDogc3RyaW5nKSAobWFwIDogdCkgOiB2YXJfZGVmIGxpc3QgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGggU29tZSBscyAtPiBscyB8IE5vbmUgLT4gW11cblxuICAgIGxldCBlbXB0eSA6IHQgPSBTdHJpbmdNYXAuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSBjb250ZXh0ID0ge1xuICAgICgqIEtlZXBzIHRyYWNrcyBvZiB0aGUgc3Vic2NvcGUgaW5wdXQgdmFyaWFibGUgZGVmaW5pdGlvbnMuICopXG4gICAgdmFycyA6IFZhckRlZk1hcC50O1xuICAgICgqIEN1cnJlbnQgcGFyc2VkIGV2ZW50cy4gKilcbiAgICBldmVudHMgOiBldmVudCBsaXN0O1xuICAgIHJlc3QgOiByYXdfZXZlbnQgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eV9jdHggPSB7IHZhcnMgPSBWYXJEZWZNYXAuZW1wdHk7IGV2ZW50cyA9IFtdOyByZXN0ID0gW10gfVxuXG4gIGxldCByYXdfZXZlbnRfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEJlZ2luQ2FsbCBuYW1lIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIkJlZ2luQ2FsbChbIFwiIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgbmFtZSBeIFwiIF0pXCJcbiAgICB8IEVuZENhbGwgbmFtZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJFbmRDYWxsKFsgXCIgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBuYW1lIF4gXCIgXSlcIlxuICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiVmFyaWFibGVEZWZpbml0aW9uKFsgJXMgXSwgJXMpXCIgKFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUpXG4gICAgICAgICh5b2pzb25fb2ZfcnVudGltZV92YWx1ZSB2YWx1ZSB8PiBZb2pzb24uU2FmZS50b19zdHJpbmcpXG4gICAgfCBEZWNpc2lvblRha2VuIHBvcyAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJEZWNpc2lvblRha2VuKCVzOiVkLiVkLSVkLiVkKVwiIHBvcy5maWxlbmFtZSBwb3Muc3RhcnRfbGluZVxuICAgICAgICBwb3Muc3RhcnRfY29sdW1uIHBvcy5lbmRfbGluZSBwb3MuZW5kX2NvbHVtblxuXG4gICgqKiBbdGFrZXdoaWxlIHAgeHNdIHNwbGl0IHRoZSBsaXN0IFt4c10gYXMgdGhlIGxvbmdlc3QgcHJlZml4IG9mIHRoZSBsaXN0XG4gICAgICBbeHNdIHdoZXJlIGV2ZXJ5IGVsZW1lbnQgW3hdIHNhdGlzZmllcyBbcCB4XSBhbmQgdGhlIHJlc3QuICopXG4gIGxldCByZWMgdGFrZV93aGlsZSAocCA6ICdhIC0+IGJvb2wpIChsIDogJ2EgbGlzdCkgOiAnYSBsaXN0ICogJ2EgbGlzdCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBbXSwgW11cbiAgICB8IGggOjogdCB3aGVuIHAgaCAtPlxuICAgICAgbGV0IHQsIHJlc3QgPSB0YWtlX3doaWxlIHAgdCBpblxuICAgICAgaCA6OiB0LCByZXN0XG4gICAgfCBfIC0+IFtdLCBsXG5cbiAgbGV0IHBhcnNlX3Jhd19ldmVudHMgcmF3X2V2ZW50cyA9XG4gICAgbGV0IG5iX3Jhd19ldmVudHMgPSBMaXN0Lmxlbmd0aCByYXdfZXZlbnRzXG4gICAgYW5kIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgPSAyID0gTGlzdC5sZW5ndGggaW5mb3NcbiAgICBhbmQgaXNfc3Vic2NvcGVfY2FsbCBpbmZvcyA9IDMgPSBMaXN0Lmxlbmd0aCBpbmZvc1xuICAgIGFuZCBpc192YXJfZGVmIG5hbWUgPSAyID0gTGlzdC5sZW5ndGggbmFtZVxuICAgIGFuZCBpc19vdXRwdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDMgPSBMaXN0Lmxlbmd0aCBuYW1lICYmIFwib3V0cHV0XCIgPSBMaXN0Lm50aCBuYW1lIDJcbiAgICBhbmQgaXNfaW5wdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDMgPSBMaXN0Lmxlbmd0aCBuYW1lXG4gICAgICAmJiBTdHJpbmcuc3RhcnRzX3dpdGggfnByZWZpeDpcImlucHV0XCIgKExpc3QubnRoIG5hbWUgMilcbiAgICBhbmQgaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lID1cbiAgICAgIDIgPSBMaXN0Lmxlbmd0aCBuYW1lICYmIFN0cmluZy5jb250YWlucyAoTGlzdC5udGggbmFtZSAxKSAnLidcbiAgICBpblxuICAgIGxldCByZWMgcGFyc2VfZXZlbnRzIChjdHggOiBjb250ZXh0KSA6IGNvbnRleHQgPVxuICAgICAgbWF0Y2ggY3R4LnJlc3Qgd2l0aFxuICAgICAgfCBbXSAtPiB7IGN0eCB3aXRoIGV2ZW50cyA9IGN0eC5ldmVudHMgfD4gTGlzdC5yZXYgfVxuICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIF8pIDo6IHJlc3Qgd2hlbiBpc192YXJfZGVmIG5hbWUgLT5cbiAgICAgICAgKCogVmFyaWFibGVEZWZpbml0aW9uIHdpdGhvdXQgcG9zaXRpb24gY29ycmVzcG9uZHMgdG8gYSBmdW5jdGlvblxuICAgICAgICAgICBkZWZpbml0aW9uIHdoaWNoIGFyZSBpZ25vcmVkIGZvciBub3cgaW4gc3RydWN0dXJlZCBldmVudHMuICopXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIHJlc3QgfVxuICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyA6OiBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiByZXN0XG4gICAgICAgIHdoZW4gaXNfc3Vic2NvcGVfaW5wdXRfdmFyX2RlZiBuYW1lIC0+IChcbiAgICAgICAgbWF0Y2ggbmFtZSB3aXRoXG4gICAgICAgIHwgW187IHZhcl9kb3Rfc3Vic2NvcGVfdmFyX25hbWVdIC0+XG4gICAgICAgICAgbGV0IHZhcl9uYW1lID1cbiAgICAgICAgICAgIExpc3QubnRoIChTdHJpbmcuc3BsaXRfb25fY2hhciAnLicgdmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSkgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZXZlbnRzXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGN0eCB3aXRoXG4gICAgICAgICAgICAgIHZhcnMgPVxuICAgICAgICAgICAgICAgIGN0eC52YXJzXG4gICAgICAgICAgICAgICAgfD4gVmFyRGVmTWFwLmFkZCB2YXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfTtcbiAgICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJ1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIFtpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmXSB0ZXN0XCIpXG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgdmFsdWUpIDo6IHJlc3RcbiAgICAgICAgd2hlbiBpc192YXJfZGVmIG5hbWUgfHwgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSAtPlxuICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdHggd2l0aFxuICAgICAgICAgICAgZXZlbnRzID1cbiAgICAgICAgICAgICAgVmFyQ29tcHV0YXRpb24geyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmUgfVxuICAgICAgICAgICAgICA6OiBjdHguZXZlbnRzO1xuICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICB9XG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfXG4gICAgICAgIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICAoKiBWYXJpYWJsZSBkZWZpbml0aW9uIHdpdGggZnVuY3Rpb24gY2FsbHMuICopXG4gICAgICAgIGxldCByZWMgcGFyc2VfZnVuX2NhbGxzIGZ1bl9jYWxscyByYXdfZXZlbnRzID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgdGFrZV93aGlsZVxuICAgICAgICAgICAgICAoZnVuY3Rpb24gVmFyaWFibGVEZWZpbml0aW9uIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIHJhd19ldmVudHNcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBfLCBCZWdpbkNhbGwgaW5mb3MgOjogXyB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgLT5cbiAgICAgICAgICAgIGxldCByZXN0LCBmdW5fY2FsbCA9IHBhcnNlX2Z1bl9jYWxsIHJhd19ldmVudHMgaW5cbiAgICAgICAgICAgIHBhcnNlX2Z1bl9jYWxscyAoZnVuX2NhbGwgOjogZnVuX2NhbGxzKSByZXN0XG4gICAgICAgICAgfCBfIC0+IHJhd19ldmVudHMsIGZ1bl9jYWxscyB8PiBMaXN0LnJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdCwgdmFyX2NvbXAgPVxuICAgICAgICAgIGxldCByZXN0LCBmdW5fY2FsbHMgPSBwYXJzZV9mdW5fY2FsbHMgW10gKExpc3QudGwgY3R4LnJlc3QpIGluXG4gICAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIHZhbHVlKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAoIHJlc3QsXG4gICAgICAgICAgICAgIFZhckNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IFNvbWUgZnVuX2NhbGxzIH0gKVxuICAgICAgICAgIHwgZXZlbnQgOjogXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKFwiSW52YWxpZCBmdW5jdGlvbiBjYWxsIChbIFwiXG4gICAgICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgaW5mb3NcbiAgICAgICAgICAgICAgXiBcIiBdKTogZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbiAoZnVuY3Rpb24gb3V0cHV0KSwgZm91bmQ6IFwiXG4gICAgICAgICAgICAgIF4gcmF3X2V2ZW50X3RvX3N0cmluZyBldmVudFxuICAgICAgICAgICAgICBeIFwiW1wiXG4gICAgICAgICAgICAgIF4gKG5iX3Jhd19ldmVudHMgLSBMaXN0Lmxlbmd0aCByZXN0ICsgMSB8PiBzdHJpbmdfb2ZfaW50KVxuICAgICAgICAgICAgICBeIFwiXVwiKVxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChcIkludmFsaWQgZnVuY3Rpb24gY2FsbCAoWyBcIlxuICAgICAgICAgICAgICBeIFN0cmluZy5jb25jYXQgXCIsIFwiIGluZm9zXG4gICAgICAgICAgICAgIF4gXCIgXSk6IGV4cGVjdGVkIHZhcmlhYmxlIGRlZmluaXRpb24gKGZ1bmN0aW9uIG91dHB1dCksIGZvdW5kOiBcXFxuICAgICAgICAgICAgICAgICBlbmQgb2YgdG9rZW5zXCIpXG4gICAgICAgIGluXG5cbiAgICAgICAgcGFyc2VfZXZlbnRzIHsgY3R4IHdpdGggZXZlbnRzID0gdmFyX2NvbXAgOjogY3R4LmV2ZW50czsgcmVzdCB9XG4gICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIDo6IEJlZ2luQ2FsbCBpbmZvcyA6OiBfIHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvc1xuICAgICAgICAtPlxuICAgICAgICBsZXQgcmVzdCwgZnVuX2NhbGwgPSBwYXJzZV9mdW5fY2FsbCBjdHgucmVzdCBpblxuXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIGV2ZW50cyA9IEZ1bkNhbGwgZnVuX2NhbGwgOjogY3R4LmV2ZW50czsgcmVzdCB9XG4gICAgICB8IEJlZ2luQ2FsbCBpbmZvcyA6OiByZXN0IHdoZW4gaXNfc3Vic2NvcGVfY2FsbCBpbmZvcyAtPiAoXG4gICAgICAgIG1hdGNoIGluZm9zIHdpdGhcbiAgICAgICAgfCBbXzsgdmFyX25hbWU7IF9dIC0+XG4gICAgICAgICAgbGV0IGJvZHlfY3R4ID0gcGFyc2VfZXZlbnRzIHsgZW1wdHlfY3R4IHdpdGggcmVzdCB9IGluXG4gICAgICAgICAgbGV0IGlucHV0cyA9IFZhckRlZk1hcC5nZXQgdmFyX25hbWUgY3R4LnZhcnMgaW5cbiAgICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgICAgZXZlbnRzID1cbiAgICAgICAgICAgICAgICBTdWJTY29wZUNhbGwgeyBuYW1lID0gaW5mb3M7IGlucHV0czsgYm9keSA9IGJvZHlfY3R4LmV2ZW50cyB9XG4gICAgICAgICAgICAgICAgOjogY3R4LmV2ZW50cztcbiAgICAgICAgICAgICAgcmVzdCA9IGJvZHlfY3R4LnJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInVucmVhY2hhYmxlIGR1ZSB0byB0aGUgW2lzX3N1YnNjb3BlX2NhbGxdIHRlc3RcIilcbiAgICAgIHwgRW5kQ2FsbCBfIDo6IHJlc3QgLT4geyBjdHggd2l0aCBldmVudHMgPSBjdHguZXZlbnRzIHw+IExpc3QucmV2OyByZXN0IH1cbiAgICAgIHwgZXZlbnQgOjogXyAtPiBmYWlsd2l0aCAoXCJVbmV4cGVjdGVkIGV2ZW50OiBcIiBeIHJhd19ldmVudF90b19zdHJpbmcgZXZlbnQpXG4gICAgYW5kIHBhcnNlX2Z1bl9jYWxsIGV2ZW50cyA9XG4gICAgICBtYXRjaFxuICAgICAgICB0YWtlX3doaWxlXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgXykgLT4gaXNfaW5wdXRfdmFyX2RlZiBuYW1lIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICBldmVudHNcbiAgICAgIHdpdGhcbiAgICAgIHwgaW5wdXRzLCBCZWdpbkNhbGwgaW5mb3MgOjogcmVzdCB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgLT5cbiAgICAgICAgbGV0IGZ1bl9pbnB1dHMgPVxuICAgICAgICAgIExpc3RMYWJlbHMubWFwIGlucHV0cyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgICAgICAgICAgeyBwb3MgPSBOb25lOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZSB9XG4gICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdCwgYm9keSwgb3V0cHV0ID1cbiAgICAgICAgICBsZXQgYm9keV9jdHggPVxuICAgICAgICAgICAgcGFyc2VfZXZlbnRzIHsgdmFycyA9IFZhckRlZk1hcC5lbXB0eTsgZXZlbnRzID0gW107IHJlc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJvZHlfcmV2ID0gTGlzdC5yZXYgYm9keV9jdHguZXZlbnRzIGluXG4gICAgICAgICAgYm9keV9jdHgucmVzdCwgYm9keV9yZXYgfD4gTGlzdC50bCB8PiBMaXN0LnJldiwgYm9keV9yZXYgfD4gTGlzdC5oZFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICBtYXRjaCBvdXRwdXQgd2l0aFxuICAgICAgICAgIHwgVmFyQ29tcHV0YXRpb24gdmFyX2RlZiAtPiB2YXJfZGVmXG4gICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiTWlzc2luZyBmdW5jdGlvbiBvdXRwdXQgdmFyaWFibGUgZGVmaW5pdGlvbi5cIlxuICAgICAgICBpblxuXG4gICAgICAgIHJlc3QsIHsgZnVuX25hbWUgPSBpbmZvczsgZnVuX2lucHV0czsgYm9keTsgb3V0cHV0IH1cbiAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIkludmFsaWQgc3RhcnQgb2YgZnVuY3Rpb24gY2FsbC5cIlxuICAgIGluXG5cbiAgICBsZXQgY3R4ID1cbiAgICAgIHRyeSBwYXJzZV9ldmVudHMgeyBlbXB0eV9jdHggd2l0aCByZXN0ID0gcmF3X2V2ZW50cyB9XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+XG4gICAgICAgICgqIFRPRE86IGRpc2N1c3Mgd2hhdCBzaG91bGQgYmUgZG9uZS4gKilcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIHJhdyBldmVudHM6ICVzXFxuXCIgbXNnO1xuICAgICAgICBlbXB0eV9jdHhcbiAgICBpblxuICAgIGN0eC5ldmVudHNcbmVuZFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgOlxuICAgICAgJ2EuXG4gICAgICBzb3VyY2VfcG9zaXRpb24gLT5cbiAgICAgICh1bml0IC0+ICdhKSBhcnJheSAtPlxuICAgICAgKHVuaXQgLT4gYm9vbCkgLT5cbiAgICAgICh1bml0IC0+ICdhKSAtPlxuICAgICAgJ2EgPVxuIGZ1biBwb3MgZXhjZXB0aW9ucyBqdXN0IGNvbnMgLT5cbiAgbGV0IGV4Y2VwdCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBleGNlcHQgLT5cbiAgICAgICAgbGV0IG5ld192YWwgPSB0cnkgU29tZSAoZXhjZXB0ICgpKSB3aXRoIEVtcHR5RXJyb3IgLT4gTm9uZSBpblxuICAgICAgICBtYXRjaCBhY2MsIG5ld192YWwgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gbmV3X3ZhbFxuICAgICAgICB8IFNvbWUgXywgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIF8sIFNvbWUgXyAtPiByYWlzZSAoQ29uZmxpY3RFcnJvciBwb3MpKVxuICAgICAgTm9uZSBleGNlcHRpb25zXG4gIGluXG4gIG1hdGNoIGV4Y2VwdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGlmIGp1c3QgKCkgdGhlbiBjb25zICgpIGVsc2UgcmFpc2UgRW1wdHlFcnJvclxuXG5sZXQgaGFuZGxlX2RlZmF1bHRfb3B0XG4gICAgKHBvcyA6IHNvdXJjZV9wb3NpdGlvbilcbiAgICAoZXhjZXB0aW9ucyA6ICdhIGVvcHRpb24gYXJyYXkpXG4gICAgKGp1c3QgOiBib29sIGVvcHRpb24pXG4gICAgKGNvbnMgOiAnYSBlb3B0aW9uKSA6ICdhIGVvcHRpb24gPVxuICBsZXQgZXhjZXB0ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGV4Y2VwdCAtPlxuICAgICAgICBtYXRjaCBhY2MsIGV4Y2VwdCB3aXRoXG4gICAgICAgIHwgRU5vbmUgXywgXyAtPiBleGNlcHRcbiAgICAgICAgfCBFU29tZSBfLCBFTm9uZSBfIC0+IGFjY1xuICAgICAgICB8IEVTb21lIF8sIEVTb21lIF8gLT4gcmFpc2UgKENvbmZsaWN0RXJyb3IgcG9zKSlcbiAgICAgIChFTm9uZSAoKSkgZXhjZXB0aW9uc1xuICBpblxuICBtYXRjaCBleGNlcHQgd2l0aFxuICB8IEVTb21lIF8gLT4gZXhjZXB0XG4gIHwgRU5vbmUgXyAtPiAoXG4gICAgbWF0Y2gganVzdCB3aXRoXG4gICAgfCBFU29tZSBiIC0+IGlmIGIgdGhlbiBjb25zIGVsc2UgRU5vbmUgKClcbiAgICB8IEVOb25lIF8gLT4gRU5vbmUgKCkpXG5cbmxldCBub19pbnB1dCA6IHVuaXQgLT4gJ2EgPSBmdW4gXyAtPiByYWlzZSBFbXB0eUVycm9yXG5cbigqIFRPRE86IGFkZCBhIGNvbXBhcmUgYnVpbHQtaW4gdG8gZGF0ZXNfY2FsYy4gQXQgdGhlIG1vbWVudCB0aGlzIGZhaWxzIG9uIGUuZy5cbiAgIFszIG1vbnRocywgNCBtb250aHNdICopXG5sZXQgY29tcGFyZV9wZXJpb2RzIChwMSA6IGR1cmF0aW9uKSAocDIgOiBkdXJhdGlvbikgOiBpbnQgPVxuICB0cnlcbiAgICBsZXQgcDFfZGF5cyA9IERhdGVzX2NhbGMuRGF0ZXMucGVyaW9kX3RvX2RheXMgcDEgaW5cbiAgICBsZXQgcDJfZGF5cyA9IERhdGVzX2NhbGMuRGF0ZXMucGVyaW9kX3RvX2RheXMgcDIgaW5cbiAgICBjb21wYXJlIHAxX2RheXMgcDJfZGF5c1xuICB3aXRoIERhdGVzX2NhbGMuRGF0ZXMuQW1iaWd1b3VzQ29tcHV0YXRpb24gLT4gcmFpc2UgVW5jb21wYXJhYmxlRHVyYXRpb25zXG5cbigqIFRPRE86IHNhbWUgaGVyZSwgYWx0aG91Z2ggaXQgd2FzIHR3ZWFrZWQgdG8gbmV2ZXIgZmFpbCBvbiBlcXVhbCBkYXRlcy5cbiAgIENvbXBhcmluZyB0aGUgZGlmZmVyZW5jZSB0byBkdXJhdGlvbl8wIGlzIG5vdCBhIGdvb2QgaWRlYSBiZWNhdXNlIHdlIHN0aWxsXG4gICB3YW50IHRvIGZhaWwgb24gWzEgbW9udGgsIDMwIGRheXNdIHJhdGhlciB0aGFuIHJldHVybiBbZmFsc2VdICopXG5sZXQgZXF1YWxfcGVyaW9kcyAocDEgOiBkdXJhdGlvbikgKHAyIDogZHVyYXRpb24pIDogYm9vbCA9XG4gIHRyeSBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b19kYXlzIChEYXRlc19jYWxjLkRhdGVzLnN1Yl9wZXJpb2RzIHAxIHAyKSA9IDBcbiAgd2l0aCBEYXRlc19jYWxjLkRhdGVzLkFtYmlndW91c0NvbXB1dGF0aW9uIC0+IHJhaXNlIFVuY29tcGFyYWJsZUR1cmF0aW9uc1xuXG5tb2R1bGUgT3BlciA9IHN0cnVjdFxuICBsZXQgb19ub3QgPSBTdGRsaWIubm90XG4gIGxldCBvX2xlbmd0aCBhID0gWi5vZl9pbnQgKEFycmF5Lmxlbmd0aCBhKVxuICBsZXQgb190b3JhdF9pbnQgPSBkZWNpbWFsX29mX2ludGVnZXJcbiAgbGV0IG9fdG9yYXRfbW9uID0gZGVjaW1hbF9vZl9tb25leVxuICBsZXQgb190b21vbmV5X3JhdCA9IG1vbmV5X29mX2RlY2ltYWxcbiAgbGV0IG9fZ2V0RGF5ID0gZGF5X29mX21vbnRoX29mX2RhdGVcbiAgbGV0IG9fZ2V0TW9udGggPSBtb250aF9udW1iZXJfb2ZfZGF0ZVxuICBsZXQgb19nZXRZZWFyID0geWVhcl9vZl9kYXRlXG4gIGxldCBvX2ZpcnN0RGF5T2ZNb250aCA9IGZpcnN0X2RheV9vZl9tb250aFxuICBsZXQgb19sYXN0RGF5T2ZNb250aCA9IGxhc3RfZGF5X29mX21vbnRoXG4gIGxldCBvX3JvdW5kX21vbiA9IG1vbmV5X3JvdW5kXG4gIGxldCBvX3JvdW5kX3JhdCA9IGRlY2ltYWxfcm91bmRcbiAgbGV0IG9fbWludXNfaW50IGkxID0gWi5zdWIgWi56ZXJvIGkxXG4gIGxldCBvX21pbnVzX3JhdCBpMSA9IFEuc3ViIFEuemVybyBpMVxuICBsZXQgb19taW51c19tb24gbTEgPSBaLnN1YiBaLnplcm8gbTFcbiAgbGV0IG9fbWludXNfZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy5uZWdfcGVyaW9kXG4gIGxldCBvX2FuZCA9ICggJiYgKVxuICBsZXQgb19vciA9ICggfHwgKVxuICBsZXQgb194b3IgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPD4gKVxuICBsZXQgb19lcSA9ICggPSApXG4gIGxldCBvX21hcCA9IEFycmF5Lm1hcFxuXG4gIGxldCBvX3JlZHVjZSBmIGRmdCBhID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBpZiBsZW4gPSAwIHRoZW4gZGZ0XG4gICAgZWxzZVxuICAgICAgbGV0IHIgPSByZWYgYS4oMCkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgIHIgOj0gZiAhciBhLihpKVxuICAgICAgZG9uZTtcbiAgICAgICFyXG5cbiAgbGV0IG9fY29uY2F0ID0gQXJyYXkuYXBwZW5kXG4gIGxldCBvX2ZpbHRlciBmIGEgPSBBcnJheS5vZl9saXN0IChMaXN0LmZpbHRlciBmIChBcnJheS50b19saXN0IGEpKVxuICBsZXQgb19hZGRfaW50X2ludCBpMSBpMiA9IFouYWRkIGkxIGkyXG4gIGxldCBvX2FkZF9yYXRfcmF0IGkxIGkyID0gUS5hZGQgaTEgaTJcbiAgbGV0IG9fYWRkX21vbl9tb24gbTEgbTIgPSBaLmFkZCBtMSBtMlxuICBsZXQgb19hZGRfZGF0X2R1ciBkYSBkdSA9IERhdGVzX2NhbGMuRGF0ZXMuYWRkX2RhdGVzIGRhIGR1XG4gIGxldCBvX2FkZF9kdXJfZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy5hZGRfcGVyaW9kc1xuICBsZXQgb19zdWJfaW50X2ludCBpMSBpMiA9IFouc3ViIGkxIGkyXG4gIGxldCBvX3N1Yl9yYXRfcmF0IGkxIGkyID0gUS5zdWIgaTEgaTJcbiAgbGV0IG9fc3ViX21vbl9tb24gbTEgbTIgPSBaLnN1YiBtMSBtMlxuICBsZXQgb19zdWJfZGF0X2RhdCA9IERhdGVzX2NhbGMuRGF0ZXMuc3ViX2RhdGVzXG4gIGxldCBvX3N1Yl9kYXRfZHVyIGRhdCBkdXIgPSBEYXRlc19jYWxjLkRhdGVzLihhZGRfZGF0ZXMgZGF0IChuZWdfcGVyaW9kIGR1cikpXG4gIGxldCBvX3N1Yl9kdXJfZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy5zdWJfcGVyaW9kc1xuICBsZXQgb19tdWx0X2ludF9pbnQgaTEgaTIgPSBaLm11bCBpMSBpMlxuICBsZXQgb19tdWx0X3JhdF9yYXQgaTEgaTIgPSBRLm11bCBpMSBpMlxuXG4gIGxldCBvX211bHRfbW9uX3JhdCBpMSBpMiA9XG4gICAgbGV0IGkxX2FicyA9IFouYWJzIGkxIGluXG4gICAgbGV0IGkyX2FicyA9IFEuYWJzIGkyIGluXG4gICAgbGV0IHNpZ25faW50ID0gWi5zaWduIGkxICogUS5zaWduIGkyIGluXG4gICAgbGV0IHJhdF9yZXN1bHQgPSBRLm11bCAoUS5vZl9iaWdpbnQgaTFfYWJzKSBpMl9hYnMgaW5cbiAgICBsZXQgcmVzLCByZW1haW5kZXIgPSBaLmRpdl9yZW0gKFEubnVtIHJhdF9yZXN1bHQpIChRLmRlbiByYXRfcmVzdWx0KSBpblxuICAgICgqIHdlIHBlcmZvcm0gbmVhcmVzdCByb3VuZGluZyB3aGVuIG11bHRpcGx5aW5nIGFuIGFtb3VudCBvZiBtb25leSBieSBhXG4gICAgICAgZGVjaW1hbCAhKilcbiAgICBpZiBaLihvZl9pbnQgMiAqIHJlbWFpbmRlciA+PSBRLmRlbiByYXRfcmVzdWx0KSB0aGVuXG4gICAgICBaLihhZGQgcmVzIChvZl9pbnQgMSkgKiBvZl9pbnQgc2lnbl9pbnQpXG4gICAgZWxzZSBaLihyZXMgKiBvZl9pbnQgc2lnbl9pbnQpXG5cbiAgbGV0IG9fbXVsdF9kdXJfaW50IGQgbSA9IERhdGVzX2NhbGMuRGF0ZXMubXVsX3BlcmlvZCBkIChaLnRvX2ludCBtKVxuXG4gIGxldCBvX2Rpdl9pbnRfaW50IGkxIGkyID1cbiAgICAoKiBJdCdzIG5vdCBvbiB0aGUgb2NhbWxkb2MsIGJ1dCBRLmRpdiBsaWtlbHkgYWxyZWFkeSByYWlzZXMgdGhpcyA/ICopXG4gICAgaWYgWi56ZXJvID0gaTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvXG4gICAgZWxzZSBRLmRpdiAoUS5vZl9iaWdpbnQgaTEpIChRLm9mX2JpZ2ludCBpMilcblxuICBsZXQgb19kaXZfcmF0X3JhdCBpMSBpMiA9XG4gICAgaWYgUS56ZXJvID0gaTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2UgUS5kaXYgaTEgaTJcblxuICBsZXQgb19kaXZfbW9uX21vbiBtMSBtMiA9XG4gICAgaWYgWi56ZXJvID0gbTIgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvXG4gICAgZWxzZSBRLmRpdiAoUS5vZl9iaWdpbnQgbTEpIChRLm9mX2JpZ2ludCBtMilcblxuICBsZXQgb19kaXZfbW9uX3JhdCBtMSByMSA9XG4gICAgaWYgUS56ZXJvID0gcjEgdGhlbiByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGVsc2Ugb19tdWx0X21vbl9yYXQgbTEgKFEuaW52IHIxKVxuXG4gIGxldCBvX2Rpdl9kdXJfZHVyIGQxIGQyID1cbiAgICBsZXQgaTEsIGkyID1cbiAgICAgIHRyeVxuICAgICAgICAoIGludGVnZXJfb2ZfaW50IChEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b19kYXlzIGQxKSxcbiAgICAgICAgICBpbnRlZ2VyX29mX2ludCAoRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyBkMikgKVxuICAgICAgd2l0aCBEYXRlc19jYWxjLkRhdGVzLkFtYmlndW91c0NvbXB1dGF0aW9uIC0+IHJhaXNlIEluZGl2aXNpYmxlRHVyYXRpb25zXG4gICAgaW5cbiAgICBvX2Rpdl9pbnRfaW50IGkxIGkyXG5cbiAgbGV0IG9fbHRfaW50X2ludCBpMSBpMiA9IFouY29tcGFyZSBpMSBpMiA8IDBcbiAgbGV0IG9fbHRfcmF0X3JhdCBpMSBpMiA9IFEuY29tcGFyZSBpMSBpMiA8IDBcbiAgbGV0IG9fbHRfbW9uX21vbiBtMSBtMiA9IFouY29tcGFyZSBtMSBtMiA8IDBcbiAgbGV0IG9fbHRfZHVyX2R1ciBkMSBkMiA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA8IDBcbiAgbGV0IG9fbHRfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA8IDBcbiAgbGV0IG9fbHRlX2ludF9pbnQgaTEgaTIgPSBaLmNvbXBhcmUgaTEgaTIgPD0gMFxuICBsZXQgb19sdGVfcmF0X3JhdCBpMSBpMiA9IFEuY29tcGFyZSBpMSBpMiA8PSAwXG4gIGxldCBvX2x0ZV9tb25fbW9uIG0xIG0yID0gWi5jb21wYXJlIG0xIG0yIDw9IDBcbiAgbGV0IG9fbHRlX2R1cl9kdXIgZDEgZDIgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPD0gMFxuICBsZXQgb19sdGVfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA8PSAwXG4gIGxldCBvX2d0X2ludF9pbnQgaTEgaTIgPSBaLmNvbXBhcmUgaTEgaTIgPiAwXG4gIGxldCBvX2d0X3JhdF9yYXQgaTEgaTIgPSBRLmNvbXBhcmUgaTEgaTIgPiAwXG4gIGxldCBvX2d0X21vbl9tb24gbTEgbTIgPSBaLmNvbXBhcmUgbTEgbTIgPiAwXG4gIGxldCBvX2d0X2R1cl9kdXIgZDEgZDIgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPiAwXG4gIGxldCBvX2d0X2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPiAwXG4gIGxldCBvX2d0ZV9pbnRfaW50IGkxIGkyID0gWi5jb21wYXJlIGkxIGkyID49IDBcbiAgbGV0IG9fZ3RlX3JhdF9yYXQgaTEgaTIgPSBRLmNvbXBhcmUgaTEgaTIgPj0gMFxuICBsZXQgb19ndGVfbW9uX21vbiBtMSBtMiA9IFouY29tcGFyZSBtMSBtMiA+PSAwXG4gIGxldCBvX2d0ZV9kdXJfZHVyIGQxIGQyID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyID49IDBcbiAgbGV0IG9fZ3RlX2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPj0gMFxuICBsZXQgb19lcV9pbnRfaW50IGkxIGkyID0gWi5lcXVhbCBpMSBpMlxuICBsZXQgb19lcV9yYXRfcmF0IGkxIGkyID0gUS5lcXVhbCBpMSBpMlxuICBsZXQgb19lcV9tb25fbW9uIG0xIG0yID0gWi5lcXVhbCBtMSBtMlxuICBsZXQgb19lcV9kdXJfZHVyIGQxIGQyID0gZXF1YWxfcGVyaW9kcyBkMSBkMlxuICBsZXQgb19lcV9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyID0gMFxuICBsZXQgb19mb2xkID0gQXJyYXkuZm9sZF9sZWZ0XG5lbmRcblxuaW5jbHVkZSBPcGVyXG4iLG51bGwsbnVsbCwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIENhdGFsYSBjb21waWxlciwgYSBzcGVjaWZpY2F0aW9uIGxhbmd1YWdlIGZvciB0YXhcbiAgIGFuZCBzb2NpYWwgYmVuZWZpdHMgY29tcHV0YXRpb24gcnVsZXMuIENvcHlyaWdodCAoQykgMjAyMCBJbnJpYSwgY29udHJpYnV0b3I6XG4gICBFbWlsZSBSb2xsZXkgPGVtaWxlLnJvbGxleUB0dXRhLmlvPi5cblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAgIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gICB0aGUgTGljZW5zZSBhdFxuXG4gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAgIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gICB0aGUgTGljZW5zZS4gKilcblxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFJfb2NhbWwgPSBSdW50aW1lX29jYW1sLlJ1bnRpbWVcblxuY2xhc3MgdHlwZSBzb3VyY2VfcG9zaXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZmlsZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gICAgbWV0aG9kIHN0YXJ0TGluZSA6IGludCBKcy5wcm9wXG4gICAgbWV0aG9kIGVuZExpbmUgOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBzdGFydENvbHVtbiA6IGludCBKcy5wcm9wXG4gICAgbWV0aG9kIGVuZENvbHVtbiA6IGludCBKcy5wcm9wXG4gICAgbWV0aG9kIGxhd0hlYWRpbmdzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG5jbGFzcyB0eXBlIHJhd19ldmVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBldmVudFR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gICAgbWV0aG9kIGluZm9ybWF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG4gICAgbWV0aG9kIHNvdXJjZVBvc2l0aW9uIDogc291cmNlX3Bvc2l0aW9uIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgICBtZXRob2QgbG9nZ2VkVmFsdWVKc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSBldmVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSBkdXJhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB5ZWFycyA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRocyA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRheXMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGR1cmF0aW9uX29mX2pzb28gZCA9XG4gIFJfb2NhbWwuZHVyYXRpb25fb2ZfbnVtYmVycyBkIyMueWVhcnMgZCMjLm1vbnRocyBkIyMuZGF5c1xuXG5sZXQgZHVyYXRpb25fdG9fanNvbyBkID1cbiAgbGV0IHllYXJzLCBtb250aHMsIGRheXMgPSBSX29jYW1sLmR1cmF0aW9uX3RvX3llYXJzX21vbnRoc19kYXlzIGQgaW5cbiAgb2JqZWN0JWpzXG4gICAgdmFsIHllYXJzID0geWVhcnNcbiAgICB2YWwgbW9udGhzID0gbW9udGhzXG4gICAgdmFsIGRheXMgPSBkYXlzXG4gIGVuZFxuXG5sZXQgZGF0ZV9vZl9qc29vIGQgPVxuICBsZXQgZCA9IEpzLnRvX3N0cmluZyBkIGluXG4gIGxldCBkID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZCAnVCcgdGhlbiBkIHw+IFN0cmluZy5zcGxpdF9vbl9jaGFyICdUJyB8PiBMaXN0LmhkXG4gICAgZWxzZSBkXG4gIGluXG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyICctJyBkIHdpdGhcbiAgfCBbeWVhcjsgbW9udGg7IGRheV0gLT5cbiAgICBSX29jYW1sLmRhdGVfb2ZfbnVtYmVycyAoaW50X29mX3N0cmluZyB5ZWFyKSAoaW50X29mX3N0cmluZyBtb250aClcbiAgICAgIChpbnRfb2Zfc3RyaW5nIGRheSlcbiAgfCBfIC0+IGZhaWx3aXRoIFwiZGF0ZV9vZl9qc29vOiBpbnZhbGlkIGRhdGVcIlxuXG5sZXQgZGF0ZV90b19qc29vIGQgPSBKcy5zdHJpbmcgQEAgUl9vY2FtbC5kYXRlX3RvX3N0cmluZyBkXG5cbmNsYXNzIHR5cGUgZXZlbnRfbWFuYWdlciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNldExvZyA6ICh1bml0LCB1bml0KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXRyaWV2ZUV2ZW50cyA6XG4gICAgICAodW5pdCwgZXZlbnQgSnMudCBKcy5qc19hcnJheSBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXRyaWV2ZVJhd0V2ZW50cyA6XG4gICAgICAodW5pdCwgcmF3X2V2ZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuXG5sZXQgZXZlbnRfbWFuYWdlciA6IGV2ZW50X21hbmFnZXIgSnMudCA9XG4gIG9iamVjdCVqc1xuICAgIG1ldGhvZCByZXNldExvZyA9IEpzLndyYXBfbWV0aF9jYWxsYmFjayBSX29jYW1sLnJlc2V0X2xvZ1xuXG4gICAgbWV0aG9kIHJldHJpZXZlRXZlbnRzID1cbiAgICAgIEpzLndyYXBfbWV0aF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAoUl9vY2FtbC5yZXRyaWV2ZV9sb2cgKClcbiAgICAgICAgICAgICAgIHw+IFJfb2NhbWwuRXZlbnRQYXJzZXIucGFyc2VfcmF3X2V2ZW50c1xuICAgICAgICAgICAgICAgfD4gTGlzdC5tYXAgKGZ1biBldmVudCAtPlxuICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IFJfb2NhbWwueW9qc29uX29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpKSkpXG5cbiAgICBtZXRob2QgcmV0cmlldmVSYXdFdmVudHMgPVxuICAgICAgSnMud3JhcF9tZXRoX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBldnQgLT5cbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZXZlbnRUeXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSX29jYW1sLkJlZ2luQ2FsbCBfIC0+IFwiQmVnaW4gY2FsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW5kQ2FsbCBfIC0+IFwiRW5kIGNhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIC0+IFwiVmFyaWFibGUgZGVmaW5pdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVjaXNpb25UYWtlbiBfIC0+IFwiRGVjaXNpb24gdGFrZW5cIilcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGluZm9ybWF0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJlZ2luQ2FsbCBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW5kQ2FsbCBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChpbmZvLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIEpzLnN0cmluZyBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVjaXNpb25UYWtlbiBfIC0+IFtdKSlcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGxvZ2dlZFZhbHVlSnNvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChfLCB2KSAtPiB2XG4gICAgICAgICAgICAgICAgICAgICAgICB8IEVuZENhbGwgXyB8IEJlZ2luQ2FsbCBfIHwgRGVjaXNpb25UYWtlbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJfb2NhbWwudW5lbWJlZGRhYmxlICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfD4gUl9vY2FtbC55b2pzb25fb2ZfcnVudGltZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB8PiBKcy5zdHJpbmdcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIHNvdXJjZVBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEpzLmRlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QlanNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBmaWxlTmFtZSA9IEpzLnN0cmluZyBwb3MuZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBzdGFydExpbmUgPSBwb3Muc3RhcnRfbGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGVuZExpbmUgPSBwb3MuZW5kX2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBzdGFydENvbHVtbiA9IHBvcy5zdGFydF9jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBlbmRDb2x1bW4gPSBwb3MuZW5kX2NvbHVtblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgbGF3SGVhZGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwIEpzLnN0cmluZyBwb3MubGF3X2hlYWRpbmdzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gSnMudW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAgICAgICAgICAgICAgIChSX29jYW1sLnJldHJpZXZlX2xvZyAoKSkpKSlcbiAgZW5kXG5cbmxldCBleGVjdXRlX29yX3Rocm93X2Vycm9yIGYgPVxuICBsZXQgdGhyb3dfZXJyb3IgKGRlc2NyIDogc3RyaW5nKSAocG9zIDogUl9vY2FtbC5zb3VyY2VfcG9zaXRpb24pID1cbiAgICBsZXQgbXNnID1cbiAgICAgIEpzLnN0cmluZ1xuICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJXMgaW4gZmlsZSAlcywgcG9zaXRpb24gJWQ6JWQtLSVkOiVkLlwiIGRlc2NyXG4gICAgICAgICAgIHBvcy5maWxlbmFtZSBwb3Muc3RhcnRfbGluZSBwb3Muc3RhcnRfY29sdW1uIHBvcy5lbmRfbGluZVxuICAgICAgICAgICBwb3MuZW5kX2NvbHVtbilcbiAgICBpblxuICAgIEpzLkpzX2Vycm9yLnJhaXNlX1xuICAgICAgKEpzLkpzX2Vycm9yLm9mX2Vycm9yXG4gICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICB2YWwgbXV0YWJsZSBuYW1lID0gSnMuc3RyaW5nIFwiTm9WYWx1ZVByb3ZpZGVkXCJcbiAgICAgICAgICAgIHZhbCBtdXRhYmxlIG1lc3NhZ2UgPSBtc2dcbiAgICAgICAgICAgIHZhbCBtdXRhYmxlIHN0YWNrID0gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgICAgICBtZXRob2QgdG9TdHJpbmcgPSBtc2dcbiAgICAgICAgIGVuZCkpXG4gIGluXG4gIHRyeSBmICgpIHdpdGhcbiAgfCBSX29jYW1sLk5vVmFsdWVQcm92aWRlZCBwb3MgLT5cbiAgICB0aHJvd19lcnJvclxuICAgICAgXCJObyBydWxlIGFwcGxpZXMgaW4gdGhlIGdpdmVuIGNvbnRleHQgdG8gZ2l2ZSBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZVwiIHBvc1xuICB8IFJfb2NhbWwuQ29uZmxpY3RFcnJvciBwb3MgLT5cbiAgICB0aHJvd19lcnJvclxuICAgICAgXCJBIGNvbmZsaWN0IGhhcHBlbmVkIGJldHdlZW4gdHdvIHJ1bGVzIGdpdmluZyBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZVwiIHBvc1xuICB8IFJfb2NhbWwuQXNzZXJ0aW9uRmFpbGVkIHBvcyAtPlxuICAgIHRocm93X2Vycm9yIFwiQSBmYWlsdXJlIGhhcHBlbmVkIGluIHRoZSBhc3NlcnRpb25cIiBwb3NcbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlICh4OiBQcmlzZUVuQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llUGFydGFnZUFsbG9jYXRpb25zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZcOATGFGYW1pbGxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEF2YW50IG9mIHVuaXRcbiAgICB8IFBlbmRhbnQgb2YgdW5pdFxuICAgIHwgQXByZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSAoeDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEF2YW50IHggLT4gKFwiQXZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVuZGFudCB4IC0+IChcIlBlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXMgeCAtPiAoXCJBcHLDqHNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJpc2VFbkNvbXB0ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBDb21wbGV0ZSBvZiB1bml0XG4gICAgfCBQYXJ0YWdlZSBvZiB1bml0XG4gICAgfCBaZXJvIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY29tcHRlICh4OiBQcmlzZUVuQ29tcHRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNvbXB0ZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDb21wbGV0ZSB4IC0+IChcIkNvbXBsw6h0ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXJ0YWdlZSB4IC0+IChcIlBhcnRhZ8OpZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBaZXJvIHggLT4gKFwiWsOpcm9cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QWxsb2NhdGlvbnMgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgTm9ybWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMgKHg6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVmVyc2VtZW50QWxsb2NhdGlvbnNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTm9ybWFsIHggLT4gKFwiTm9ybWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzICh4OiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiw4lsw6ltZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnQgeCAtPlxuICAgICAgKFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgeCAtPiAoXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIHggLT4gKFwiQ29tcGzDqW1lbnRGYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgeCAtPiAoXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uw4lkdWNhdGlvbkVuZmFudEhhbmRpY2Fww6lcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblJlbnRyw6llU2NvbGFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkpvdXJuYWxpw6hyZVByZXNlbmNlUGFyZW50YWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zOiBkdXJhdGlvbn1cbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggKHg6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOFwiXSxcbiAgWyhcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5BbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMpXSlcblxuXG5tb2R1bGUgQWxsb2NhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X3ZlcnNlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKHg6IEFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwibW9udGFudF92ZXJzw6lcIiwgZW1iZWRfbW9uZXkgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudF92ZXJzZSldKVxuXG5cbm1vZHVsZSBTbWljID0gc3RydWN0XG4gIHR5cGUgdCA9IHticnV0X2hvcmFpcmU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfc21pYyAoeDogU21pYy50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY1wiXSxcbiAgWyhcImJydXRfaG9yYWlyZVwiLCBlbWJlZF9tb25leSB4LlNtaWMuYnJ1dF9ob3JhaXJlKV0pXG5cblxubW9kdWxlIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgWyhcIm1vbnRhbnRcIiwgZW1iZWRfbW9uZXkgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQpXSlcblxuXG5tb2R1bGUgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtpX21vbnRhbnRfdmVyc2U6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKHg6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiaV9tb250YW50X3ZlcnPDqVwiLCBlbWJlZF9tb25leVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLmlfbW9udGFudF92ZXJzZSldKVxuXG5cbm1vZHVsZSBFbmZhbnRFbnRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRfaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkX2RhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGRfcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlLnQ7XG4gICAgZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VuZmFudF9lbnRyZWUgKHg6IEVuZmFudEVudHJlZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50RW50csOpZVwiXSxcbiAgWyhcImRfaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50RW50cmVlLmRfaWRlbnRpZmlhbnQpO1xuICAgIChcImRfcsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudEVudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRfZGF0ZV9kZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcImRfcHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZVxuICAgIHguRW5mYW50RW50cmVlLmRfcHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJkX2FfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkX2LDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBFbmZhbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlkZW50aWZpYW50OiBpbnRlZ2VyO1xuICAgIG9ibGlnYXRpb25fc2NvbGFpcmU6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50O1xuICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGU6IG1vbmV5O1xuICAgIGRhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIHByaXNlX2VuX2NoYXJnZTogUHJpc2VFbkNoYXJnZS50O1xuICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2w7XG4gICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VuZmFudCAoeDogRW5mYW50LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJFbmZhbnRcIl0sXG4gIFsoXCJpZGVudGlmaWFudFwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbmZhbnQuaWRlbnRpZmlhbnQpO1xuICAgIChcIm9ibGlnYXRpb25fc2NvbGFpcmVcIiwgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVcbiAgICB4LkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgIChcImRhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwicHJpc2VfZW5fY2hhcmdlXCIsIGVtYmVkX3ByaXNlX2VuX2NoYXJnZVxuICAgIHguRW5mYW50LnByaXNlX2VuX2NoYXJnZSk7XG4gICAgKFwiYV9kw6lqw6Bfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJiw6luw6lmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFwiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KV0pXG5cblxubW9kdWxlIEVuZmFudExlUGx1c0FnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bGVfcGx1c19hZ2U6IEVuZmFudC50fVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2xlX3BsdXNfYWdlICh4OiBFbmZhbnRMZVBsdXNBZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudExlUGx1c8OCZ8OpXCJdLFxuICBbKFwibGVfcGx1c1/DomfDqVwiLCBlbWJlZF9lbmZhbnQgeC5FbmZhbnRMZVBsdXNBZ2UubGVfcGx1c19hZ2UpXSlcblxuXG5tb2R1bGUgUHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnQ6IEVuZmFudC50IC0+IGJvb2w7XG4gICAgY29uZGl0aW9uc19ob3JzX2FnZTogRW5mYW50LnQgLT4gYm9vbDtcbiAgICBhZ2VfbDUxMl8zXzI6IGR1cmF0aW9uO1xuICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiZHJvaXRfb3V2ZXJ0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCk7XG4gICAgKFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSk7XG4gICAgKFwiw6JnZV9sNTEyXzNfMlwiLCBlbWJlZF9kdXJhdGlvblxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMik7XG4gICAgKFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSldKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBwcmVzdGF0aW9uX2NvdXJhbnRlX2luOiBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQ7XG4gICAgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudFxuICB9XG5lbmRcbmxldCBlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luICh4OiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJwcmVzdGF0aW9uX2NvdXJhbnRlX2luXCIsIGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gKF86IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBydW50aW1lX3ZhbHVlID0gVW5pdFxuXG5cbm1vZHVsZSBFbmZhbnRMZVBsdXNBZ2VJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZW5mYW50c19pbjogRW5mYW50LnQgYXJyYXl9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4gKHg6IEVuZmFudExlUGx1c0FnZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRMZVBsdXPDgmfDqV9pblwiXSxcbiAgWyhcImVuZmFudHNfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkgeC5FbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luKV0pXG5cblxubW9kdWxlIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbjogYm9vbDtcbiAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luOiBib29sO1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2luOiBtb25leTtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZW5mYW50c19hX2NoYXJnZV9pbjogRW5mYW50LnQgYXJyYXk7XG4gICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luKTtcbiAgICAoXCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzc291cmNlc19tZW5hZ2VfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZW5mYW50c1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudClcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmVuZmFudHNfYV9jaGFyZ2VfaW4pO1xuICAgIChcImF2YWl0X2VuZmFudF/DoF9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbildKVxuXG5cbm1vZHVsZSBTbWljSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGU7IHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnR9XG5lbmRcbmxldCBlbWJlZF9zbWljX2luICh4OiBTbWljSW4udCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlNtaWNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZSB4LlNtaWNJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaV9kYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGlfZW5mYW50c19pbjogRW5mYW50RW50cmVlLnQgYXJyYXk7XG4gICAgaV9yZXNzb3VyY2VzX21lbmFnZV9pbjogbW9uZXk7XG4gICAgaV9yZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50O1xuICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW46IGJvb2w7XG4gICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luOiBib29sO1xuICAgIGlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJpX2RhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJpX2VuZmFudHNfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudF9lbnRyZWUpXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2VuZmFudHNfaW4pO1xuICAgIChcImlfcmVzc291cmNlc19tw6luYWdlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc3NvdXJjZXNfbWVuYWdlX2luKTtcbiAgICAoXCJpX3LDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc2lkZW5jZV9pbik7XG4gICAgKFwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luKTtcbiAgICAoXCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luKTtcbiAgICAoXCJpX2F2YWl0X2VuZmFudF/DoF9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luKV0pXG5cblxuXG5cbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluLnQpIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9XG4gIGxldCBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCI7IFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7QWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zID1cbiAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX31cblxubGV0IGVuZmFudF9sZV9wbHVzX2FnZSAoZW5mYW50X2xlX3BsdXNfYWdlX2luOiBFbmZhbnRMZVBsdXNBZ2VJbi50KSA6IEVuZmFudExlUGx1c0FnZS50ID1cbiAgbGV0IGVuZmFudHNfOiBFbmZhbnQudCBhcnJheSA9IGVuZmFudF9sZV9wbHVzX2FnZV9pbi5FbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luIGluXG4gIGxldCBsZV9wbHVzX2FnZV86IEVuZmFudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiRW5mYW50TGVQbHVzw4Jnw6lcIjsgXCJsZV9wbHVzX8OiZ8OpXCJdIChlbWJlZF9lbmZhbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fcmVkdWNlXG4gICAgICAgICAgICAgIChmdW4gKHBvdGVudGllbF9wbHVzX2FnZV8xXzogRW5mYW50LnQpXG4gICAgICAgICAgICAgICAgIChwb3RlbnRpZWxfcGx1c19hZ2VfMl86IEVuZmFudC50KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgKGxldCBwb3RlbnRpZWxfcGx1c19hZ2VfIDogRW5mYW50LnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGllbF9wbHVzX2FnZV8xX1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKHBvdGVudGllbF9wbHVzX2FnZV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAobGV0IHBvdGVudGllbF9wbHVzX2FnZV8gOiBFbmZhbnQudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzJfXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAocG90ZW50aWVsX3BsdXNfYWdlXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIHBvdGVudGllbF9wbHVzX2FnZV8xXyBlbHNlIHBvdGVudGllbF9wbHVzX2FnZV8yXylcbiAgICAgICAgICAgICAgKHtFbmZhbnQuaWRlbnRpZmlhbnQgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCItMVwiKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgKFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyOTk5KSAoMTIpICgzMSkpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKSk7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlfSkgZW5mYW50c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7RW5mYW50TGVQbHVzQWdlLmxlX3BsdXNfYWdlID0gbGVfcGx1c19hZ2VffVxuXG5sZXQgc21pYyAoc21pY19pbjogU21pY0luLnQpIDogU21pYy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gc21pY19pbi5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBzbWljX2luLlNtaWNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGJydXRfaG9yYWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiU21pY1wiOyBcImJydXRfaG9yYWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAzXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzU3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDE1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzY2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMjVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc3NFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk4XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg4KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTA3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MzVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc0OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMi0xNjA4IGR1IDIyIGTDqWNlbWJyZSAyMDIyIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEyN1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUxXCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1NtaWMuYnJ1dF9ob3JhaXJlID0gYnJ1dF9ob3JhaXJlX31cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gbWluaXN0w6lyaWVsbGUgTsKwRFNTL1NEMkIvMjAxOS82NSBkdSAyNSBtYXJzIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMTkgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxMzE2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG5vIERTUy9TRDJCLzIwMjAvMzMgZHUgMTggZsOpdnJpZXIgMjAyMCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMCBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ0MFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrBEU1MvMkIvMjAyMS82NSBkdSAxOSBtYXJzIDIwMjEgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjEgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0ODFcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjIvODIgZHUgMjggbWFycyAyMDIyIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIyIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjI4XCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50ID0gbW9udGFudF99XG5cbmxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBwcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBhZ2VfbDUxMl8zXzJfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbDUxMl8zXzJcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDIwKSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHNtaWNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02OTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCBzbWljX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLnLDqXNpZGVuY2VcIl0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IFNtaWMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljXCI7IFwiU21pY1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gc21pYylcbiAgICAoe1NtaWNJbi5kYXRlX2NvdXJhbnRlX2luID0gc21pY19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIFNtaWNJbi5yZXNpZGVuY2VfaW4gPSBzbWljX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSByZXN1bHRfLlNtaWMuYnJ1dF9ob3JhaXJlIGluXG4gIGxldCByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjI7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsYSBHdWFkZWxvdXBlLCDDoCBsYSBHdXlhbmUsIMOgIGxhIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSBldCDDoCBTYWludC1NYXJ0aW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTYxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbDUxMl8zXzJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfbDUxMl8zXzJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNTsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNzU1LTAtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTY5LlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9sNTEyXzNfMl8pKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01ODsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9hdXRyZXNfY29kZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBSw6hnbGVzIGRlIG5vbi1jdW11bFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IFByaW5jaXBlcyBnw6luw6lyYXV4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCA9IGRyb2l0X291dmVydF87XG4gICAgIFByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlID0gY29uZGl0aW9uc19ob3JzX2FnZV87XG4gICAgIFByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzIgPSBhZ2VfbDUxMl8zXzJfO1xuICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEgPSByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV99XG5cbmxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XzogYm9vbCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gaW5cbiAgbGV0IHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzc291cmNlc19tZW5hZ2VfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlXzogRW5mYW50LnQgYXJyYXkgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmVuZmFudHNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXzogYm9vbCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gaW5cbiAgbGV0IHByaXNlX2VuX2NvbXB0ZV86IEVuZmFudC50IC0+IFByaXNlRW5Db21wdGUudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE1OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1NTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gUHJpc2VFbkNvbXB0ZS5aZXJvICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA1OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgdmVyc2VtZW50XzogRW5mYW50LnQgLT4gVmVyc2VtZW50QWxsb2NhdGlvbnMudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInZlcnNlbWVudFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjYwOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzE7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2VtZW50QWxsb2NhdGlvbnMuTm9ybWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE5OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwOTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODk7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX2VuZmFudHNfbDUyMV8xXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm5vbWJyZV9lbmZhbnRzX2w1MjFfMVwiXSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfM186IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfZW5mYW50c19hbGluw6lhXzJfbDUyMV8zXCJdXG4gICAgKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHJlc3VsdF86IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2lvbl9hdnJpbF8yMDA4XCI7XG4gICAgICBcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJ2ZXJzaW9uX2F2cmlsXzIwMDhcIjtcbiAgICAgIFwiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIl0gYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOClcbiAgICAoKCkpKSkgaW5cbiAgbGV0IHZlcnNpb25fYXZyaWxfMjAwOF9kb3RfYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXzogZHVyYXRpb24gPSByZXN1bHRfLkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LmFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyBpblxuICBsZXQgYm1hZl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZi5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2NzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2NzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJibWFmXCI7IFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJibWFmXCI7IFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGJtYWZfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgYm1hZl9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYzOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYzOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcHJlc3RhdGlvbl9jb3VyYW50ZV86IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnByZXN0YXRpb25fY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTYxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE2MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjE7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucsOpc2lkZW5jZVwiXVxuICAgICAgKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7UHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XzogRW5mYW50LnQgLT4gYm9vbCA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uZGl0aW9uc19ob3JzX2FnZV86IEVuZmFudC50IC0+IGJvb2wgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfOiBkdXJhdGlvbiA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50c186IEVuZmFudC50IGFycmF5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpLmVuZmFudHNcIl1cbiAgICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGVuZmFudHNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbmZhbnRMZVBsdXNBZ2UudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRfbGVfcGx1c1/DomfDqVwiOyBcIkVuZmFudExlUGx1c8OCZ8OpXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwiRW5mYW50TGVQbHVzw4Jnw6lcIl1cbiAgICBlbmZhbnRfbGVfcGx1c19hZ2UpXG4gICAgKHtFbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luID0gZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzX30pKSkgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1c19hZ2VfOiBFbmZhbnQudCA9IHJlc3VsdF8uRW5mYW50TGVQbHVzQWdlLmxlX3BsdXNfYWdlIGluXG4gIGxldCBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBFbmZhbnQudCAtPiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgzOyBzdGFydF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICg0KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDE0KSAoMCkgKDApKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTUyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiZW5mYW50c1/DoF9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnQpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc1OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19maWx0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSBlbmZhbnRzX2FfY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBlc3RfZW5mYW50X2xlX3BsdXNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIG9fZXEgZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzX2FnZV8gZW5mYW50XykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE1NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX19pX2lfZDUyMV8zXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwbGFmb25kX0lJX2Q1MjFfM1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaXJjdWxhaXJlIGludGVybWluaXN0w6lyaWVsbGUgTsKwIERTUy9TRDJCLzIwMTcvMzUyIGR1IDIyIGTDqWNlbWJyZSAyMDE3IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMTggZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODc3MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MzsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk1NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTY4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1ODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3RlcmllbGxlIG5vIERTUy9TRDJCLzIwMTkvMjYxIGR1IDE4IGTDqWNlbWJyZSAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMjAgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MDgzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Nzc1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxNCBkw6ljZW1icmUgMjAyMCByZWxhdGlmIGF1IG1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgYXV4IHRyYW5jaGVzIGR1IGJhcsOobWUgYXBwbGljYWJsZSBhdSByZWNvdXZyZW1lbnQgZGVzIGluZHVzIGV0IMOgIGxhIHNhaXNpZSBkZXMgcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxNTU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODMwMDAwXCIpXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwXCIpXG4gICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNTg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9kNTIxXzNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfSV9kNTIxXzNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrAgRFNTL1NEMkIvMjAxOC8yNzkgZHUgMTcgZMOpY2VtYnJlIDIwMTggcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAxOSBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2ODQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2ODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0ZXJpZWxsZSBubyBEU1MvU0QyQi8yMDE5LzI2MSBkdSAxOCBkw6ljZW1icmUgMjAxOSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDIwIGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc3NTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTc3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1ODI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODI3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwMFwiKVxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9jb21wbGVtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9jb21wbMOpbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMwOyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1NS0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9mb3JmYWl0YWlyZV86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjA7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjQ7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTUtMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgKG9fbGVuZ3RoIGVuZmFudHNfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZHVyX2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDApICgzNjUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTIwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyaWVtZV9lbmZhbnRfZXRfcGx1c19tYXlvdHRlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpw6htZV9lbmZhbnRfZXRfcGx1c19tYXlvdHRlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk1OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNDYzXCIpKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkpKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9tYXlvdHRlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpw6htZV9lbmZhbnRfbWF5b3R0ZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMxOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDQ2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDUzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDQ3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDYxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE2OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDY5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzE7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Nzk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOTE4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTU7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMjU5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUwMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xNDNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfdG90YWxfZW5mYW50c186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJub21icmVfdG90YWxfZW5mYW50c1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgIChvX2xlbmd0aCBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTA7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX21veWVuX2VuZmFudHNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX21veWVuX2VuZmFudHNcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX3JlZHVjZVxuICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHN1bTFfIHN1bTJfKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAob19tYXBcbiAgICAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmlzZV9lbl9jb21wdGUpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuQ29tcGxldGUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuUGFydGFnZWUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlplcm8gXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MjsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE0NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMzkzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEzKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzMzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc5OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODg7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTE2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDY7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMTA1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA5NzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI0OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzM7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzE3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTcyOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Mjsgc3RhcnRfY29sdW1uPTI5OyBlbmRfbGluZT0zNjI7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9iYXNlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9iYXNlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTk7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTsgZW5kX2NvbHVtbj03MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEwOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNzU1LTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9kdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudF8pKSkpKSkpKSBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAyOyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0X2VuZmFudF9sZV9wbHVzX2FnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX2R1cmF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgY29tcGxlbWVudF9kZWdyZXNzaWZfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY2OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFsbG9jYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFsbG9jYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc1OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBhbGxvY2F0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFsbG9jYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzOTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfZm9yZmFpdGFpcmVfcGFyX2VuZmFudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjAyMzRcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzY7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTAxMTdcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDk7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1MDU5XCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9ldF9wbHVzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpw6htZV9lbmZhbnRfZXRfcGx1c1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODQ7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMDI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfZGV1eGllbWVfZW5mYW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4acOobWVfZW5mYW50XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzUwOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjM3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjQzN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjQ5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODI7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjU1NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTA7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjYxM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY3MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjgwNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjkzNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjI7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzA2OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlXyBwbGFmb25kX19pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llblwiXSAoZW1iZWRfZGVjaW1hbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX2VxIG5vbWJyZV90b3RhbF9lbmZhbnRzXyAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkgdGhlblxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IG5vbWJyZV9tb3llbl9lbmZhbnRzXyBub21icmVfdG90YWxfZW5mYW50c18pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9kNTIxXzNfKSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9mb3JmYWl0YWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfcGFyX2VuZmFudF9cbiAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpIGVuZmFudHNfYV9jaGFyZ2VfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU3OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lbmZhbnRfKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxOyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTE7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lbmZhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9tYXlvdHRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyaWVtZV9lbmZhbnRfZXRfcGx1c19tYXlvdHRlXykpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfXG4gICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfZXRfcGx1c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbl86IEVuZmFudC50IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODM7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxMSkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzY5XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1NjdcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMwOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzA7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfZm9yZmFpdGFpcmVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX2NvbXBsw6ltZW50X3BvdXJfZm9yZmFpdGFpcmVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3MDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfaV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4NjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQyOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX2Jhc2VcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTE7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdCBtb250YW50X2luaXRpYWxfYmFzZV8gcmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTExOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSAoXG4gICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg2OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbl8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ByaXNlX2VuX2NvbXB0ZSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHByaXNlX2VuX2NvbXB0ZV8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5QYXJ0YWdlZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuWmVybyBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTEzMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzI7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMjsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX2Jhc2VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEyOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlbiBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmFzZV9cbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEyOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfbWFqb3JhdGlvblwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEzNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuXG4gICAgICAgICAgICAgIChvX3JlZHVjZVxuICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogbW9uZXkpIChzdW0yXzogbW9uZXkpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gc3VtMV8gc3VtMl8pIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkgZW5mYW50c19hX2NoYXJnZV8pKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2Jhc2VfY29tcGzDqW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25cIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4OTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uIG1vbnRhbnRfdmVyc2VfYmFzZV8gbW9udGFudF92ZXJzZV9tYWpvcmF0aW9uXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcIm1vbnRhbnRfdmVyc8OpX2NvbXBsw6ltZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xODM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9jb21wbGVtZW50XyB0aGVuXG4gICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiXVxuICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiXVxuICAgICAgICAgICAgICAgIGNvbXBsZW1lbnRfZGVncmVzc2lmXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKSkpKSkpKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlblxuICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBtb250YW50X3ZlcnNlX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9mb3JmYWl0YWlyZV8pIGVsc2VcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX29yIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM1OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSkgaW5cbiAge0FsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50X3ZlcnNlID0gbW9udGFudF92ZXJzZV99XG5cbmxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgaV9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgaV9lbmZhbnRzXzogRW5mYW50RW50cmVlLnQgYXJyYXkgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2VuZmFudHNfaW4gaW5cbiAgbGV0IGlfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4gaW5cbiAgbGV0IGlfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3Jlc2lkZW5jZV9pbiBpblxuICBsZXQgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiBpblxuICBsZXQgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlXzogRW5mYW50LnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRzX8OgX2NoYXJnZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTMxLTFcIjsgXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnRFbnRyZWUudCkgLT5cbiAgICAgICAgICAgICAgICAge0VuZmFudC5pZGVudGlmaWFudCA9IChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2lkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDMpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50ICgpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfZGF0ZV9jb3VyYW50ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKCkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzICgpKSkpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQucHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCl9KVxuICAgICAgICAgICAgICBpX2VuZmFudHNfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc2OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgIFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudFwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTkyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mjsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTkyOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mzsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkyOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9OTI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTI7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTk2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9OTY7IGVuZF9jb2x1bW49ODA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNzb3VyY2VzX21lbmFnZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMucmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg4OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGlfcmVzc291cmNlc19tZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBpX3Jlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04OTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg2OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODY7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGlfZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZmFudHNfYV9jaGFyZ2VfOiBFbmZhbnQudCBhcnJheSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLmVuZmFudHNfw6BfY2hhcmdlXCJdXG4gICAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBlbmZhbnRzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDA7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDA7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTAwOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzc291cmNlc19tZW5hZ2VfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV87XG4gICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5lbmZhbnRzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9lbmZhbnRzX2FfY2hhcmdlXztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX30pKSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfdmVyc2VfOiBtb25leSA9IHJlc3VsdF8uQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnRfdmVyc2UgaW5cbiAgbGV0IGlfbW9udGFudF92ZXJzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiaV9tb250YW50X3ZlcnPDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfdmVyc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSkpIGluXG4gIHtJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlID0gaV9tb250YW50X3ZlcnNlX31cbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gOiBQcmlzZUVuQ2hhcmdlLnQgLT4gcHJpc2VfZW5fY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyAocHJpc2VfZW5fY2hhcmdlIDogcHJpc2VfZW5fY2hhcmdlIEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZS50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NvbXB0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNvbXBsZXRlXCJcbiAgICAgICAgLSBcIlBhcnRhZ2VlXCJcbiAgICAgICAgLSBcIlplcm9cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jb21wdGVfdG9fanNvbyA6IFByaXNlRW5Db21wdGUudCAtPiBwcmlzZV9lbl9jb21wdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ29tcGxldGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhcnRhZ2VlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFydGFnZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBaZXJvIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWmVyb1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY29tcHRlX29mX2pzb28gKHByaXNlX2VuX2NvbXB0ZSA6IHByaXNlX2VuX2NvbXB0ZSBKcy50KVxuICA6IFByaXNlRW5Db21wdGUudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NvbXB0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNvbXBsZXRlXCIgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKVxuICB8IFwiUGFydGFnZWVcIiAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpXG4gIHwgXCJaZXJvXCIgLT4gUHJpc2VFbkNvbXB0ZS5aZXJvICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ29tcHRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hbGxvY2F0aW9ucyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5vcm1hbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb29cbiAgOiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50IC0+IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBOb3JtYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb3JtYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb29cbiAgKHZlcnNlbWVudF9hbGxvY2F0aW9ucyA6IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50KVxuICA6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQgPVxuICBtYXRjaCB2ZXJzZW1lbnRfYWxsb2NhdGlvbnMjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOb3JtYWxcIiAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKClcbiAgfCBcIkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEFsbG9jYXRpb25zLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjb2xsZWN0aXZpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJHdWFkZWxvdXBlXCJcbiAgICAgICAgLSBcIkd1eWFuZVwiXG4gICAgICAgIC0gXCJNYXJ0aW5pcXVlXCJcbiAgICAgICAgLSBcIkxhUmV1bmlvblwiXG4gICAgICAgIC0gXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgICAtIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgICAtIFwiTWV0cm9wb2xlXCJcbiAgICAgICAgLSBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICAgIC0gXCJNYXlvdHRlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX3RvX2pzb28gOiBDb2xsZWN0aXZpdGUudCAtPiBjb2xsZWN0aXZpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR3VhZGVsb3VwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1YWRlbG91cGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHdXlhbmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdXlhbmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXJ0aW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFydGluaXF1ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IExhUmV1bmlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxhUmV1bmlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50QmFydGhlbGVteSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50TWFydGluIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRNYXJ0aW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNZXRyb3BvbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNZXRyb3BvbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludFBpZXJyZUV0TWlxdWVsb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXlvdHRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWF5b3R0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY29sbGVjdGl2aXRlX29mX2pzb28gKGNvbGxlY3Rpdml0ZSA6IGNvbGxlY3Rpdml0ZSBKcy50KVxuICA6IENvbGxlY3Rpdml0ZS50ID1cbiAgbWF0Y2ggY29sbGVjdGl2aXRlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR3VhZGVsb3VwZVwiIC0+IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpXG4gIHwgXCJHdXlhbmVcIiAtPiBDb2xsZWN0aXZpdGUuR3V5YW5lICgpXG4gIHwgXCJNYXJ0aW5pcXVlXCIgLT4gQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKClcbiAgfCBcIkxhUmV1bmlvblwiIC0+IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKClcbiAgfCBcIlNhaW50QmFydGhlbGVteVwiIC0+IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgKClcbiAgfCBcIlNhaW50TWFydGluXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpXG4gIHwgXCJNZXRyb3BvbGVcIiAtPiBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpXG4gIHwgXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uICgpXG4gIHwgXCJNYXlvdHRlXCIgLT4gQ29sbGVjdGl2aXRlLk1heW90dGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NvbGxlY3Rpdml0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZU1pbmltdW1BbGluZWExTDUyMTM6XG4gICAgICBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X3RvX2pzb29cbiAgICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LnQpXG4gICAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU1pbmltdW1BbGluZWExTDUyMTMgPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCBKcy50KSA6XG4gICAgQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9XG4gICAge1xuICAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDgjIy5hZ2VNaW5pbXVtQWxpbmVhMUw1MjEzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLm1vbnRhbnRWZXJzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljID1cbiAgb2JqZWN0IG1ldGhvZCBicnV0SG9yYWlyZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfdG9fanNvbyAoc21pYyA6IFNtaWMudCkgOiBzbWljIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGJydXRIb3JhaXJlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHNtaWMuYnJ1dF9ob3JhaXJlXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfb2ZfanNvbyAoc21pYyA6IHNtaWMgSnMudCkgOiBTbWljLnQgPVxuICAgIHtcbiAgICAgIGJydXRfaG9yYWlyZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBzbWljIyMuYnJ1dEhvcmFpcmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgaU1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudClcbiAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlNb250YW50VmVyc2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlXG4gICAgICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBpX21vbnRhbnRfdmVyc2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMjIy5pTW9udGFudFZlcnNlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudF9lbnRyZWUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZElkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkUmVtdW5lcmF0aW9uTWVuc3VlbGxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGREYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZFByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZEFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkQmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2VudHJlZV90b19qc29vIChlbmZhbnRfZW50cmVlIDogRW5mYW50RW50cmVlLnQpXG4gICAgOiBlbmZhbnRfZW50cmVlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRJZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudF9lbnRyZWUuZF9pZGVudGlmaWFudFxuICAgICAgdmFsIGRSZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X2VudHJlZS5kX3JlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkRGF0ZURlTmFpc3NhbmNlID0gZGF0ZV90b19qc29vIGVuZmFudF9lbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIGRQcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gZW5mYW50X2VudHJlZS5kX3ByaXNlX2VuX2NoYXJnZVxuICAgICAgdmFsIGRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfZW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50ID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfZW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9lbnRyZWVfb2ZfanNvbyAoZW5mYW50X2VudHJlZSA6IGVuZmFudF9lbnRyZWUgSnMudCkgOlxuICAgIEVuZmFudEVudHJlZS50ID1cbiAgICB7XG4gICAgICBkX2lkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X2VudHJlZSMjLmRJZGVudGlmaWFudDtcbiAgICAgIGRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnRfZW50cmVlIyMuZFJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIGRfZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50X2VudHJlZSMjLmREYXRlRGVOYWlzc2FuY2U7XG4gICAgICBkX3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV9vZl9qc29vIGVuZmFudF9lbnRyZWUjIy5kUHJpc2VFbkNoYXJnZTtcbiAgICAgIGRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50X2VudHJlZSMjLmRBRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgZF9iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X2VudHJlZSMjLmRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3RvX2pzb28gKGVuZmFudCA6IEVuZmFudC50KSA6IGVuZmFudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudC5pZGVudGlmaWFudFxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBkYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgcHJpc2VFbkNoYXJnZSA9IHByaXNlX2VuX2NoYXJnZV90b19qc29vIGVuZmFudC5wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudC5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X29mX2pzb28gKGVuZmFudCA6IGVuZmFudCBKcy50KSA6IEVuZmFudC50ID1cbiAgICB7XG4gICAgICBpZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudCMjLmlkZW50aWZpYW50O1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb28gZW5mYW50IyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnQjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBlbmZhbnQjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPSBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyBlbmZhbnQjIy5wcmlzZUVuQ2hhcmdlO1xuICAgICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50IyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZW5mYW50IyMuYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfbGVfcGx1c19hZ2UgPVxuICBvYmplY3QgbWV0aG9kIGxlUGx1c0FnZTogZW5mYW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2UgOiBFbmZhbnRMZVBsdXNBZ2UudClcbiAgICA6IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsZVBsdXNBZ2UgPSBlbmZhbnRfdG9fanNvbyBlbmZhbnRfbGVfcGx1c19hZ2UubGVfcGx1c19hZ2VcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX29mX2pzb29cbiAgICAoZW5mYW50X2xlX3BsdXNfYWdlIDogZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQpIDogRW5mYW50TGVQbHVzQWdlLnQgPVxuICAgIHtsZV9wbHVzX2FnZSA9IGVuZmFudF9vZl9qc29vIGVuZmFudF9sZV9wbHVzX2FnZSMjLmxlUGx1c0FnZVxuICAgIH1cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0OlxuICAgICAgKHVuaXQsICBlbmZhbnQgSnMudCAtPiBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZTpcbiAgICAgICh1bml0LCAgZW5mYW50IEpzLnQgLT4gYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgYWdlTDUxMjMyOiBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVnaW1lT3V0cmVNZXJMNzUxMTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICA6IFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICBtZXRob2QgZHJvaXRPdXZlcnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IGVuZmFudCBKcy50KSAtPlxuICAgICAgICAgIEpzLmJvb2wgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0IChlbmZhbnRfb2ZfanNvb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBtZXRob2QgY29uZGl0aW9uc0hvcnNBZ2UgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IGVuZmFudCBKcy50KSAtPlxuICAgICAgICAgIEpzLmJvb2wgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSAoZW5mYW50X29mX2pzb29cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIHZhbCBhZ2VMNTEyMzIgPSBkdXJhdGlvbl90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yXG4gICAgICB2YWwgcmVnaW1lT3V0cmVNZXJMNzUxMSA9XG4gICAgICAgIEpzLmJvb2wgcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMVxuICAgICAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBkcm9pdF9vdXZlcnQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnZHJvaXRfb3V2ZXJ0JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBjb25kaXRpb25zX2hvcnNfYWdlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbnNfaG9yc19hZ2UnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGFnZV9sNTEyXzNfMiA9IGR1cmF0aW9uX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmFnZUw1MTIzMjtcbiAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xID1cbiAgICAgICAgSnMudG9fYm9vbCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMucmVnaW1lT3V0cmVNZXJMNzUxMVxuICAgIH1cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByZXN0YXRpb25Db3VyYW50ZUluOlxuICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvbyAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHByZXN0YXRpb25Db3VyYW50ZUluID1cbiAgICAgICAgZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcHJlc3RhdGlvbl9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnByZXN0YXRpb25Db3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gPVxub2JqZWN0IGVuZFxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5fdG9fanNvbyAoXyA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQgPSBvYmplY3QlanMgZW5kXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbl9vZl9qc29vIChfIDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiBKcy50KSA6IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCA9ICgpXG5jbGFzcyB0eXBlIGVuZmFudF9sZV9wbHVzX2FnZV9pbiA9XG4gIG9iamVjdCBtZXRob2QgZW5mYW50c0luOiBlbmZhbnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2VfaW5fdG9fanNvbyAoZW5mYW50X2xlX3BsdXNfYWdlX2luXG4gICAgOiBFbmZhbnRMZVBsdXNBZ2VJbi50KSA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbmZhbnRzSW4gPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF90b19qc29vIHgpIGVuZmFudF9sZV9wbHVzX2FnZV9pbi5lbmZhbnRzX2luXG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vXG4gICAgKGVuZmFudF9sZV9wbHVzX2FnZV9pbiA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50KSA6XG4gICAgRW5mYW50TGVQbHVzQWdlSW4udCA9XG4gICAge1xuICAgICAgZW5mYW50c19pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbmZhbnRfbGVfcGx1c19hZ2VfaW4jIy5lbmZhbnRzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbmZhbnRzQUNoYXJnZUluOiBlbmZhbnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb28gKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pblxuICAgICAgdmFsIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbiA9XG4gICAgICAgIEpzLmJvb2wgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzc291cmNlc19tZW5hZ2VfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzaWRlbmNlX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgZW5mYW50c0FDaGFyZ2VJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X3RvX2pzb28geCkgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5lbmZhbnRzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgYXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXG4gICAgICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLnBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluO1xuICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMucGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc3NvdXJjZXNNZW5hZ2VJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5yZXNpZGVuY2VJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgZW5mYW50c19hX2NoYXJnZV9pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZW5mYW50c0FDaGFyZ2VJbjtcbiAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5hdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pY19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHNtaWNfaW5fdG9fanNvbyAoc21pY19pbiA6IFNtaWNJbi50KSA6IHNtaWNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPSBkYXRlX3RvX2pzb28gc21pY19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPSBjb2xsZWN0aXZpdGVfdG9fanNvbyBzbWljX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBzbWljX2luX29mX2pzb28gKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpIDogU21pY0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPSBkYXRlX29mX2pzb28gc21pY19pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzaWRlbmNlX2luID0gY29sbGVjdGl2aXRlX29mX2pzb28gc21pY19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgaURhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlFbmZhbnRzSW46IGVuZmFudF9lbnRyZWUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVJlc3NvdXJjZXNNZW5hZ2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlBdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpRGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgaUVuZmFudHNJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X2VudHJlZV90b19qc29vIHgpIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfZW5mYW50c19pblxuICAgICAgdmFsIGlSZXNzb3VyY2VzTWVuYWdlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9yZXNzb3VyY2VzX21lbmFnZV9pblxuICAgICAgdmFsIGlSZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcmVzaWRlbmNlX2luXG4gICAgICB2YWwgaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluID1cbiAgICAgICAgSnMuYm9vbCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXG4gICAgICB2YWwgaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbiA9XG4gICAgICAgIEpzLmJvb2wgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXG4gICAgICB2YWwgaUF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJbiA9XG4gICAgICAgIEpzLmJvb2wgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblxuICAgICAgZW5kXG4gIGxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBpX2RhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pRGF0ZUNvdXJhbnRlSW47XG4gICAgICBpX2VuZmFudHNfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGVuZmFudF9lbnRyZWVfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaUVuZmFudHNJbjtcbiAgICAgIGlfcmVzc291cmNlc19tZW5hZ2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pUmVzc291cmNlc01lbmFnZUluO1xuICAgICAgaV9yZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvb1xuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuaVJlc2lkZW5jZUluO1xuICAgICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLmlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVFc3RQYXJlbnRJbjtcbiAgICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgICAgICMjLmlQZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW47XG4gICAgICBpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMuaUF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJblxuICAgIH1cblxuXG5cblxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhcbiAgKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQpXG4gIDogYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCBKcy50ID1cbiAgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pblxuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luX29mX2pzb29cbiAgfD4gYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOFxuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X3RvX2pzb29cblxuXG5sZXQgZW5mYW50X2xlX3BsdXNfYWdlIChlbmZhbnRfbGVfcGx1c19hZ2VfaW4gOiBlbmZhbnRfbGVfcGx1c19hZ2VfaW4gSnMudClcbiAgOiBlbmZhbnRfbGVfcGx1c19hZ2UgSnMudCA9XG4gIGVuZmFudF9sZV9wbHVzX2FnZV9pblxuICB8PiBlbmZhbnRfbGVfcGx1c19hZ2VfaW5fb2ZfanNvb1xuICB8PiBlbmZhbnRfbGVfcGx1c19hZ2VcbiAgfD4gZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb29cblxuXG5sZXQgc21pYyAoc21pY19pbiA6IHNtaWNfaW4gSnMudClcbiAgOiBzbWljIEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfdG9fanNvb1xuXG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuXG5cbmxldCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgXyA9XG4gICBKcy5leHBvcnQgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNMaWJcIlxuICAgIChvYmplY3QlanNcbiAgICAgIFxuICAgICAgbWV0aG9kIGFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4IDogKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCAtPiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbmZhbnRMZVBsdXNBZ2UgOiAoZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQgLT4gZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbmZhbnRfbGVfcGx1c19hZ2VcbiAgICAgIFxuICAgICAgbWV0aG9kIHNtaWMgOiAoc21pY19pbiBKcy50IC0+IHNtaWMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHNtaWNcbiAgICAgIFxuICAgICAgbWV0aG9kIGJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIHByZXN0YXRpb25zRmFtaWxpYWxlcyA6IChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgICBtZXRob2QgYWxsb2NhdGlvbnNGYW1pbGlhbGVzIDogKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBhbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBpbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgOiAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgIGVuZCkiLCIoKiogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBkbyBub3QgZWRpdCEgKilcblxub3BlbiBSdW50aW1lX29jYW1sLlJ1bnRpbWVcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItNC0yNi0yNy0zMi00MS00MlwiXVxuXG5tb2R1bGUgVHlwZVByZXQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRDMzMV8zMiBvZiB1bml0XG4gICAgfCBEMzMxXzYzXzY0IG9mIHVuaXRcbiAgICB8IEQzMzFfNTlfOCBvZiB1bml0XG4gICAgfCBEMzMxXzc2XzEgb2YgdW5pdFxuICAgIHwgQXV0cmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX3ByZXQgKHg6IFR5cGVQcmV0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZVByw6p0XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEQzMzFfMzIgeCAtPiAoXCJEMzMxXzMyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEQzMzFfNjNfNjQgeCAtPiAoXCJEMzMxXzYzXzY0XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEQzMzFfNTlfOCB4IC0+IChcIkQzMzFfNTlfOFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEMzMxXzc2XzEgeCAtPiAoXCJEMzMxXzc2XzFcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmUgeCAtPiAoXCJBdXRyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUaXR1bGFpcmVQcmV0ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IERlbWFuZGV1ciBvZiB1bml0XG4gICAgfCBWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdGl0dWxhaXJlX3ByZXQgKHg6IFRpdHVsYWlyZVByZXQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUaXR1bGFpcmVQcsOqdFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEZW1hbmRldXIgeCAtPiAoXCJEZW1hbmRldXJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiB4IC0+XG4gICAgICAoXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBvZiB1bml0XG4gICAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIG9mIHVuaXRcbiAgICB8IFBhc0RlVHJhdmF1eCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ICh4OiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzJfMTVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSB4IC0+XG4gICAgICAoXCJUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgeCAtPlxuICAgICAgKFwiVHJhdmF1eFN1ckxvZ2VtZW50RMOpasOgQWNxdWlzRDgzMl8xNV8yXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBhc0RlVHJhdmF1eCB4IC0+IChcIlBhc0RlVHJhdmF1eFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgb2YgdW5pdFxuICAgIHwgUHJldnVEYW5zTGlzdGVSMzIxXzE1IG9mIHVuaXRcbiAgICB8IEFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIG9mIHVuaXRcbiAgICB8IFBhc0RlVHJhdmF1eCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgKHg6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVUcmF2YXV4TG9nZW1lbnRSODQyXzVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgeCAtPiAoXCJPYmplY3RpZkTDqWNlbmNlTG9nZW1lbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUHJldnVEYW5zTGlzdGVSMzIxXzE1IHggLT4gKFwiUHLDqXZ1RGFuc0xpc3RlUjMyMV8xNVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyB4IC0+XG4gICAgICAoXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXNEZVRyYXZhdXggeCAtPiAoXCJQYXNEZVRyYXZhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQW1lbGlvcmVQYXJPY2N1cGFudCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBPdWkgb2YgdW5pdFxuICAgIHwgTm9uIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfYW1lbGlvcmVfcGFyX29jY3VwYW50ICh4OiBBbWVsaW9yZVBhck9jY3VwYW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQW3DqWxpb3LDqVBhck9jY3VwYW50XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE91aSB4IC0+IChcIk91aVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgTGltaXRlVHJhbmNoZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBSZXZlbnUgb2YgbW9uZXlcbiAgICB8IEluZmluaSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2xpbWl0ZV90cmFuY2hlICh4OiBMaW1pdGVUcmFuY2hlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTGltaXRlVHJhbmNoZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBSZXZlbnUgeCAtPiAoXCJSZXZlbnVcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IEluZmluaSB4IC0+IChcIkluZmluaVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBMaW1pdGVUcmFuY2hlRGVjaW1hbCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBSZXZlbnUgb2YgZGVjaW1hbFxuICAgIHwgSW5maW5pIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCAoeDogTGltaXRlVHJhbmNoZURlY2ltYWwudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJMaW1pdGVUcmFuY2hlRMOpY2ltYWxcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUmV2ZW51IHggLT4gKFwiUmV2ZW51XCIsIGVtYmVkX2RlY2ltYWwgeClcbiAgICB8IEluZmluaSB4IC0+IChcIkluZmluaVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uUmVjdWUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIG9mIHVuaXRcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uSmV1bmVFbmZhbnQgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJlc3RhdGlvbl9yZWN1ZSAoeDogUHJlc3RhdGlvblJlY3VlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJlc3RhdGlvblJlw6d1ZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgeCAtPiAoXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIHggLT4gKFwiQ29tcGzDqW1lbnRGYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uSmV1bmVFbmZhbnQgeCAtPiAoXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXDDqVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uQWR1bHRlSGFuZGljYXBlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFBhcmVudE91QXV0cmUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIG9mIGRlY2ltYWxcbiAgICB8IEF1dHJlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFyZW50X291X2F1dHJlICh4OiBQYXJlbnRPdUF1dHJlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGFyZW50T3VBdXRyZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgeCAtPlxuICAgICAgKFwiRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2nDqXTDqXNcIiwgZW1iZWRfZGVjaW1hbCB4KVxuICAgIHwgQXV0cmUgeCAtPiAoXCJBdXRyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBTaXR1YXRpb25HYXJkZUFsdGVybmVlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFBhc0RlR2FyZGVBbHRlcm5lZSBvZiB1bml0XG4gICAgfCBHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIG9mIGRlY2ltYWxcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlICh4OiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uR2FyZGVBbHRlcm7DqWVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGFzRGVHYXJkZUFsdGVybmVlIHggLT4gKFwiUGFzRGVHYXJkZUFsdGVybsOpZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCIsIGVtYmVkX2RlY2ltYWwgeCkpXG5cblxubW9kdWxlIFBhcmVudGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQXNjZW5kYW50IG9mIHVuaXRcbiAgICB8IERlc2NlbmRhbnQgb2YgdW5pdFxuICAgIHwgQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wYXJlbnRlICh4OiBQYXJlbnRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGFyZW50w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQXNjZW5kYW50IHggLT4gKFwiQXNjZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IERlc2NlbmRhbnQgeCAtPiAoXCJEZXNjZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlIHggLT5cbiAgICAgIChcIkNvbGxhdMOpcmFsRGV1eGnDqG1lVHJvaXNpw6htZURlZ3LDqVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEYXRlRGVOYWlzc2FuY2Ugb2YgZGF0ZVxuICAgIHwgQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBvZiB1bml0XG4gICAgfCBBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VcbiAgKHg6IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2VcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRGF0ZURlTmFpc3NhbmNlIHggLT4gKFwiRGF0ZURlTmFpc3NhbmNlXCIsIGVtYmVkX2RhdGUgeClcbiAgICB8IEF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgeCAtPlxuICAgICAgKFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzacOobWVNb2lzRGVHcm9zc2Vzc2VcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSB4IC0+XG4gICAgICAoXCJBcHLDqHNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzacOobWVNb2lzRGVHcm9zc2Vzc2VcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgWm9uZURIYWJpdGF0aW9uID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IFpvbmUxIG9mIHVuaXRcbiAgICB8IFpvbmUyIG9mIHVuaXRcbiAgICB8IFpvbmUzIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfem9uZV9kX2hhYml0YXRpb24gKHg6IFpvbmVESGFiaXRhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlpvbmVESGFiaXRhdGlvblwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBab25lMSB4IC0+IChcIlpvbmUxXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFpvbmUyIHggLT4gKFwiWm9uZTJcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgWm9uZTMgeCAtPiAoXCJab25lM1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE91aUF2ZWNMb3llck91Q2hhcmdlcyBvZiBtb25leVxuICAgIHwgTm9uIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbFxuICAoeDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgT3VpQXZlY0xveWVyT3VDaGFyZ2VzIHggLT4gKFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBOb24geCAtPiAoXCJOb25cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1ciBvZiB1bml0XG4gICAgfCBCZW5lZmljaWFpcmUgb2YgdW5pdFxuICAgIHwgRXRhYmxpc3NlbWVudEhhYmlsaXRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdmVyc2VtZW50X2EgKHg6IFZlcnNlbWVudEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJWZXJzZW1lbnTDgFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBCYWlsbGV1ciB4IC0+IChcIkJhaWxsZXVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEJlbmVmaWNpYWlyZSB4IC0+IChcIkLDqW7DqWZpY2lhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSB4IC0+IChcIsOJdGFibGlzc2VtZW50SGFiaWxpdMOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIERlcGVuc2VMb2dlbWVudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyBvZiBtb25leVxuICAgIHwgTWVuc3VhbGl0ZSBvZiBtb25leVxuICAgIHwgTG95ZXIgb2YgbW9uZXlcbiAgZW5kXG5sZXQgZW1iZWRfZGVwZW5zZV9sb2dlbWVudCAoeDogRGVwZW5zZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiRMOpcGVuc2VMb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyB4IC0+IChcIlRvdGFsQW5udWVsw4ljaMOpYW5jZXNcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IE1lbnN1YWxpdGUgeCAtPiAoXCJNZW5zdWFsaXTDqVwiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgTG95ZXIgeCAtPiAoXCJMb3llclwiLCBlbWJlZF9tb25leSB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb25JbXBheWUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgSW1wYXllTG95ZXIgb2YgdW5pdFxuICAgIHwgSW1wYXllUHJldCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUgKHg6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTW9kZU9jY3VwYXRpb25JbXBhecOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEltcGF5ZUxveWVyIHggLT4gKFwiSW1wYXnDqUxveWVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEltcGF5ZVByZXQgeCAtPiAoXCJJbXBhecOpUHLDqnRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFBhc0VsaWdpYmxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICh4OiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQYXNFbGlnaWJsZSB4IC0+IChcIlBhc8OJbGlnaWJsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ICh4OiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IHggLT5cbiAgICAgIChcIkFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkZhbWlsaWFsZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBDZWxpYmF0YWlyZSBvZiB1bml0XG4gICAgfCBNYXJpZXMgb2YgZGF0ZVxuICAgIHwgUGFjc2VzIG9mIHVuaXRcbiAgICB8IENvbmN1YmlucyBvZiB1bml0XG4gICAgfCBDZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBvZiB1bml0XG4gICAgfCBDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlICh4OiBTaXR1YXRpb25GYW1pbGlhbGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25GYW1pbGlhbGVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQ2VsaWJhdGFpcmUgeCAtPiAoXCJDw6lsaWJhdGFpcmVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTWFyaWVzIHggLT4gKFwiTWFyacOpc1wiLCBlbWJlZF9kYXRlIHgpXG4gICAgfCBQYWNzZXMgeCAtPiAoXCJQYWNzw6lzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbmN1YmlucyB4IC0+IChcIkNvbmN1Ymluc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDZWxpYmF0YWlyZVNlcGFyZURlRmFpdCB4IC0+XG4gICAgICAoXCJDw6lsaWJhdGFpcmVTw6lwYXLDqURlRmFpdFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgeCAtPlxuICAgICAgKFwiQ29uY3ViaW5hZ2VEb250U8OpcGFyw6lEZUZhaXRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJpc2VFbkNoYXJnZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgb2YgdW5pdFxuICAgIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBvZiB1bml0XG4gICAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2UgKHg6IFByaXNlRW5DaGFyZ2UudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJQcmlzZUVuQ2hhcmdlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIHggLT5cbiAgICAgIChcIlLDqXNpZGVuY2VBbHRlcm7DqWVBbGxvY2F0YWlyZVVuaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgeCAtPlxuICAgICAgKFwiUsOpc2lkZW5jZUFsdGVybsOpZUFsbG9jYXRpb25zUGFydGFnw6llXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVMb2dlbWVudEZveWVyID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IExvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIG9mIHVuaXRcbiAgICB8IFJlc2lkZW5jZVNvY2lhbGUgb2YgdW5pdFxuICAgIHwgRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgb2YgdW5pdFxuICAgIHwgQXV0cmUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyICh4OiBUeXBlTG9nZW1lbnRGb3llci50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVMb2dlbWVudEZveWVyXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIHggLT5cbiAgICAgIChcIkxvZ2VtZW50UGVyc29ubmVzw4Jnw6llc091SGFuZGljYXDDqWVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFJlc2lkZW5jZVNvY2lhbGUgeCAtPiAoXCJSw6lzaWRlbmNlU29jaWFsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSB4IC0+XG4gICAgICAoXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uw6lMMzUzXzJBdmFudDE5OTVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmUgeCAtPiAoXCJBdXRyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgb2YgdW5pdFxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBvZiB1bml0XG4gICAgfCBQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBvZiB1bml0XG4gICAgfCBBdXRyZXNQZXJzb25uZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoeDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ2F0w6lnb3JpZcOJcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgeCAtPlxuICAgICAgKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVDUk9VU1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIHggLT5cbiAgICAgIChcIsOJdHVkaWFudExvZ8OpRW5DaGFtYnJlQ1JPVVNSw6loYWJpbGl0w6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IHggLT5cbiAgICAgIChcIlBlcnNvbm5lc8OCZ8OpZXNTZWxvbjNEZUQ4NDJfMTZcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmVzUGVyc29ubmVzIHggLT4gKFwiQXV0cmVzUGVyc29ubmVzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBQZXJzb25uZVNldWxlIG9mIHVuaXRcbiAgICB8IENvdXBsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sICh4OiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGVyc29ubmVTZXVsZSB4IC0+IChcIlBlcnNvbm5lU2V1bGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ291cGxlIHggLT4gKFwiQ291cGxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlRW5mYW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlX2VuZmFudCAoeDogUHJpc2VFbkNoYXJnZUVuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByaXNlRW5DaGFyZ2VFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZVBhcnRhZ2VBbGxvY2F0aW9uc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgeCAtPlxuICAgICAgKFwiR2FyZGVBbHRlcm7DqWVBbGxvY2F0YWlyZVVuaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgeCAtPiAoXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWXDgExhRmFtaWxsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IHggLT5cbiAgICAgIChcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzw6llQXV4U2VydmljZXNTb2NpYXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBBdmFudCBvZiB1bml0XG4gICAgfCBQZW5kYW50IG9mIHVuaXRcbiAgICB8IEFwcmVzIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgKHg6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBdmFudCB4IC0+IChcIkF2YW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlbmRhbnQgeCAtPiAoXCJQZW5kYW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFwcmVzIHggLT4gKFwiQXByw6hzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgb2YgdW5pdFxuICAgIHwgQ29tcGxlbWVudEZhbWlsaWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2VsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIsOJbMOpbWVudFByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50IHggLT5cbiAgICAgIChcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIHggLT4gKFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCB4IC0+IChcIkNvbXBsw6ltZW50RmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvbkxvZ2VtZW50IHggLT4gKFwiQWxsb2NhdGlvbkxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbsOJZHVjYXRpb25FbmZhbnRIYW5kaWNhcMOpXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25SZW50csOpZVNjb2xhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Kb3VybmFsacOocmVQcmVzZW5jZVBhcmVudGFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSTogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWU6IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsICh4OiBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbFwiXSxcbiAgWyhcImNvbnZlbnRpb25uw6lfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUlcIiwgZW1iZWRfYm9vbFxuICAgIHguQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSk7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9wZXLDp3VlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlKV0pXG5cblxubW9kdWxlIENvbnZlbnRpb25BTkhBID0gc3RydWN0XG4gIHR5cGUgdCA9IHtjb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX0lJX2NoYXBfSV9zZWNfMzogYm9vbH1cbmVuZFxubGV0IGVtYmVkX2NvbnZlbnRpb25fYV9uX2hfYSAoeDogQ29udmVudGlvbkFOSEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnZlbnRpb25BTkhBXCJdLFxuICBbKFwiY29udmVudGlvbm7DqV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNvbnZlbnRpb25BTkhBLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zKV0pXG5cblxubW9kdWxlIFBlcnNvbm5lU291c0xvY2F0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uOiBkYXRlO1xuICAgIGNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24gKHg6IFBlcnNvbm5lU291c0xvY2F0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQZXJzb25uZVNvdXNMb2NhdGlvblwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cIiwgZW1iZWRfZGF0ZVxuICAgIHguUGVyc29ubmVTb3VzTG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbik7XG4gICAgKFwiY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguUGVyc29ubmVTb3VzTG9jYXRpb24uY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEpXSlcblxuXG5tb2R1bGUgUGF0cmltb2luZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQ6IG1vbmV5O1xuICAgIG5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNDogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcGF0cmltb2luZSAoeDogUGF0cmltb2luZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUGF0cmltb2luZVwiXSxcbiAgWyhcInByb2R1aXNhbnRfcmV2ZW51X3DDqXJpb2RlX3I4MjJfM18zX3I4MjJfNFwiLCBlbWJlZF9tb25leVxuICAgIHguUGF0cmltb2luZS5wcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCk7XG4gICAgKFwibmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3DDqXJpb2RlX3I4MjJfM18zX3I4MjJfNFwiLCBlbWJlZF9tb25leVxuICAgIHguUGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpXSlcblxuXG5tb2R1bGUgQ29uZGl0aW9uc0V0cmFuZ2VycyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7c2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZTogYm9vbH1cbmVuZFxubGV0IGVtYmVkX2NvbmRpdGlvbnNfZXRyYW5nZXJzICh4OiBDb25kaXRpb25zRXRyYW5nZXJzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDb25kaXRpb25zw4l0cmFuZ2Vyc1wiXSxcbiAgWyhcInNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3PDqWN1cml0w6lfc29jaWFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Db25kaXRpb25zRXRyYW5nZXJzLnNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGUpXSlcblxuXG5tb2R1bGUgUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pczogYm9vbDtcbiAgICByZXNzb3VyY2VzOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9wZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgKHg6IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llclwiXSxcbiAgWyhcImR1csOpZV9yw6lzaWRlbmNlX2R1cmFudF9ww6lyaW9kZV9yXzgyMl8zXzFfc3Vww6lyaWV1cmVfw6BfNl9tb2lzXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIuZHVyZWVfcmVzaWRlbmNlX2R1cmFudF9wZXJpb2RlX3JfODIyXzNfMV9zdXBlcmlldXJlX2FfNl9tb2lzKTtcbiAgICAoXCJyZXNzb3VyY2VzXCIsIGVtYmVkX21vbmV5XG4gICAgeC5QZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci5yZXNzb3VyY2VzKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZTogZGF0ZTtcbiAgICBlbGlnaWJpbGl0ZTogYm9vbDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGU6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgKHg6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSk7XG4gICAgKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50ICh4OiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIl0sXG4gIFsoXCJtb250YW50X3ByaW1lX2TDqW3DqW5hZ2VtZW50XCIsIGVtYmVkX21vbmV5XG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQubW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnQpXSlcblxuXG5tb2R1bGUgUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7cmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHg6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIFsoXCJyZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQucmVzc291cmNlc19wcmlzZXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXkgLT4gbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ICh4OiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSxcbiAgWyhcIm1vbnRhbnRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTY6IG1vbmV5O1xuICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yOiBtb25leTtcbiAgICBwYXJ0aWNpcGF0aW9uX21pbmltYWxlOiBtb25leTtcbiAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZTogZGVjaW1hbDtcbiAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlOiBtb25leTtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIl0sXG4gIFsoXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNlwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYpO1xuICAgIChcInBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMik7XG4gICAgKFwicGFydGljaXBhdGlvbl9taW5pbWFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSk7XG4gICAgKFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUpO1xuICAgIChcInBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgKHg6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSxcbiAgWyhcIm1vbnRhbnRcIiwgZW1iZWRfbW9uZXkgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCldKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bl9ub21icmVfcGFydHNfZDgzMl8yNTogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciAoeDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdLFxuICBbKFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1KV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNTogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcl9kODMyXzI1OiBtb25leTtcbiAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1OiBkZWNpbWFsO1xuICAgIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlOiBtb25leTtcbiAgICBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlOiBtb25leTtcbiAgICBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZTogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjU6IGRlY2ltYWw7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdLFxuICBbKFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUpO1xuICAgIChcImNvZWZmaWNpZW50X3JfZDgzMl8yNVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3JfZDgzMl8yNSk7XG4gICAgKFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlKTtcbiAgICAoXCJwbGFmb25kX8OpcXVpdmFsZW5jZV9sb3llcl/DqWxpZ2libGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlKTtcbiAgICAoXCLDqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSk7XG4gICAgKFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1KTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtuX25vbWJyZV9wYXJ0c19kODMyXzExOiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlICh4OiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXSxcbiAgWyhcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUubl9ub21icmVfcGFydHNfZDgzMl8xMSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5zdWFsaXRlX2VsaWdpYmxlOiBtb25leTtcbiAgICBtZW5zdWFsaXRlX21pbmltYWxlOiBtb25leTtcbiAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMDogZGVjaW1hbDtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0sXG4gIFsoXCJtZW5zdWFsaXTDqV/DqWxpZ2libGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZSk7XG4gICAgKFwibWVuc3VhbGl0w6lfbWluaW1hbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSk7XG4gICAgKFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMCk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlICh4OiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZVwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0sXG4gIFsoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYW5jaWVuX2xveWVyX3ByaW5jaXBhbDogbW9uZXk7XG4gICAgYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudDogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgKHg6IEluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0Ml80XCJdLFxuICBbKFwiYW5jaWVuX2xveWVyX3ByaW5jaXBhbFwiLCBlbWJlZF9tb25leVxuICAgIHguSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKTtcbiAgICAoXCJhbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50XCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0sXG4gIFsoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2U6IGRlY2ltYWw7XG4gICAgZXF1aXZhbGVuY2VfbG95ZXI6IG1vbmV5O1xuICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlczogbW9uZXk7XG4gICAgbG95ZXJfbWluaW1hbDogbW9uZXk7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiXSxcbiAgWyhcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZVwiLCBlbWJlZF9kZWNpbWFsXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcIsOpcXVpdmFsZW5jZV9sb3llclwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIpO1xuICAgIChcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzKTtcbiAgICAoXCJsb3llcl9taW5pbWFsXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5sb3llcl9taW5pbWFsKTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50ICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2FnZV9vdXZlcnR1cmVfZHJvaXQ6IGR1cmF0aW9ufVxuZW5kXG5sZXQgZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSAoeDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIk91dmVydHVyZURyb2l0c1JldHJhaXRlXCJdLFxuICBbKFwiw6JnZV9vdXZlcnR1cmVfZHJvaXRcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4Lk91dmVydHVyZURyb2l0c1JldHJhaXRlLmFnZV9vdXZlcnR1cmVfZHJvaXQpXSlcblxuXG5tb2R1bGUgSW1wYXllRGVwZW5zZUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50X2ltcGF5ZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudCAoeDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiXSxcbiAgWyhcIm1vbnRhbnRfaW1wYXnDqVwiLCBlbWJlZF9tb25leSB4LkltcGF5ZURlcGVuc2VMb2dlbWVudC5tb250YW50X2ltcGF5ZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBlbGlnaWJpbGl0ZTogYm9vbDtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leTtcbiAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlOiBkZWNpbWFsIGFycmF5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZWxpZ2liaWxpdGU6IGJvb2w7IGFpZGVfZmluYWxlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIl0sXG4gIFsoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLmVsaWdpYmlsaXRlKTtcbiAgICAoXCJhaWRlX2ZpbmFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudDogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwibW9udGFudFwiLCBlbWJlZF9tb25leSB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCldKVxuXG5cbm1vZHVsZSBTbWljID0gc3RydWN0XG4gIHR5cGUgdCA9IHticnV0X2hvcmFpcmU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfc21pYyAoeDogU21pYy50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY1wiXSxcbiAgWyhcImJydXRfaG9yYWlyZVwiLCBlbWJlZF9tb25leSB4LlNtaWMuYnJ1dF9ob3JhaXJlKV0pXG5cblxubW9kdWxlIFByZXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfcHJldDogVHlwZVByZXQudDtcbiAgICBkYXRlX3NpZ25hdHVyZTogZGF0ZTtcbiAgICB0aXR1bGFpcmVfcHJldDogVGl0dWxhaXJlUHJldC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXQgKHg6IFByZXQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlByw6p0XCJdLFxuICBbKFwidHlwZV9wcsOqdFwiLCBlbWJlZF90eXBlX3ByZXQgeC5QcmV0LnR5cGVfcHJldCk7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVcIiwgZW1iZWRfZGF0ZSB4LlByZXQuZGF0ZV9zaWduYXR1cmUpO1xuICAgIChcInRpdHVsYWlyZV9wcsOqdFwiLCBlbWJlZF90aXR1bGFpcmVfcHJldCB4LlByZXQudGl0dWxhaXJlX3ByZXQpXSlcblxuXG5tb2R1bGUgTmV1Zk91QW5jaWVuID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5ldWYgb2YgdW5pdFxuICAgIHwgQW5jaWVuIG9mIEFtZWxpb3JlUGFyT2NjdXBhbnQudFxuICBlbmRcbmxldCBlbWJlZF9uZXVmX291X2FuY2llbiAoeDogTmV1Zk91QW5jaWVuLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTmV1Zk91QW5jaWVuXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE5ldWYgeCAtPiAoXCJOZXVmXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFuY2llbiB4IC0+IChcIkFuY2llblwiLCBlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQgeCkpXG5cblxubW9kdWxlIFRyYW5jaGVSZXZlbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2hhdXQ6IExpbWl0ZVRyYW5jaGUudDsgYmFzOiBtb25leTsgdGF1eDogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX3RyYW5jaGVfcmV2ZW51ICh4OiBUcmFuY2hlUmV2ZW51LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJUcmFuY2hlUmV2ZW51XCJdLFxuICBbKFwiaGF1dFwiLCBlbWJlZF9saW1pdGVfdHJhbmNoZSB4LlRyYW5jaGVSZXZlbnUuaGF1dCk7XG4gICAgKFwiYmFzXCIsIGVtYmVkX21vbmV5IHguVHJhbmNoZVJldmVudS5iYXMpO1xuICAgIChcInRhdXhcIiwgZW1iZWRfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnUudGF1eCldKVxuXG5cbm1vZHVsZSBUcmFuY2hlUmV2ZW51RGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aGF1dDogTGltaXRlVHJhbmNoZURlY2ltYWwudDsgYmFzOiBkZWNpbWFsOyB0YXV4OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCAoeDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYW5jaGVSZXZlbnVEw6ljaW1hbFwiXSxcbiAgWyhcImhhdXRcIiwgZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpO1xuICAgIChcImJhc1wiLCBlbWJlZF9kZWNpbWFsIHguVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKTtcbiAgICAoXCJ0YXV4XCIsIGVtYmVkX2RlY2ltYWwgeC5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KV0pXG5cblxubW9kdWxlIEF1dHJlUGVyc29ubmVBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZXNzb3VyY2VzOiBtb25leTtcbiAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZTogYm9vbDtcbiAgICBwYXJlbnRlOiBQYXJlbnRlLnQ7XG4gICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2k6IGJvb2w7XG4gICAgYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1OiBib29sO1xuICAgIHRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgKHg6IEF1dHJlUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSk7XG4gICAgKFwicmVzc291cmNlc1wiLCBlbWJlZF9tb25leVxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UucmVzc291cmNlcyk7XG4gICAgKFwiYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0w6lyYWxfZGV1eGnDqG1lX3Ryb2lzacOobWVfZGVncsOpXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpO1xuICAgIChcInBhcmVudMOpXCIsIGVtYmVkX3BhcmVudGVcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnBhcmVudGUpO1xuICAgIChcImluY2FwYWNpdMOpXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVwiLCBlbWJlZF9ib29sXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSk7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3PDqWN1XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSk7XG4gICAgKFwidGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfw6Jnw6llXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXSlcblxuXG5tb2R1bGUgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyBvZiB1bml0XG4gICAgfCBQbHVzRGVUcm9pc0VuZmFudHMgb2YgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudFxuICBlbmRcbmxldCBlbWJlZF9kYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudFxuICAoeDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEYXRlTmFpc3NhbmNlVHJvaXNpw6htZU91RGVybmllclBsdXNFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyB4IC0+IChcIk1vaW5zRGVUcm9pc0VuZmFudHNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGx1c0RlVHJvaXNFbmZhbnRzIHggLT5cbiAgICAgIChcIlBsdXNEZVRyb2lzRW5mYW50c1wiLCBlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSB4KSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGVsaWdpYmlsaXRlOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGU6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50ICh4OiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgWyhcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5lbGlnaWJpbGl0ZSk7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUpO1xuICAgIChcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIExvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfdXNlcjogVHlwZUxvZ2VtZW50Rm95ZXIudDtcbiAgICByZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMTogYm9vbDtcbiAgICBjb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUk6IGJvb2w7XG4gICAgZGF0ZV9jb252ZW50aW9ubmVtZW50OiBkYXRlO1xuICAgIGNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUk6IGJvb2w7XG4gICAgcmVkZXZhbmNlOiBtb25leTtcbiAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNjpcbiAgICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2xvZ2VtZW50X2ZveWVyICh4OiBMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJMb2dlbWVudEZveWVyXCJdLFxuICBbKFwidHlwZVwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5Mb2dlbWVudEZveWVyLnR5cGVfdXNlcik7XG4gICAgKFwicmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSk7XG4gICAgKFwiY29udmVudGlvbm7DqV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSk7XG4gICAgKFwiZGF0ZV9jb252ZW50aW9ubmVtZW50XCIsIGVtYmVkX2RhdGVcbiAgICB4LkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KTtcbiAgICAoXCJjb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSk7XG4gICAgKFwicmVkZXZhbmNlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Mb2dlbWVudEZveWVyLnJlZGV2YW5jZSk7XG4gICAgKFwiY2F0w6lnb3JpZV/DqXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNlwiLFxuICAgIGVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5Mb2dlbWVudEZveWVyLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2KV0pXG5cblxubW9kdWxlIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgb2JsaWdhdGlvbl9zY29sYWlyZTogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQ7XG4gICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZTogbW9uZXk7XG4gICAgZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgcHJpc2VfZW5fY2hhcmdlOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQ7XG4gICAgYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBiZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQ6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50KTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcInByaXNlX2VuX2NoYXJnZVwiLCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2VfZW5mYW50XG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgRW5mYW50QUNoYXJnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgaWRlbnRpZmlhbnQ6IGludGVnZXI7XG4gICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50OiBib29sO1xuICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2w7XG4gICAgZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZTogbW9uZXk7XG4gICAgb2JsaWdhdGlvbl9zY29sYWlyZTogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQ7XG4gICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2FfY2hhcmdlICh4OiBFbmZhbnRBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnTDgENoYXJnZVwiXSxcbiAgWyhcImlkZW50aWZpYW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgIChcImLDqW7DqWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KTtcbiAgICAoXCJhX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCJyw6ltdW5lcmF0aW9uX21lbnN1ZWxsZVwiLCBlbWJlZF9tb25leVxuICAgIHguRW5mYW50QUNoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgIChcInNpdHVhdGlvbl9nYXJkZV9hbHRlcm7DqWVcIiwgZW1iZWRfc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlXG4gICAgeC5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSldKVxuXG5cbm1vZHVsZSBUeXBlQmFpbGxldXIgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQmFpbGxldXJTb2NpYWwgb2YgQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnRcbiAgICB8IEJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCBvZiBDb252ZW50aW9uQU5IQS50XG4gICAgfCBCYWlsbGV1clByaXZlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9iYWlsbGV1ciAoeDogVHlwZUJhaWxsZXVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUJhaWxsZXVyXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEJhaWxsZXVyU29jaWFsIHggLT5cbiAgICAgIChcIkJhaWxsZXVyU29jaWFsXCIsIGVtYmVkX2NvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIHgpXG4gICAgfCBCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgeCAtPlxuICAgICAgKFwiQmFpbGxldXJQcml2w6lBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbFwiLCBlbWJlZF9jb252ZW50aW9uX2Ffbl9oX2EgeClcbiAgICB8IEJhaWxsZXVyUHJpdmUgeCAtPiAoXCJCYWlsbGV1clByaXbDqVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycyA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBOb24gb2YgdW5pdFxuICAgIHwgT3VpIG9mIFBlcnNvbm5lU291c0xvY2F0aW9uLnRcbiAgZW5kXG5sZXQgZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgKHg6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTG91w6lPdVNvdXNMb3XDqcOARGVzVGllcnNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uIHggLT4gKFwiTm9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE91aSB4IC0+IChcIk91aVwiLCBlbWJlZF9wZXJzb25uZV9zb3VzX2xvY2F0aW9uIHgpKVxuXG5cbm1vZHVsZSBOYXRpb25hbGl0ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBGcmFuY2Fpc2Ugb2YgdW5pdFxuICAgIHwgRXRyYW5nZXJlIG9mIENvbmRpdGlvbnNFdHJhbmdlcnMudFxuICBlbmRcbmxldCBlbWJlZF9uYXRpb25hbGl0ZSAoeDogTmF0aW9uYWxpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJOYXRpb25hbGl0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRnJhbmNhaXNlIHggLT4gKFwiRnJhbsOnYWlzZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFdHJhbmdlcmUgeCAtPiAoXCLDiXRyYW5nw6hyZVwiLCBlbWJlZF9jb25kaXRpb25zX2V0cmFuZ2VycyB4KSlcblxuXG5tb2R1bGUgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQ2hhbmdlbWVudCBvZiBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgICB8IFBhc0RlQ2hhbmdlbWVudCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80ICh4OiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNoYW5nZW1lbnRMb2dlbWVudEQ4NDJfNFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDaGFuZ2VtZW50IHggLT5cbiAgICAgIChcIkNoYW5nZW1lbnRcIiwgZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgeClcbiAgICB8IFBhc0RlQ2hhbmdlbWVudCB4IC0+IChcIlBhc0RlQ2hhbmdlbWVudFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQcm9wcmlldGFpcmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMjogYm9vbDtcbiAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGU6IG1vbmV5O1xuICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0OiBtb25leTtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudDogZGF0ZTtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNTogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50O1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzU6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50O1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZTogYm9vbDtcbiAgICBjb3Byb3ByaWV0ZTogYm9vbDtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xNzogYm9vbDtcbiAgICBhbmNpZW5uZXRlX2xvZ2VtZW50OiBOZXVmT3VBbmNpZW4udDtcbiAgICBwcmV0OiBQcmV0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcHJvcHJpZXRhaXJlICh4OiBQcm9wcmlldGFpcmUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlByb3ByacOpdGFpcmVcIl0sXG4gIFsoXCJsb2dlbWVudF9zaXR1w6lfY29tbXVuZV9kw6lzw6lxdWlsaWJyZV9sODMxXzJcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJvcHJpZXRhaXJlLmxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMik7XG4gICAgKFwibWVuc3VhbGl0w6lfcHJpbmNpcGFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguUHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSk7XG4gICAgKFwiY2hhcmdlc19tZW5zdWVsbGVzX3Byw6p0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5Qcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQpO1xuICAgIChcImRhdGVfZW50csOpZV9sb2dlbWVudFwiLCBlbWJlZF9kYXRlXG4gICAgeC5Qcm9wcmlldGFpcmUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgeC5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVcIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVxuICAgIHguUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSk7XG4gICAgKFwiY29wcm9wcmnDqXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUuY29wcm9wcmlldGUpO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3XCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNyk7XG4gICAgKFwiYW5jaWVubmV0w6lfbG9nZW1lbnRcIiwgZW1iZWRfbmV1Zl9vdV9hbmNpZW5cbiAgICB4LlByb3ByaWV0YWlyZS5hbmNpZW5uZXRlX2xvZ2VtZW50KTtcbiAgICAoXCJwcsOqdFwiLCBlbWJlZF9wcmV0IHguUHJvcHJpZXRhaXJlLnByZXQpXSlcblxuXG5tb2R1bGUgSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlOiBpbnRlZ2VyO1xuICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzOlxuICAgICAgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudFxuICB9XG5lbmRcbmxldCBlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50ICh4OiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbmZvcm1hdGlvbnNQcmltZURlRMOpbcOpbmFnZW1lbnRcIl0sXG4gIFsoXCJub21icmVfZW5mYW50c1/DoF9uYcOudHJlX2FwcsOoc190cm9pc2nDqG1lX21vaXNfZ3Jvc3Nlc3NlXCIsXG4gICAgZW1iZWRfaW50ZWdlclxuICAgIHguSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2UpO1xuICAgIChcImRhdGVfbmFpc3NhbmNlX3Ryb2lzacOobWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1c1wiLFxuICAgIGVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50XG4gICAgeC5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkcm9pdF9vdXZlcnQ6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50IC0+IGJvb2w7XG4gICAgY29uZGl0aW9uc19ob3JzX2FnZTogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbDtcbiAgICBhZ2VfbDUxMl8zXzI6IGR1cmF0aW9uO1xuICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiZHJvaXRfb3V2ZXJ0XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0KTtcbiAgICAoXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UpO1xuICAgIChcIsOiZ2VfbDUxMl8zXzJcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMik7XG4gICAgKFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xKV0pXG5cblxubW9kdWxlIFBlcnNvbm5lQUNoYXJnZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBFbmZhbnRBQ2hhcmdlIG9mIEVuZmFudEFDaGFyZ2UudFxuICAgIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2Ugb2YgQXV0cmVQZXJzb25uZUFDaGFyZ2UudFxuICBlbmRcbmxldCBlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSAoeDogUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUGVyc29ubmXDgENoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBFbmZhbnRBQ2hhcmdlIHggLT4gKFwiRW5mYW50w4BDaGFyZ2VcIiwgZW1iZWRfZW5mYW50X2FfY2hhcmdlIHgpXG4gICAgfCBBdXRyZVBlcnNvbm5lQUNoYXJnZSB4IC0+XG4gICAgICAoXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIiwgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgeCkpXG5cblxubW9kdWxlIERlbWFuZGV1ciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgbmF0aW9uYWxpdGU6IE5hdGlvbmFsaXRlLnQ7XG4gICAgcGF0cmltb2luZTogUGF0cmltb2luZS50O1xuICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZGVtYW5kZXVyICh4OiBEZW1hbmRldXIudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIkRlbWFuZGV1clwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGUgeC5EZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2UpO1xuICAgIChcIm5hdGlvbmFsaXTDqVwiLCBlbWJlZF9uYXRpb25hbGl0ZVxuICAgIHguRGVtYW5kZXVyLm5hdGlvbmFsaXRlKTtcbiAgICAoXCJwYXRyaW1vaW5lXCIsIGVtYmVkX3BhdHJpbW9pbmVcbiAgICB4LkRlbWFuZGV1ci5wYXRyaW1vaW5lKTtcbiAgICAoXCJwZXJzb25uZV9ow6liZXJnw6llX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3PDqWN1cml0w6lfc29jaWFsZVwiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LkRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlKV0pXG5cblxubW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBiYWlsbGV1cjogVHlwZUJhaWxsZXVyLnQ7XG4gICAgbG95ZXJfcHJpbmNpcGFsOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXM6IGJvb2w7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmU6IGJvb2w7XG4gICAgY29sb2NhdGlvbjogYm9vbDtcbiAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyczogYm9vbDtcbiAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yOiBib29sO1xuICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80OiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2xvY2F0aW9uICh4OiBMb2NhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiTG9jYXRpb25cIl0sXG4gIFsoXCJiYWlsbGV1clwiLCBlbWJlZF90eXBlX2JhaWxsZXVyIHguTG9jYXRpb24uYmFpbGxldXIpO1xuICAgIChcImxveWVyX3ByaW5jaXBhbFwiLCBlbWJlZF9tb25leVxuICAgIHguTG9jYXRpb24ubG95ZXJfcHJpbmNpcGFsKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5sb2dlbWVudF9lc3RfY2hhbWJyZSk7XG4gICAgKFwiY29sb2NhdGlvblwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5jb2xvY2F0aW9uKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMpO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpO1xuICAgIChcImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XCIsIGVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XG4gICAgeC5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZTogZGF0ZTtcbiAgICBlbGlnaWJpbGl0ZTogYm9vbDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGU6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheTtcbiAgICBjb25kaXRpb25fMl9yODIzXzQ6IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHg6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlKTtcbiAgICAoXCLDqWxpZ2liaWxpdMOpXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUpO1xuICAgIChcImNvbmRpdGlvbl8yX3I4MjNfNFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCldKVxuXG5cbm1vZHVsZSBDYXRlZ29yaWVDYWxjdWxBUEwgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9jYXRpb24gb2YgTG9jYXRpb24udFxuICAgIHwgQWNjZXNzaW9uUHJvcHJpZXRlIG9mIFByb3ByaWV0YWlyZS50XG4gICAgfCBMb2dlbWVudEZveWVyIG9mIExvZ2VtZW50Rm95ZXIudFxuICBlbmRcbmxldCBlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sICh4OiBDYXRlZ29yaWVDYWxjdWxBUEwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDYXTDqWdvcmllQ2FsY3VsQVBMXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvY2F0aW9uIHggLT4gKFwiTG9jYXRpb25cIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZSB4IC0+IChcIkFjY2Vzc2lvblByb3ByacOpdMOpXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KVxuICAgIHwgTG9nZW1lbnRGb3llciB4IC0+IChcIkxvZ2VtZW50Rm95ZXJcIiwgZW1iZWRfbG9nZW1lbnRfZm95ZXIgeCkpXG5cblxubW9kdWxlIE1vZGVPY2N1cGF0aW9uID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IExvY2F0YWlyZSBvZiBMb2NhdGlvbi50XG4gICAgfCBSZXNpZGVudExvZ2VtZW50Rm95ZXIgb2YgTG9nZW1lbnRGb3llci50XG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIG9mIFByb3ByaWV0YWlyZS50XG4gICAgfCBTb3VzTG9jYXRhaXJlIG9mIExvY2F0aW9uLnRcbiAgICB8IExvY2F0aW9uQWNjZXNzaW9uIG9mIFByb3ByaWV0YWlyZS50XG4gIGVuZFxubGV0IGVtYmVkX21vZGVfb2NjdXBhdGlvbiAoeDogTW9kZU9jY3VwYXRpb24udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJNb2RlT2NjdXBhdGlvblwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMb2NhdGFpcmUgeCAtPiAoXCJMb2NhdGFpcmVcIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciB4IC0+XG4gICAgICAoXCJSw6lzaWRlbnRMb2dlbWVudEZveWVyXCIsIGVtYmVkX2xvZ2VtZW50X2ZveWVyIHgpXG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHggLT5cbiAgICAgIChcIkFjY2Vzc2lvblByb3ByacOpdMOpTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiLCBlbWJlZF9wcm9wcmlldGFpcmUgeClcbiAgICB8IFNvdXNMb2NhdGFpcmUgeCAtPiAoXCJTb3VzTG9jYXRhaXJlXCIsIGVtYmVkX2xvY2F0aW9uIHgpXG4gICAgfCBMb2NhdGlvbkFjY2Vzc2lvbiB4IC0+IChcIkxvY2F0aW9uQWNjZXNzaW9uXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KSlcblxuXG5tb2R1bGUgTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlOiBib29sO1xuICAgIGVzdF9laHBhZF9vdV9tYWlzb25fYXV0b25vbWllX2wzMTNfMTJfYXNmOiBib29sO1xuICAgIG1vZGVfb2NjdXBhdGlvbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICBwcm9wcmlldGFpcmU6IFBhcmVudE91QXV0cmUudDtcbiAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyczogTG91ZU91U291c0xvdWVBRGVzVGllcnMudDtcbiAgICB1c3VmcnVpdDogUGFyZW50T3VBdXRyZS50O1xuICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyOiBib29sO1xuICAgIHN1cmZhY2VfbV9jYXJyZXM6IGludGVnZXI7XG4gICAgem9uZTogWm9uZURIYWJpdGF0aW9uLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnQgKHg6IExvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2dlbWVudFwiXSxcbiAgWyhcInLDqXNpZGVuY2VfcHJpbmNpcGFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5yZXNpZGVuY2VfcHJpbmNpcGFsZSk7XG4gICAgKFwiZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2ZcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnQuZXN0X2VocGFkX291X21haXNvbl9hdXRvbm9taWVfbDMxM18xMl9hc2YpO1xuICAgIChcIm1vZGVfb2NjdXBhdGlvblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbik7XG4gICAgKFwicHJvcHJpw6l0YWlyZVwiLCBlbWJlZF9wYXJlbnRfb3VfYXV0cmVcbiAgICB4LkxvZ2VtZW50LnByb3ByaWV0YWlyZSk7XG4gICAgKFwibG91w6lfb3Vfc291c19sb3XDqV/DoF9kZXNfdGllcnNcIiwgZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNcbiAgICB4LkxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzKTtcbiAgICAoXCJ1c3VmcnVpdFwiLCBlbWJlZF9wYXJlbnRfb3VfYXV0cmVcbiAgICB4LkxvZ2VtZW50LnVzdWZydWl0KTtcbiAgICAoXCJsb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2Mik7XG4gICAgKFwic3VyZmFjZV9tX2NhcnLDqXNcIiwgZW1iZWRfaW50ZWdlciB4LkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpO1xuICAgIChcInpvbmVcIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb24geC5Mb2dlbWVudC56b25lKV0pXG5cblxubW9kdWxlIE1lbmFnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcHJlc3RhdGlvbnNfcmVjdWVzOiBQcmVzdGF0aW9uUmVjdWUudCBhcnJheTtcbiAgICBsb2dlbWVudDogTG9nZW1lbnQudDtcbiAgICBwZXJzb25uZXNfYV9jaGFyZ2U6IFBlcnNvbm5lQUNoYXJnZS50IGFycmF5O1xuICAgIG5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50OiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGU6IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIGNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaTogYm9vbDtcbiAgICBlbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX21lbmFnZSAoeDogTWVuYWdlLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJNw6luYWdlXCJdLFxuICBbKFwicHJlc3RhdGlvbnNfcmXDp3Vlc1wiLCBlbWJlZF9hcnJheSAoZW1iZWRfcHJlc3RhdGlvbl9yZWN1ZSlcbiAgICB4Lk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpO1xuICAgIChcImxvZ2VtZW50XCIsIGVtYmVkX2xvZ2VtZW50IHguTWVuYWdlLmxvZ2VtZW50KTtcbiAgICAoXCJwZXJzb25uZXNfw6BfY2hhcmdlXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICB4Lk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpO1xuICAgIChcIm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4Lk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCk7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZVwiLCBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlXG4gICAgeC5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSk7XG4gICAgKFwiY29uZGl0aW9uX3JhdHRhY2jDqV9mb3llcl9maXNjYWxfcGFyZW50X2lmaVwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpKTtcbiAgICAoXCJlbmZhbnRfw6BfbmHDrnRyZV9hcHLDqHNfcXVhdHJpw6htZV9tb2lzX2dyb3NzZXNzZVwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSldKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW46IHVuaXQgLT4gYm9vbDtcbiAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbjogdW5pdCAtPiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luICh4OiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcImNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbik7XG4gICAgKFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiYsOpbsOpZmljaWVfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudF9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGluZm9ybWF0aW9uc19pbjogSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC50O1xuICAgIGRhdGVfZW1tZW5hZ2VtZW50X2luOiBkYXRlO1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luICh4OiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudF9pblwiXSxcbiAgWyhcImluZm9ybWF0aW9uc19pblwiLCBlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5pbmZvcm1hdGlvbnNfaW4pO1xuICAgIChcImRhdGVfZW1tw6luYWdlbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2VtbWVuYWdlbWVudF9pbik7XG4gICAgKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcImTDqXBlbnNlc19qdXN0aWZpw6llc19yw6llbGxlbWVudF9lbmdhZ8OpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19pbildKVxuXG5cbm1vZHVsZSBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc3NvdXJjZXNfZGVtYW5kZXVyX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX2NvbmpvaW50X2luOiBtb25leTtcbiAgICBwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luOlxuICAgICAgUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCBhcnJheTtcbiAgICBkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbjogYm9vbDtcbiAgICBjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luOiBib29sO1xuICAgIHBlcnNvbm5lc19hX2NoYXJnZV9pbjogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXk7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbjogU2l0dWF0aW9uRmFtaWxpYWxlLnQ7XG4gICAgbW9kZV9vY2N1cGF0aW9uX2luOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIGNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfaW46IGJvb2w7XG4gICAgZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW46IGJvb2w7XG4gICAgZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luOiBkYXRlO1xuICAgIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW46XG4gICAgICBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQ7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX3Jlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gKHg6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudF9pblwiXSxcbiAgWyhcInJlc3NvdXJjZXNfZGVtYW5kZXVyX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19kZW1hbmRldXJfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfY29uam9pbnRfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX2NvbmpvaW50X2luKTtcbiAgICAoXCJwZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luXCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX3BlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcilcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luKTtcbiAgICAoXCJkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXTDqV9yw6ltdW7DqXLDqWVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luKTtcbiAgICAoXCJjb25qb2ludF9leGVyY2VfYWN0aXZpdMOpX3LDqW11bsOpcsOpZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbik7XG4gICAgKFwicGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luKTtcbiAgICAoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luKTtcbiAgICAoXCJjb25kaXRpb25fw6JnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cMOpcmlldXJfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9hZ2VfYm91cnNlX2Vuc2VpZ25lbWVudF9zdXBlcmlldXJfaW4pO1xuICAgIChcImRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfw6l0dWRlc19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW4pO1xuICAgIChcImRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luKTtcbiAgICAoXCJwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luXCIsXG4gICAgZW1iZWRfcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbFxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfYmFzZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luKV0pXG5cblxubW9kdWxlIENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiAoeDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudF9pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfYmFzZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW46IGJvb2w7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW46IGJvb2w7XG4gICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW46IGJvb2w7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQ7XG4gICAgY29sb2NhdGlvbl9pbjogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbjogbW9uZXk7XG4gICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZl9pblwiXSxcbiAgWyhcImxveWVyX3ByaW5jaXBhbF9iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbik7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbik7XG4gICAgKFwibG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbik7XG4gICAgKFwiw6Jnw6llc19vdV9oYW5kaWNhcF9hZHVsdGVzX2jDqWJlcmfDqWVzX29uw6lyZXV4X3BhcnRpY3VsaWVyc19pblwiLFxuICAgIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbik7XG4gICAgKFwiY29sb2NhdGlvbl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4pO1xuICAgIChcInLDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4pO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW46IGJvb2w7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbjogZGVjaW1hbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gKHg6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlX2luXCJdLFxuICBbKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luKTtcbiAgICAoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiBib29sO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwiY29uZGl0aW9uXzJfZHVfODMyXzI1X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbjogVHlwZUxvZ2VtZW50Rm95ZXIudDtcbiAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW46IGRhdGU7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZWRldmFuY2VfaW46IG1vbmV5O1xuICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbjogdW5pdCAtPiBib29sO1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW46IHVuaXQgLT4gZGVjaW1hbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llcl9pblwiXSxcbiAgWyhcInR5cGVfbG9nZW1lbnRfZm95ZXJfaW5cIiwgZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llclxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbik7XG4gICAgKFwiZGF0ZV9jb252ZW50aW9ubmVtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlZGV2YW5jZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luKTtcbiAgICAoXCJjb25kaXRpb25fMl9kdV84MzJfMjVfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luKV0pXG5cblxubW9kdWxlIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gKHg6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQ7XG4gICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbjogZGF0ZTtcbiAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW46IGJvb2w7XG4gICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW46IGRhdGU7XG4gICAgY29wcm9wcmlldGVfaW46IGJvb2w7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW46IGJvb2w7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgdHlwZV9wcmV0X2luOiBUeXBlUHJldC50O1xuICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfaW46IE5ldWZPdUFuY2llbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGVcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbik7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVfcHLDqnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4pO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbik7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbik7XG4gICAgKFwiY29wcm9wcmnDqXTDqV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4pO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4pO1xuICAgIChcInR5cGVfcHLDqnRfaW5cIiwgZW1iZWRfdHlwZV9wcmV0XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luKTtcbiAgICAoXCJhbmNpZW5uZXTDqV9sb2dlbWVudF9pblwiLCBlbWJlZF9uZXVmX291X2FuY2llblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQ7XG4gICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGVcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luOiBib29sO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luOiBib29sO1xuICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luOiBib29sO1xuICAgIHR5cGVfYWlkZV9pbjogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50O1xuICAgIGNvbG9jYXRpb25faW46IGJvb2w7XG4gICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW46IG1vbmV5O1xuICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW46IGJvb2w7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW46IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbik7XG4gICAgKFwibG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luKTtcbiAgICAoXCJ0eXBlX2FpZGVfaW5cIiwgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbik7XG4gICAgKFwiY29sb2NhdGlvbl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luKTtcbiAgICAoXCJsb2dlbWVudF9tZXVibMOpX2Q4NDJfMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbik7XG4gICAgKFwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW5cIiwgZW1iZWRfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbjogbW9uZXk7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW46IGJvb2w7XG4gICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbjogZGF0ZTtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW46IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50O1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbjogYm9vbDtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbjogZGF0ZTtcbiAgICBjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbjogbW9uZXk7XG4gICAgY29wcm9wcmlldGVfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpX2luXCJdLFxuICBbKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19iYXNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4pO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luKTtcbiAgICAoXCJkYXRlX3NpZ25hdHVyZV9wcsOqdF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luKTtcbiAgICAoXCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW5cIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luKTtcbiAgICAoXCJsb2NhbF9oYWJpdMOpX3ByZW1pw6hyZV9mb2lzX2LDqW7DqWZpY2lhaXJlX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbik7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luKTtcbiAgICAoXCJjaGFyZ2VzX21lbnN1ZWxsZXNfcHLDqnRfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luKTtcbiAgICAoXCJjb3Byb3ByacOpdMOpX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfaW46IFR5cGVMb2dlbWVudEZveWVyLnQ7XG4gICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luOiBkYXRlO1xuICAgIHJlZGV2YW5jZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbjpcbiAgICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llcl9pblwiXSxcbiAgWyhcInR5cGVfbG9nZW1lbnRfZm95ZXJfaW5cIiwgZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4pO1xuICAgIChcInJlZGV2YW5jZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY2F0w6lnb3JpZV/DqXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pblwiLFxuICAgIGVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luOiBtb25leTtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2luOiBTaXR1YXRpb25GYW1pbGlhbGUudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtb2RlX29jY3VwYXRpb25faW5cIiwgZW1iZWRfbW9kZV9vY2N1cGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9zYW5zX2Fycm9uZGlfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9pblwiLCBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4pXSlcblxuXG5tb2R1bGUgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiAoeDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVfaW5cIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZV9hc3N1csOpX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4Lk91dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luKV0pXG5cblxubW9kdWxlIEltcGF5ZURlcGVuc2VMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtb2RlX29jY3VwYXRpb25faW46IE1vZGVPY2N1cGF0aW9uLnQ7XG4gICAgYWlkZV92ZXJzZWVfaW46IFZlcnNlbWVudEEudDtcbiAgICBtb250YW50X2FwbF9pbjogbW9uZXk7XG4gICAgbW9udGFudF9jaGFyZ2VzX2luOiBtb25leTtcbiAgICBkZXBlbnNlX2xvZ2VtZW50X2luOiBEZXBlbnNlTG9nZW1lbnQudDtcbiAgICBtb250YW50X2RldHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiAoeDogSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50X2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luKTtcbiAgICAoXCJhaWRlX3ZlcnPDqWVfaW5cIiwgZW1iZWRfdmVyc2VtZW50X2FcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLmFpZGVfdmVyc2VlX2luKTtcbiAgICAoXCJtb250YW50X2FwbF9pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9hcGxfaW4pO1xuICAgIChcIm1vbnRhbnRfY2hhcmdlc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9jaGFyZ2VzX2luKTtcbiAgICAoXCJkw6lwZW5zZV9sb2dlbWVudF9pblwiLCBlbWJlZF9kZXBlbnNlX2xvZ2VtZW50XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5kZXBlbnNlX2xvZ2VtZW50X2luKTtcbiAgICAoXCJtb250YW50X2RldHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5tb250YW50X2RldHRlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50X2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5tZW5hZ2VfaW4pO1xuICAgIChcImRlbWFuZGV1cl9pblwiLCBlbWJlZF9kZW1hbmRldXJcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX3ByaXNlc19lbl9jb21wdGVfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbildKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIFNtaWNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTsgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudH1cbmVuZFxubGV0IGVtYmVkX3NtaWNfaW4gKHg6IFNtaWNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguU21pY0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlIHguU21pY0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHByZXN0YXRpb25fY291cmFudGVfaW46IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudDtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicHJlc3RhdGlvbl9jb3VyYW50ZV9pblwiLCBlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luKV0pXG5cblxuXG5cbmxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBleG9uZXJlX2NzZ186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJleG9uw6lyw6lfY3NnXCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE5OyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MTk7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzc7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDEzNi0xLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IERlIGxhIGNvbnRyaWJ1dGlvbiBzb2NpYWxlIHN1ciBsZXMgcmV2ZW51cyBkJ2FjdGl2aXTDqSBldCBzdXIgbGVzIHJldmVudXMgZGUgcmVtcGxhY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA2IDogQ29udHJpYnV0aW9uIHNvY2lhbGUgZ8OpbsOpcmFsaXPDqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUxOTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUxOTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2NyZHNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwidGF1eF9jcmRzXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkxOyBzdGFydF9jb2x1bW49Mzk7IGVuZF9saW5lPTE5MTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk9yZG9ubmFuY2UgbsKwIDk2LTUwIGR1IDI0IGphbnZpZXIgMTk5NiByZWxhdGl2ZSBhdSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTE4OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MjE7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEZXMgY29udHJpYnV0aW9ucyBwb3VyIGxlIHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZS5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk9yZG9ubmFuY2UgbsKwIDk2LTUwIGR1IDI0IGphbnZpZXIgMTk5NiByZWxhdGl2ZSBhdSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICg5KSAoMSkpKSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG9fbXVsdF9tb25fcmF0IGFpZGVfZmluYWxlXyB0YXV4X2NyZHNfKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTUyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MjE7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTIxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUyMTsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKHRyeSBleG9uZXJlX2NzZ18gd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiT3Jkb25uYW5jZSBuwrAgOTYtNTAgZHUgMjQgamFudmllciAxOTk2IHJlbGF0aXZlIGF1IHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZVwiXX0pIGluXG4gIHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCA9IG1vbnRhbnRffVxuXG5sZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW46IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQpIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPVxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjg1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2ODU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgY29uZGl0aW9uXzJfZHVfODMyXzI1XyB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjMyXCIpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1NTdcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl86IFRyYW5jaGVSZXZlbnUudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjsgXCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX3RyYW5jaGVfcmV2ZW51KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01OTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01OTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjUwOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgW3woe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQyMzAzXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzYxXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDIzMDNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI0XCIpfSk7XG4gICAgICAgICAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2Mjk4NVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzYxXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIwOFwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk1MDVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2Mjk4NVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMzJcIil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9IChMaW1pdGVUcmFuY2hlLkluZmluaSAoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5NTA1XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyOFwiKX0pfF0pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2MDE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBbfCh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODEwXCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA0XCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3ODcxXCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDgxMFwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTA0XCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg5NjE4XCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Nzg3MVwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjE2XCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM1NzQ0XCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4OTYxOFwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjY0XCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzMTI5XCIpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzNTc0NFwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzJcIil9KTtcbiAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPSAoTGltaXRlVHJhbmNoZS5JbmZpbmkgKCkpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzMTI5XCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40OFwiKX0pfF0pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01OTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aXBsaWVlc186IFRyYW5jaGVSZXZlbnVEZWNpbWFsLnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7XG4gICAgICBcInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aXBsacOpZXNcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5MzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDAzODsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tYXBcbiAgICAgICAgICAgICAgKGZ1biAodHJhbmNoZV86IFRyYW5jaGVSZXZlbnUudCkgLT5cbiAgICAgICAgICAgICAgICAge1RyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnUuaGF1dClcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZS5SZXZlbnUgdHJhbmNoZV9oYXV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlRGVjaW1hbC5SZXZlbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgKG9fdG9yYXRfbW9uIHRyYW5jaGVfaGF1dF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlLkluZmluaSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSAoKSkpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMgPVxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiAodHJhbmNoZV8uVHJhbmNoZVJldmVudS5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCA9ICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LnRhdXgpfSlcbiAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU5MzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcIm1vbnRhbnRcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTk3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU5NzsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5NzsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA4OTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXyA6IGRlY2ltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKG9fdG9tb25leV9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBkZWNpbWFsKSAoc3VtMl86IGRlY2ltYWwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgc3VtMV8gc3VtMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuICh0cmFuY2hlXzogVHJhbmNoZVJldmVudURlY2ltYWwudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlRGVjaW1hbC5SZXZlbnUgdHJhbmNoZV9oYXV0XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVfaGF1dF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVfaGF1dF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGllZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDA1MTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIDogZGVjaW1hbCA9XG4gICAgICAgICAgICAgICAob190b3JhdF9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAob190b21vbmV5X3JhdFxuICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAob19yZWR1Y2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBkZWNpbWFsKSAoc3VtMl86IGRlY2ltYWwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHN1bTFfIHN1bTJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAodHJhbmNoZV86IFRyYW5jaGVSZXZlbnVEZWNpbWFsLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX3JhdF9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuaGF1dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZV9oYXV0XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHRyYW5jaGVfaGF1dF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGllZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTk3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU5NzsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgPSBtb250YW50X31cblxubGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnQpIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCA9XG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjA0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYwNDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYwNDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAwMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAwMzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkxNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNFwiKVxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjhcIikpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiM1wiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjRcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC4zXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjA0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYwNDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffVxuXG5sZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW46IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY2MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NjE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjYwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjRcIilcbiAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS44XCIpKSBlbHNlXG4gICAgICAgICAgICAgICggaWYgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIjNcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy43XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NjE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExID1cbiAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV99XG5cbmxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQpIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCA9XG4gIGxldCBkYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbi5PdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLmRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbiBpblxuICBsZXQgYWdlX291dmVydHVyZV9kcm9pdF86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIjsgXCLDomdlX291dmVydHVyZV9kcm9pdFwiXSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDE0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMSA6IEluZm9ybWF0aW9uIGV0IHNpbXBsaWZpY2F0aW9uIGRlcyBkw6ltYXJjaGVzIGRlcyBhc3N1csOpcy5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk1NSkgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoNjIpICgwKSAoMCkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjY3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYwKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNCkgKDApKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxNDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19lcSAob19nZXRZZWFyIGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTJcIikpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19hZGRfZHVyX2R1ciAoZHVyYXRpb25fb2ZfbnVtYmVycyAoNjApICgwKSAoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICg5KSAoMCkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJEYXRlIGQnb3V2ZXJ0dXJlIGRlcyBkcm9pdHMgw6AgbGEgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg1OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2VxIChvX2dldFllYXIgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTk1M1wiKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2FkZF9kdXJfZHVyIChkdXJhdGlvbl9vZl9udW1iZXJzICg2MSkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDIpICgwKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkRhdGUgZCdvdXZlcnR1cmUgZGVzIGRyb2l0cyDDoCBsYSByZXRyYWl0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTU0XCIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNykgKDApKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS5hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0ID0gYWdlX291dmVydHVyZV9kcm9pdF99XG5cbmxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW46IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgYWlkZV92ZXJzZWVfOiBWZXJzZW1lbnRBLnQgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5haWRlX3ZlcnNlZV9pbiBpblxuICBsZXQgbW9udGFudF9hcGxfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfYXBsX2luIGluXG4gIGxldCBtb250YW50X2NoYXJnZXNfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfY2hhcmdlc19pbiBpblxuICBsZXQgZGVwZW5zZV9sb2dlbWVudF86IERlcGVuc2VMb2dlbWVudC50ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uZGVwZW5zZV9sb2dlbWVudF9pbiBpblxuICBsZXQgbW9udGFudF9kZXR0ZV86IG1vbmV5ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9kZXR0ZV9pbiBpblxuICBsZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV86IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcIm1vZGVfb2NjdXBhdGlvbl9pbXBhecOpXCJdXG4gICAgKGVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzNDU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0ICgpKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMzA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfOiBEZXBlbnNlTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwiZMOpcGVuc2VfbG9nZW1lbnRfYnJ1dGVcIl1cbiAgICAoZW1iZWRfZGVwZW5zZV9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzE7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDMxOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDMxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzEzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzEzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVwZW5zZV9sb2dlbWVudF8pKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjE3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVwZW5zZV9sb2dlbWVudF8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9sb2dlbWVudF9uZXR0ZV86IERlcGVuc2VMb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIjsgXCJkw6lwZW5zZV9sb2dlbWVudF9uZXR0ZVwiXVxuICAgIChlbWJlZF9kZXBlbnNlX2xvZ2VtZW50KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDMyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjI2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIyNjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgdG90YWxfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIHRvdGFsXylcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Mb3llciBtb250YW50X2xveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Mb3llclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbW9udGFudF9sb3llcl8gbW9udGFudF9hcGxfKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMzI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMyMjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgdG90YWxfZWNoZWFuY2VzXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gdG90YWxfZWNoZWFuY2VzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1vbnRhbnRfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbWVuc3VhbGl0ZV8gbW9udGFudF9hcGxfKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXykpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzMjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwic2V1aWxfaW1wYXnDqV9kw6lwZW5zZV9kZV9sb2dlbWVudFwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDI5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE4Nzsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxODc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CYWlsbGV1ciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfYnJ1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfYnJ1dF8gbW9udGFudF9jaGFyZ2VzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMDM7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjAzOyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyX25ldF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfbmV0XyBtb250YW50X2NoYXJnZXNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDI5OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI2OTsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI2OTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFpZGVfdmVyc2VlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJhaWxsZXVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgZWNoZWFuY2VfcHJldF9icnV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBlY2hlYW5jZV9wcmV0X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlX2JydXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1lbnN1YWxpdGVfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLlwiKSlcbiAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyOTc7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyOTc7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CYWlsbGV1ciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X25ldHRlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIGVjaGVhbmNlX3ByZXRfbmV0dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgZWNoZWFuY2VfcHJldF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV9uZXR0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBtZW5zdWFsaXRlX25ldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpXG4gICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbXBheWVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwibW9udGFudF9pbXBhecOpXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMzQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAzNDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjQ1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjQ1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIG1vbnRhbnRfZGV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZGV0dGVfIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxODI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTgyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbW9udGFudF9kZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2RldHRlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDM0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwMzQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0ltcGF5ZURlcGVuc2VMb2dlbWVudC5tb250YW50X2ltcGF5ZSA9IG1vbnRhbnRfaW1wYXllX31cblxubGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW46IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gbWluaXN0w6lyaWVsbGUgTsKwRFNTL1NEMkIvMjAxOS82NSBkdSAyNSBtYXJzIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMTkgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxMzE2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbm8gRFNTL1NEMkIvMjAyMC8zMyBkdSAxOCBmw6l2cmllciAyMDIwIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIwIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDQwXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjEvNjUgZHUgMTkgbWFycyAyMDIxIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIxIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDgxXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjIvODIgZHUgMjggbWFycyAyMDIyIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIyIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjI4XCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAge0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCA9IG1vbnRhbnRffVxuXG5sZXQgc21pYyAoc21pY19pbjogU21pY0luLnQpIDogU21pYy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gc21pY19pbi5TbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBzbWljX2luLlNtaWNJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGJydXRfaG9yYWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiU21pY1wiOyBcImJydXRfaG9yYWlyZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAzXCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzU3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzc7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDE1XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzY2XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMjVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc3NFwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NDEgZHUgMjIgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNTdcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk4XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA2OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTkgYXZyaWwgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOVwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzQ7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg4KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTA3XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MzVcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc0OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMi0xNjA4IGR1IDIyIGTDqWNlbWJyZSAyMDIyIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEyN1wiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODU7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUxXCIpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1NtaWMuYnJ1dF9ob3JhaXJlID0gYnJ1dF9ob3JhaXJlX31cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQpIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9XG4gIGxldCBsb3llcl9wcmluY2lwYWxfYmFzZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X2VzdF9jaGFtYnJlXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luIGluXG4gIGxldCBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luIGluXG4gIGxldCBjb2xvY2F0aW9uXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gaW5cbiAgbGV0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiBpblxuICBsZXQgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luIGluXG4gIGxldCBmcmFjdGlvbl9sODMyXzNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiZnJhY3Rpb25fbDgzMl8zXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE5MDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuOThcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU4MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTU4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01ODE7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU4MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm1vbnRhbnQgaW5cbiAgbGV0IHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcInRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2OTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3Mzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjczOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAzMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE4NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ4OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxODVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2NzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5NDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjcwOTAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg0NTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NjQ2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODk3NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkzMTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NjQyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTk3NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5OTc1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIganVpbGxldCAyMDIyIGF1IDMxIGTDqWNlbWJyZSAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0ODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2OTc3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4MzIyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUwOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg4MzQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MTYzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTQ4ODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk4MTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTgxNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1OTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODIyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgamFudmllciAyMDIyIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY4MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjcwOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODAwMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NDk1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODgxMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkxMjQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NDM5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk0MzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDE4OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgamFudmllciAyMDIwIGF1IDMxIGTDqWNlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTg4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NTcyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3ODM5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODAxNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgzMjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NjMxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODkzODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkyNDYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTI0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX3JlZmVyZW5jZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfcsOpZsOpcmVuY2VcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTUzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTM7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU5OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU5NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE3OTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMxOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU5NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTc5N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE1MjsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTg2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNjY0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTUzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4NjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggdHlwZV9haWRlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICB8IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKVxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMlwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUzMDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzEzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5MDBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUzODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01Mzk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc5MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDY4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTExXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTQ3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTUzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1NzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc3NzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1Njg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODI2MVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY5NjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTM2XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDgyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTg1XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjA2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMDc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY4NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzc0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMDQ0XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMzQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQwM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjcyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4OTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ3MTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzEzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkwMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODI2MVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NzU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NzU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4ODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3NzY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0MTk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyNjgwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY4MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5MTNcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2ODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMyODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE4MjFcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDg1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODg3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUyMDBcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzIwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA1NDhcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjQ7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIwNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTM5MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTgwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1OTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQzNDhcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjM7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE3OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTUxNVwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODk1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzA5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODg1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk2ODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTg1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjQ2XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTY2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MzkyXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTA0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNDYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg3MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5NTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTcyOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzI7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDUwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI0MTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI0MTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTQ7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNDsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTA7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTA7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcImxveWVyX3ByaW5jaXBhbF9hdmVjX3LDqWR1Y3Rpb25fbWV1YmzDqVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MzI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTMyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl8gdGhlblxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbG95ZXJfcHJpbmNpcGFsX2Jhc2VfXG4gICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpKSkgZWxzZSBsb3llcl9wcmluY2lwYWxfYmFzZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUzMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01MzI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwicGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LlwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjFcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU2OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJwbGFmb25kX2TDqWdyZXNzaXZpdMOpX2Q4MjNfMTZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuNFwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU1OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJsb3llcl/DqWxpZ2libGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE4MDY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfXG4gICAgICAgICAgICAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykgdGhlbiBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8gZWxzZVxuICAgICAgICAgICAgICBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU0ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludWVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTc0OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODU1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTU7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc18pKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGFpZGVfZmluYWxlXykpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg0MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NDE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfXG4gICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2XykgdGhlblxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTZfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XykpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGFpZGVfZmluYWxlXykpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzQ7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGFydGljaXBhdGlvbl9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGFydGljaXBhdGlvbl9taW5pbWFsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2NDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjYzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NjNcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM5XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MzlcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAyNDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyNFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTY0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTU2NDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByYXBwb3J0X2xveWVyc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJyYXBwb3J0X2xveWVyc1wiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTAzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjAgYXUgMzEgc2VwdGVtYnJlIDIwMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3llcl9yZWZlcmVuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA3OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxveWVyX3JlZmVyZW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIGxveWVyX2VsaWdpYmxlXyBsb3llcl9yZWZlcmVuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg2NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludWVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01NzU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfbG95ZXJfw6lsaWdpYmxlX2Zvcm11bGVcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MDsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUwOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEyNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODgyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg4MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzY7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9sb3llcl9lbGlnaWJsZV90YXV4X2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfbG95ZXJfw6lsaWdpYmxlX3RhdXhfYXJyb25kaVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUxOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEzNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTM0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwMDAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE0OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODA3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODA3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbl9sODMyXzNfKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbDgzMl8zXykpIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT01Nzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTc3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU2MDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTY1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgICB0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NjA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkxNDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5MTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTc4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3ODsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU3ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01Nzg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwicGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU2Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjY7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTkzMTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfKVxuICAgICAgICAgICAgICAgICAgdGF1eF9wcmlzZV9jb21wdGVfcmVzc291cmNlc18pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGxldCBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfXG4gICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBhcnRpY2lwYXRpb25fbWluaW1hbGVfIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjY7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU3MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NzE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE3ODg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTc4ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTcxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODU4OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg1ODsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODU4OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg1ODsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCBmcmFjdGlvbl9sODMyXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX3JhdF9yYXQgZnJhY3Rpb25fbDgzMl8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk4XCIpKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODE3OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODE3OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgxNzsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgxNzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIgPVxuICAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgcGFydGljaXBhdGlvbl9taW5pbWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlID1cbiAgICAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgPVxuICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9XG4gIGxldCB0eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiBpblxuICBsZXQgZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVkZXZhbmNlXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbiBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogdW5pdCAtPiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gaW5cbiAgbGV0IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiB1bml0IC0+IGRlY2ltYWwgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gaW5cbiAgbGV0IGNvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNvZWZmaWNpZW50X3JfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYxOTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTY1OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMTcyNlwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MTk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Mjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1NDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU0MDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI1NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU1MTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02MTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjE2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODUwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg1MDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHR5cGVfbG9nZW1lbnRfZm95ZXJfXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5Mb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb252ZW50aW9ubmVtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5Gb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkwKSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgXyAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY1MTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjUxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjUxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJwbGFmb25kX8OpcXVpdmFsZW5jZV9sb3llcl/DqWxpZ2libGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0ODY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDg2OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2MTkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MTUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NzQxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE3OTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NTg2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjcxMDM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5Mjk5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNTY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYyNjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTk1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYzODg3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMDk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2NjM0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5NDc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTI3NDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjAwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU5Njc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjMyMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NTc4OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5NzA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjM2MzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODYzN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzExOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDgxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzYzMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MzY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc5MjlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTcyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjQzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTA1N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzgwMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwOTU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQxMTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NzY1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MjI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjI7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM0NzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDQ0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjEwMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NTU1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU5NDU0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzNjlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODM1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzA4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDY0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzQzM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDU3NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MTM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc2ODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjQwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDg2OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzYwMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNzQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM4ODRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NzQxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkpKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3ODM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzgzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfKSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNF8pXG4gICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5Mzk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzkzOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5MzU7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5MzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM5Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTM3OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzkzNzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02Mjg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcxNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNzE0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8gdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMFwiKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjY4XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjE4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYxODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1NzU7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgY29uZGl0aW9uXzJfZHVfODMyXzI1XyB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQyMDkxXCIpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMzkzNDBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTYyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MjE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NTc7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiByZWRldmFuY2VfIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfKVxuICAgICAgICAgICAgICB0aGVuIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfIGVsc2UgcmVkZXZhbmNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjIxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyMTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjIwOyBzdGFydF9jb2x1bW49MjE7IGVuZF9saW5lPTYyMDsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyMDsgc3RhcnRfY29sdW1uPTIxOyBlbmRfbGluZT02MjA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTQxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjA7IHN0YXJ0X2NvbHVtbj0yMTsgZW5kX2xpbmU9NjIwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTM3OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjI1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzczOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3NzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzcxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uXzJfZHVfODMyXzI1XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3NzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3MTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzc1OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3NzU7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3NzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc3NTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgICh7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjM5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTUzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTUzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19zdWJfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODY1OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGRlbm9taW5hdGV1cl8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgY29lZmZpY2llbnRfcl9kODMyXzI1X1xuICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChsZXQgZGVub21pbmF0ZXVyXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBkZW5vbWluYXRldXJfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGRlbm9taW5hdGV1cl8pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKVxuICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gZGVub21pbmF0ZXVyX1xuICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfXG4gICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mzk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjM5OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN186IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjIzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTQxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE0MTsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN18pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiBkZXBlbnNlX25ldHRlX21pbmltYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjdfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN19cbiAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02MjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjIzOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02MjM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjMwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYzMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzc2OTsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MzA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjMwOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NDA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NzA7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg4NjsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0MDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDY7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzk3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIGFpZGVfZmluYWxlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTY0Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDY7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NjsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbFwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDE7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NzY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5NzY7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODg5OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIGVsc2UgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdICh1bmVtYmVkZGFibGUpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODExOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgxMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY0NzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ3OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY0Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzM2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3MzY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjQzOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MzI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODMyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNF8pXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02NDg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjQ4OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0ODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NDg7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1ID1cbiAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgPVxuICAgICAgIGNvZWZmaWNpZW50X3JfZDgzMl8yNV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICBwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlID1cbiAgICAgICBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSA9XG4gICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgbGV0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiBpblxuICBsZXQgZGF0ZV9zaWduYXR1cmVfcHJldF86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gaW5cbiAgbGV0IGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiBpblxuICBsZXQgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiBpblxuICBsZXQgY29wcm9wcmlldGVfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luIGluXG4gIGxldCB0eXBlX3ByZXRfOiBUeXBlUHJldC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4gaW5cbiAgbGV0IGFuY2llbm5ldGVfbG9nZW1lbnRfOiBOZXVmT3VBbmNpZW4udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTBcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5OTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMFwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM1NTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjFcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDA7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM2NDsgc3RhcnRfY29sdW1uPTE1OyBlbmRfbGluZT0yMzY0OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyMlwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTExMzNcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMThfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ1Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDU3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNlwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTYuMjVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMzsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzc5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyM1wiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MDA4NVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzA0OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xNV8xXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF90cmFuY2hlX2luZsOpcmlldXJlX2Q4MzJfMTVfMVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM4MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjNcIjsgXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMjA4XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MDU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X3RyYW5jaGVfc3Vww6lyaWV1cmVfZDgzMl8xNV8xXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMzgxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyM1wiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40MTZcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgcHJlbWllclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlLDqGdsZW1lbnQgKENFKSBuwrAyODY2Lzk4IGR1IGNvbnNlaWwgZHUgMzEgZMOpY2VtYnJlIDE5OTggY29uY2VybmFudCBsZXMgdGF1eCBkZSBjb252ZXJzaW9uIGVudHJlIGwnZXVybyBldCBsZXMgbW9ubmFpZXMgZGVzIMOJdGF0cyBtZW1icmVzIGFkb3B0YW50IGwnZXVyb1wiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi41NTk1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjgxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4MTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI4MzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyODM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiOyBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7IFwiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAoe0NhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzAxOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDM5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI0Mzk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI1XCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDEwKSAoMSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjI2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzRcIikpXG4gICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gYW1lbGlvcmVfcGFyX29jY3VwYW50XyAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk91aSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3MlwiKVxuICAgICAgICAgICAgICAgICB8IEFtZWxpb3JlUGFyT2NjdXBhbnQuTm9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk4KSAoMTApICgxKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIyNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzRcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcwMTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTcyNDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTcyNDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcyNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03MjQ7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgzMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgzMl8xMFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0MTI7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQxMjsgZW5kX2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTE3OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUxNzsgZW5kX2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk4OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMTA7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMxMDsgZW5kX2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMzMzsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjMzMzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE5XCI7IFwiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTg7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODM7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njk4OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjc2OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjc2OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIwIGF1IDMxIHNlcHRlbWJyZSAyMDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5ODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MTg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE4OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzEzMDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxMzA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMF8pIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTcxODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxODsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTg7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfZDgzMl8xOFwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njk3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY5Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1OTU7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM1ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzU4NzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XykpIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9cbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xOF8pIGVsc2VcbiAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGRhdGVfc2lnbmF0dXJlX3ByZXRfOiBkYXRlKSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTgwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg2OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NzEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTA3MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNjU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMzkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA5ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTM5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzYwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk1NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTMxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk4MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzOTAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3NjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTI4MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjUwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk3OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNTk1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkyNTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjU1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQyMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MTIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAwMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzMjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNTkzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE5NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDE0MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE1MDAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY2NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5OTkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjI2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjMwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTYxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NDQwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI3NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzI5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMzQxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTYwOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDQzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NjEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODA3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE3NTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTQzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjkyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjk2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDg3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI0M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDM2MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MzcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc1NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NzE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwODQwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzI5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQ1MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3NTAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzNTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjI4MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4OTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM1ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM2MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MTI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTEzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTUxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2Njc5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTIwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDY4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDgxOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg5NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM5MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM5NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3Njg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDEzN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY0NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzg3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzU1NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkyMzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Njc3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYwMjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyMTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzkzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Mjg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI0MTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY5OTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNTgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTI5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDU3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDYxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMykgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2MTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgxNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NjY2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjUyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MjE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzOTU5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTcwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTU4NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ5NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDgpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NDQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNzExXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzMyM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE5NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NjM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjExODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0MTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MjM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIxODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg4MjdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1NDY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjY0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NzIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTcwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDQxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjgxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE1MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc0OTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MzM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU1Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTkwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTI2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY2MjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MzU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwOTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc4MTRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNTM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDcyMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1ODc0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDE4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzA4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTkxNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY3NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNTUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjAxMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3NTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDUyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODU0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjYzMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjEzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2NDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NTA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM3NDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg1OTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDg1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NTk4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTAyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjU5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTAxNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDgwMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAzNDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MzI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzOTY0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTYwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2MzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjkyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzM2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzAyNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg2ODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNzgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MzMyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTg4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzI1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTAwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjIyNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk0NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MjIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc1OTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzOTU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM2MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0OTY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzU4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODE3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxMTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAyNDlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MzgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTEzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MTM4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjgyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzg3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzkxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTExNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjM2MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk2MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MjQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEzMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3MTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MDk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MjU0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MDc4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkwM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODIwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODI2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDEwOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk5NTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAzNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDk1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNTMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MjI4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjkyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODUzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODU3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTAxNTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MzI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2ODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgxMzFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NTgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjQ1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NTc2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDY0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM1M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODkwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQ4NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAzOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTA5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2ODBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTIwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NTM5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzI5MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3NTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTIzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTg1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI1NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTA2NTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3Mzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE5OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg1MTJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1MDI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjUxNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5ODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODE5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU5NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTUyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTU2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODg2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDgyOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA3OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU3MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MjQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4ODI0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzYyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTg5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NjI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MTg1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTc0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc1NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM0MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU5OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA1MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY1ODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjA3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0ODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNjczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjA5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjUzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzAyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzNzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDU0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ0NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzNDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA1NTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NDM3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjAzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc2MDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjg3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTU2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDYyNTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjkzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY3OThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjExMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwODg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTY1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc4MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE5MTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY0MzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0Njg0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjEyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTE3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTIxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ0NzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzYwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyODk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5NTk2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NjI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDcxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI5NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE1NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5Njc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODEwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTk0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjQ1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyNjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ3MDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk2MzZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDkzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxODM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxODc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzE0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDgwN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTI0NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4OTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2NjQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjc0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwOTQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MTAzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjIwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYwNzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMjYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NjUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMDk3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzU0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDg4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ4MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI1MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0OTQxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjYyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc2ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzI0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDAxM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDY3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEwMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMzk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyODE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyODQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5OTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjM4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYyMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjczMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2NTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NDYzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ5NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk5NDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0OTM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyMTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODYwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIzOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjE4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY2Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY2NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY3ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM3MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwMTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzOTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjc2MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg0MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjQyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk3NzAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzEyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1MzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODM3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc1MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc1MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTQ4MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3ODcwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMzIwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTU4OTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODU4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEyMzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4Njsgc3RhcnRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02ODg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI3OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Njg4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjkzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02OTM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTMxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MzE7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg2KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTQyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU0MjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIG9fc3ViX21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlXyBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM19iYXNlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODQ7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg0OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzM2NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9zaWduYXR1cmVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBwbGFmb25kX2VudHJlZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzNDY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4MzJfMTBfM1wiOyBcImlucHV0MFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9Njg0OyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODc7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg3OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQ4Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg3OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg2OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM0ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4NjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAgKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0ODk7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDg5OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM0ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ4OTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfZm9ybXVsZVwiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY5MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTA7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE5NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTk0OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fc3ViX3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKVxuICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzExX1xuICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkwOyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFsbG9jYXRpb25fbWVuc3VlbGxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NTM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTUzOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIl1cbiAgICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTdfM18pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMThfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTdfM18pXG4gICAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Njk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY5NTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfY29wcm9wcmlldGFpcmVzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zX2NvcHJvcHJpw6l0YWlyZXNcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njg1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY4NTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODU7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg1OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY4NTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyOTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI5MDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMCBhdSAzMSBzZXB0ZW1icmUgMjAyMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTc7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV8pKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzkzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM5MzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiOyBcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZiBjb3Byb3ByaWV0ZV8gdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYmFzZV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02ODU7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1lbnN1YWxpdMOpX21pbmltYWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY4Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02ODI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQzODsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5QYXNEZVRyYXZhdXggXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfIDogZGVjaW1hbCA9XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV8gOiBkZWNpbWFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV8pXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChvX3RvbW9uZXlfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9yYXRfcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMTVfMV8pIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzE1XzFfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ4MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ4MTsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5QYXNEZVRyYXZhdXggXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjgyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfY29lZmZfYXJyb25kaV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2NvZWZmX2Fycm9uZGlcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkxOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzIxMDsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkxOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxOTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MTk7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE0NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIGFpZGVfZmluYWxlXyAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzE5OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtZW5zdWFsaXTDqV/DqWxpZ2libGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NjgxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY4MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxMDU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2NvcHJvcHJpZXRhaXJlc18pIHRoZW5cbiAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jb3Byb3ByaWV0YWlyZXNfIGVsc2VcbiAgICAgICAgICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjgxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY4MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02OTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjkyOyBlbmRfY29sdW1uPTE1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzIxMzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfY29lZmZfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIGVsc2UgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfY29lZmZfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02OTI7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXSAodW5lbWJlZGRhYmxlKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzIwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNTg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTU4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03MjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzIwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzIwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcyMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03MjE7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyMTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyMTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZSA9XG4gICAgIG1lbnN1YWxpdGVfZWxpZ2libGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwID1cbiAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogdW5pdCAtPiBib29sID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX3ByZXRfOiBQcmV0LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fcHLDqnRcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwcmV0XzogUHJldC50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0yOTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MjkyOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI5Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX3BldXBsZW1lbnRfbG9nZW1lbnRfbDgyMl8xMF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9wZXVwbGVtZW50X2xvZ2VtZW50X2w4MjJfMTBcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMDE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzAxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByacOpdMOpXCJdIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzExOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgYsOpbsOpZmljaWFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTE7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXRcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMxMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGLDqW7DqWZpY2lhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2w4MjJfNV9wYXRyaW1vaW5lXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwic2V1aWxfbDgyMl81X3BhdHJpbW9pbmVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTI3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBQcmlzZSBlbiBjb21wdGUgZHUgcGF0cmltb2luZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDAwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJ1c3VmcnVpdF9vdV9wcm9wcmnDqXTDqV9mYW1pbGxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX29yXG4gICAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5wcm9wcmlldGFpcmUpXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHBhcnRzXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAobWF0Y2ggKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFBhcmVudE91QXV0cmUuRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHBhcnRzXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzEwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxMDsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzlfZGVjZW5jZV9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5OTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjA7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjA7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG9nZW1lbnRfZGVjZW50X2w4OV80NjIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0yOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Mjk5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5ODsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ2OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0yOTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Nzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA2MzsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBub21icmVfcGVyc29ubmVzX2xvZ2VtZW50XyA6IGludGVnZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjcwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOFwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnJlc18pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk3OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0yOTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0yOTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk0OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUsOoZ2xlcyBkZSBub24tY3VtdWxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9kYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfLkRlbWFuZGV1ci5kYXRlX25haXNzYW5jZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVwiO1xuICAgICAgXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcIjtcbiAgICAgIFwiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSlcbiAgICAoe091dmVydHVyZURyb2l0c1JldHJhaXRlSW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luID1cbiAgICAgICAgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX30pKSkgaW5cbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2FnZV9vdXZlcnR1cmVfZHJvaXRfOiBkdXJhdGlvbiA9IHJlc3VsdF8uT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdCBpblxuICBsZXQgcGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJwYXRyaW1vaW5lX3RvdGFsX2RlbWFuZGV1clwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDk7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDY7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAoKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBhdHJpbW9pbmUpLlBhdHJpbW9pbmUucHJvZHVpc2FudF9yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpXG4gICAgICAgICAgICAgICgoZGVtYW5kZXVyXy5EZW1hbmRldXIucGF0cmltb2luZSkuUGF0cmltb2luZS5uZV9wcm9kdWlzYW50X3Bhc19yZXZlbnVfcGVyaW9kZV9yODIyXzNfM19yODIyXzQpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9uYXRpb25hbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX25hdGlvbmFsaXTDqVwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5MzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjkzOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZGVtYW5kZXVyXy5EZW1hbmRldXIubmF0aW9uYWxpdGUpXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTmF0aW9uYWxpdGUuRXRyYW5nZXJlIGNvbmRpdGlvbnNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbnNfLkNvbmRpdGlvbnNFdHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI5Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTM7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc8OpY3VcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgxNS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24gZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IEFsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzIC0gQWxsb2NhdGlvbiBhdXggYWR1bHRlcyBoYW5kaWNhcMOpcyAtIEFpZGVzIMOgIGwnZW1wbG9pIHBvdXIgbGEgZ2FyZGUgZGVzIGpldW5lcyBlbmZhbnRzIC0gUHJvdGVjdGlvbiBjb21wbMOpbWVudGFpcmUgZW4gbWF0acOocmUgZGUgc2FudMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoNCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI5OTk4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNDE4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbiBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXMgLSBBbGxvY2F0aW9uIGF1eCBhZHVsdGVzIGhhbmRpY2Fww6lzIC0gQWlkZXMgw6AgbCdlbXBsb2kgcG91ciBsYSBnYXJkZSBkZXMgamV1bmVzIGVuZmFudHMgLSBQcm90ZWN0aW9uIGNvbXBsw6ltZW50YWlyZSBlbiBtYXRpw6hyZSBkZSBzYW50w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICg0KSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwODM4NDBcIikpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIzLTMgZHUgMDkvMDEvMjAyMiBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIzXFxcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDI0KSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTE1MzMwMlwiKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBkZSBsYSBDTkFWIDIwMjItMyBkdSAxMS8wMS8yMDIyIFxcXCJSZXZhbG9yaXNhdGlvbiDDoCBjb21wdGVyIGR1IDFlciBqYW52aWVyIDIwMjJcXFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50cyByZXZhbG9yaXPDqXMgZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTAwMTQ0XCIpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgZGUgbGEgQ05BViAyMDIxLTEgZHUgMTEvMDEvMjAyMSBcXFwiUmV2YWxvcmlzYXRpb24gw6AgY29tcHRlciBkdSAxZXIgamFudmllciAyMDIxXFxcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4ODE3NVwiKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc1wiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgcGVyc29ubmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgzMCkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5Ob24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk91aSBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvblwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0yOTU7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTU7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzc7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIHVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnByb3ByaWV0YWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBwYXJ0c18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mjk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTI5NTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZXVwbGVtZW50X2xvZ2VtZW50XCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODU7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDA7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDA7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wxNjFfMTdfMl9zZWN1XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6JnZV9sMTYxXzE3XzJfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyNTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfYWdlX291dmVydHVyZV9kcm9pdF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGF0cmltb2luZV9wcmlzX2VuX2NvbXB0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInBhdHJpbW9pbmVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg2OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4NjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjc7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2OTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25fOiBQcmVzdGF0aW9uUmVjdWUudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX29yIGFjY19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3VlcykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk0NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogUHJpc2UgZW4gY29tcHRlIGR1IHBhdHJpbW9pbmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzVfcGF0cmltb2luZV8pKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBhdHJpbW9pbmUpLlBhdHJpbW9pbmUubmVfcHJvZHVpc2FudF9wYXNfcmV2ZW51X3BlcmlvZGVfcjgyMl8zXzNfcjgyMl80KSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTA7IHN0YXJ0X2NvbHVtbj0zMzsgZW5kX2xpbmU9MjUwOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHBhdHJpbW9pbmVfdG90YWxfZGVtYW5kZXVyX1xuICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzVfcGF0cmltb2luZV8pIHRoZW4gcGF0cmltb2luZV90b3RhbF9kZW1hbmRldXJfXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfbG9nZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbG9nZW1lbnRcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3IgY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl84X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X2xvY2F0aW9uX3RpZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF8pKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhZ2VfbDM1MV84XzFfc2VjdV86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOiZ2VfbDM1MV84XzFfc8OpY3VcIl1cbiAgICAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzE1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE2MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDM1MS04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiA1IDogVGF1eCBldCBtb250YW50IGRlIGxhIHBlbnNpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBPdXZlcnR1cmUgZHUgZHJvaXQsIGxpcXVpZGF0aW9uIGV0IGNhbGN1bCBkZXMgcGVuc2lvbnMgZGUgcmV0cmFpdGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWIDogQXNzdXJhbmNlIHZpZWlsbGVzc2UgLSBBc3N1cmFuY2UgdmV1dmFnZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIElJSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IGFzc3VyYW5jZXMgc29jaWFsZXMgZXQgw6AgZGl2ZXJzZXMgY2F0w6lnb3JpZXMgZGUgcGVyc29ubmVzIHJhdHRhY2jDqWVzIGF1IHLDqWdpbWUgZ8OpbsOpcmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfZHVyX2R1ciBhZ2VfbDE2MV8xN18yX3NlY3VfXG4gICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICg1KSAoMCkgKDApKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX25hdGlvbmFsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfbG9nZW1lbnRfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzIwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMDsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExODk7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5wYXJlbnRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBhcmVudGUuQXNjZW5kYW50ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnJlc3NvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc2VjdV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuMjVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2wzNTFfOF8xX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDY1KSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbDE2MV8xN18yX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zMjQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzI0OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxMzsgc3RhcnRfY29sdW1uPTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMTk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjI1XCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwib3V0cHV0XCJdIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXSBjb25kaXRpb25fMl9yODIzXzRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSkgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE1MjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMjEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT0zMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzAzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMzc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2ZpbHRlclxuICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgXCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfw6BfY2hhcmdlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIl1cbiAgICAgICAgICAgICAgICAgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgXCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfw6BfY2hhcmdlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSkgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKVxuICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzA1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwNTsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIl1cbiAgICAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMyMjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMzc7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbWFwXG4gICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIilcbiAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBjb2VmZl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZfKVxuICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICBwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIl0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMjE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzIxOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBvX2xlbmd0aCBwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMjE7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdF9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yXCIpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODI7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgxOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgxOyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODE7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAge0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgPSBkYXRlX2NvdXJhbnRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSA9XG4gICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCA9XG4gICAgICAgY29uZGl0aW9uXzJfcjgyM180X31cblxubGV0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIGxldCByZXNzb3VyY2VzX2RlbWFuZGV1cl86IG1vbmV5ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ucmVzc291cmNlc19kZW1hbmRldXJfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfY29uam9pbnRfOiBtb25leSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnJlc3NvdXJjZXNfY29uam9pbnRfaW4gaW5cbiAgbGV0IHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfOiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luIGluXG4gIGxldCBkZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV86IGJvb2wgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pbiBpblxuICBsZXQgY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV86IGJvb2wgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luIGluXG4gIGxldCBwZXJzb25uZXNfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCBhcnJheSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5SZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl86IGJvb2wgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyX2luIGluXG4gIGxldCBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc186IGJvb2wgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc19pbiBpblxuICBsZXQgZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0XzogZGF0ZSA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfZGVtYW5kZV9vdV9yZWV4YW1lbl9kcm9pdF9pbiBpblxuICBsZXQgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF86IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCA9IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXzogbW9uZXkgPSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfc2V1aWxcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ5NjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTQ7IHN0YXJ0X2NvbHVtbj00NjsgZW5kX2xpbmU9NDk0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDk2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQ5NjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGlzcG9zaXRpb25zIGFwcGxpY2FibGVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTg5MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl83XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl83XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGlzcG9zaXRpb25zIGFwcGxpY2FibGVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDI7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfZm9yZmFpdGFpcmVzX3I4MjJfMjBfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJyZXNzb3VyY2VzX2ZvcmZhaXRhaXJlc19yODIyXzIwXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwNDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01MDQ7IHN0YXJ0X2NvbHVtbj01MTsgZW5kX2xpbmU9NTA0OyBlbmRfY29sdW1uPTU3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwNDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llclwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00OTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDk4OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyOTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fcmVkdWNlXG4gICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBtb25leSkgKHN1bTJfOiBtb25leSkgLT4gb19hZGRfbW9uX21vbiBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lXzogUGVyc29ubmVWaXZhbnRIYWJpdHVlbGxlbWVudEF1Rm95ZXIudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfLlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnJlc3NvdXJjZXMpXG4gICAgICAgICAgICAgICAgIHBlcnNvbm5lc192aXZhbnRfaGFiaXR1ZWxsZW1lbnRfZm95ZXJfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ5ODsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9yXzgyMl8xMF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImFiYXR0ZW1lbnRfcl84MjJfMTBcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTAzOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJpc2UgZW4gY29tcHRlIGRlcyByZXNzb3VyY2VzIHBvdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUyNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgYWJhdHRlbWVudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19lcSAob19sZW5ndGggcGVyc29ubmVzX2FfY2hhcmdlXykgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2ludF9pbnQgKG9fbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzNTAwMFwiKSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT4gYWJhdHRlbWVudF9cbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+IGFiYXR0ZW1lbnRfXG4gICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTAzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMzsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTg7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTg7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2RlbWFuZGVfb3VfcmVleGFtZW5fZHJvaXRfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxODsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBQcmluY2lwZXMgZGUgbmV1dHJhbGlzYXRpb24gZXQgZCdhYmF0dGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIlJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCBpblxuICBsZXQgYWJhdHRlbWVudF9yXzgyMl84XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiYWJhdHRlbWVudF9yXzgyMl84XCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ5OTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NjI7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogUHJpbmNpcGVzIGRlIG5ldXRyYWxpc2F0aW9uIGV0IGQnYWJhdHRlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuT3VpQXZlY0xveWVyT3VDaGFyZ2VzIGxveWVyX291X2NoYXJnZXNfIC0+XG4gICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9yXzgyMl84X1xuICAgICAgICAgICAgfCBQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLk5vbiBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00OTk7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwOTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MDk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MDk7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MDk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTQ7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg1NzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMyA6IE1vbnRhbnQgZm9yZmFpdGFpcmUgZGUgcmVzc291cmNlcyBhcHBsaWNhYmxlIGF1eCDDqXR1ZGlhbnRzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyX1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkZW1hbmRldXJfcG91cnN1aXRfZGVzX2V0dWRlc18pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfZm9yZmFpdGFpcmVzX3I4MjJfMjBfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMSA6IE1vZGFsaXTDqXMgZ8OpbsOpcmFsZXMgZGUgbCdhcHByw6ljaWF0aW9uIGRlcyByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiByZXNzb3VyY2VzX2RlbWFuZGV1cl8gcmVzc291cmNlc19jb25qb2ludF8pXG4gICAgICAgICAgICAgIHJlc3NvdXJjZXNfcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUwOTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01MDk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfcl84MjJfN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcImFiYXR0ZW1lbnRfcl84MjJfN1wiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTUwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDE7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmlzZSBlbiBjb21wdGUgZGVzIHJlc3NvdXJjZXMgcG91ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDA5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IFByaW5jaXBlcyBkZSBuZXV0cmFsaXNhdGlvbiBldCBkJ2FiYXR0ZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBDb25kaXRpb25zIHJlbGF0aXZlcyBhdXggcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fYW5kIGRlbWFuZGV1cl9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX1xuICAgICAgICAgICAgICAgICAob19hbmQgY29uam9pbnRfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcmVzc291cmNlc19kZW1hbmRldXJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfY29uam9pbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSB0aGVuXG4gICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfcl84MjJfN18gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwMTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByaXNlIGVuIGNvbXB0ZSBkZXMgcmVzc291cmNlcyBwb3VyIGxlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV86IFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9fYW5kIGFjY19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfLlBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLmR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pcykpXG4gICAgICAgICAgICAgICAgICAgICAgIHRydWUgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl8pXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MzsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogTW9kYWxpdMOpcyBnw6luw6lyYWxlcyBkZSBsJ2FwcHLDqWNpYXRpb24gZGVzIHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1eCByZXNzb3VyY2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQzOyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBNb2RhbGl0w6lzIGfDqW7DqXJhbGVzIGRlIGwnYXBwcsOpY2lhdGlvbiBkZXMgcmVzc291cmNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXV4IHJlc3NvdXJjZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIHtSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZSA9XG4gICAgIHJlc3NvdXJjZXNfcHJpc2VzX2VuX2NvbXB0ZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBwcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnByZXN0YXRpb25fY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiw6JnZV9sNTEyXzNfMlwiXSAoZW1iZWRfZHVyYXRpb24pXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDU7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDIwKSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ1OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IHNtaWNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLmRhdGVfY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU0OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkgaW5cbiAgbGV0IHNtaWNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLnLDqXNpZGVuY2VcIl1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01MzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTUzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBTbWljLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gc21pYylcbiAgICAoe1NtaWNJbi5kYXRlX2NvdXJhbnRlX2luID0gc21pY19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIFNtaWNJbi5yZXNpZGVuY2VfaW4gPSBzbWljX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlXzogbW9uZXkgPSByZXN1bHRfLlNtaWMuYnJ1dF9ob3JhaXJlIGluXG4gIGxldCByZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gKFxuICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00NjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2w1MTJfM18yXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9sNTEyXzNfMlwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDQ7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSAoXG4gICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjI7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNzU1LTAtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxNjkuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbDUxMl8zXzJfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTQyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MTsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAge0VsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCA9IGRyb2l0X291dmVydF87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgPVxuICAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2VfO1xuICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzIgPSBhZ2VfbDUxMl8zXzJfO1xuICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSA9XG4gICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luIGluXG4gIGxldCBsb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiBpblxuICBsZXQgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY29sb2NhdGlvbl86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luIGluXG4gIGxldCByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiBpblxuICBsZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsX2Jhc2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmxveWVyX3ByaW5jaXBhbF9iYXNlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03OTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzk5OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTc5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03OTk7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGxveWVyX3ByaW5jaXBhbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Nzk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc5OTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAxOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDE7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmLDqW7DqWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcMOpc1wiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwMzsgZW5kX2NvbHVtbj03ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODAzOyBlbmRfY29sdW1uPTc4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDM7IGVuZF9jb2x1bW49Nzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwNjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODA2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgwODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MDg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwODsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwODsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04MTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODEwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTA7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTgxMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MTI7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gem9uZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxMjsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbnRfZXN0X2NoYW1icmVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYubG9nZW1lbnRfZXN0X2NoYW1icmVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxNDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODE0OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgxNDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuw6Jnw6llc19vdV9oYW5kaWNhcF9hZHVsdGVzX2jDqWJlcmfDqWVzX29uw6lyZXV4X3BhcnRpY3VsaWVyc1wiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODE3OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9ODE4OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgxNzsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTgxODsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MTc7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT04MTg7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmLnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0eXBlX2FpZGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgyMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MjE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXRpb25fOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuY29sb2NhdGlvblwiXVxuICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIzOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjb2xvY2F0aW9uXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04MjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODIzOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYucsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI1OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgyNTsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5sb2dlbWVudF9tZXVibMOpX2Q4NDJfMlwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Mjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODI3OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04Mjc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGxvZ2VtZW50X21ldWJsZV9kODQyXzJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04Mjc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWZcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXVxuICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4gPVxuICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xveWVyX3ByaW5jaXBhbF9iYXNlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpZGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfY29sb2NhdGlvbl87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl99KSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X21vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BhcnRpY2lwYXRpb25fbWluaW1hbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBcbiAgICBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzk1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjgxOyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjgxOyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiBhaWRlX2ZpbmFsZV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MzI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXVxuICAgICAgICAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzkzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc5MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc5Mzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTc5MzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNzM7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjczOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuQ2hhbmdlbWVudCBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpKVxuICAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3NfLkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudCkpKVxuICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgzMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04MzE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc5Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03OTM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gIGxldCB0eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiBpblxuICBsZXQgZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luIGluXG4gIGxldCByZWRldmFuY2VfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfOiBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4gaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml8xNVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NDE7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDEwMDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0MTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTQyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwODk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlX2Q4NDJfMTdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9kw6lwZW5zZV9uZXR0ZV9kODQyXzE3XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NDM7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE5MTsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0MzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4NDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MDsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00ODM2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODM2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4Mzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4Mzg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4Mzg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF99KSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODM7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIudHlwZV9sb2dlbWVudF9mb3llclwiXVxuICAgICAgKGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk2NzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk2NzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHR5cGVfbG9nZW1lbnRfZm95ZXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njc7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50XCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvbnZlbnRpb25uZW1lbnRfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Njk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTczOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTczOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTczOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NzU7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzc7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci56b25lXCJdXG4gICAgICAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3OTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTc5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3OTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05Nzk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4MTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTgxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk4MTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05ODE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVkZXZhbmNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlZGV2YW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk3MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgwMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODAzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MDM7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiB1bml0IC0+IGRlY2ltYWwgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl0gKGVtYmVkX2RlY2ltYWwpXG4gICAgICAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3R5cGVfbG9nZW1lbnRfZm95ZXJfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9yX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3JfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3BsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXCJdXG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0NjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDY7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNzY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDc2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ2OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIHZhbGFibGVzIGR1IDFlciBvY3RvYnJlIDIwMjEgYXUgMzAganVpbiAyMDIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlcXVpdmFsZW5jZV9sb3llcl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMTg7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMTg7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg3MDhcIilcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzU1OVwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNTM7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNTQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMzYyXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMxOTZcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE3MTsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTcyOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzYwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzM2NVwiKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzU7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMzY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NjA3XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczNjVcIikpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTQ1OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDk7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwOTsgZW5kX2NvbHVtbj03OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg0MTRcIilcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzEwMFwiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc0Njsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzQ3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA2NDBcIilcbiAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjA3M1wiKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDU7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NjU7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcwMTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY0NDBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mjc7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcyODsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY0NDBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg1Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4NTI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XykgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNV8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk2MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDgzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODMzOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7IFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzMzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzMzsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4MzI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgzMjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzI7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MzI7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MjsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4NDI7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDg0MjsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDQ7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODA2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0NDsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkzNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mzc7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk2NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5NjQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gZXF1aXZhbGVuY2VfbG95ZXJfXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTkzNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mzc7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Mzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfbWluaW1hbF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJsb3llcl9taW5pbWFsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk0Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODQ0OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk0NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5NzM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTczOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlX2Q4NDJfMTdfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbW9udGFudF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfZDg0Ml8xN19cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTkzOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05Mzk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Mzk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTM5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTk1Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05NTc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Nzg1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGVxdWl2YWxlbmNlX2xveWVyX1xuICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfKSBsb3llcl9taW5pbWFsXylcbiAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTU3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk1NzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg2Njsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4NjY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBhYmF0dGVtZW50XyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBhYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTk2MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTYxOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg4NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4ODQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBhaWRlX2ZpbmFsZV8gcmVkZXZhbmNlXykgdGhlbiByZWRldmFuY2VfXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTYyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2MjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4OTg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuY2VfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTY0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5MTk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00OTE5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTk2NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05NjQ7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9IGVxdWl2YWxlbmNlX2xveWVyXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzID1cbiAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5sb3llcl9taW5pbWFsID0gbG95ZXJfbWluaW1hbF87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gaW5cbiAgbGV0IGRhdGVfc2lnbmF0dXJlX3ByZXRfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luIGluXG4gIGxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luIGluXG4gIGxldCBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gaW5cbiAgbGV0IGRhdGVfZW50cmVlX2xvZ2VtZW50XzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0XzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luIGluXG4gIGxldCBjb3Byb3ByaWV0ZV86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODY1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk2MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY1OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF9mcmFuY3NfdmVyc19ldXJvc1wiXSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzMxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBwcmVtaWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUsOoZ2xlbWVudCAoQ0UpIG7CsDI4NjYvOTggZHUgY29uc2VpbCBkdSAzMSBkw6ljZW1icmUgMTk5OCBjb25jZXJuYW50IGxlcyB0YXV4IGRlIGNvbnZlcnNpb24gZW50cmUgbCdldXJvIGV0IGxlcyBtb25uYWllcyBkZXMgw4l0YXRzIG1lbWJyZXMgYWRvcHRhbnQgbCdldXJvXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LjU1OTU3XCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Njg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODY4OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDg0Ml82XCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NzM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTFcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODc0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDAyNzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODc0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3NDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDUyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkwMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzU7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfZDg0Ml8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvZWZmaWNpZW50X2Q4NDJfMTFcIl1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg3Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzY7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMzQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X2Q4NDJfMTJfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjb2VmZmljaWVudF9kODQyXzEyXCJdXG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDQ1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxNi4yNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Nzc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODc3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ0NDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0NjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICh7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc1wiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU3OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTU7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyB2YWxhYmxlcyBkdSAxZXIgb2N0b2JyZSAyMDIxIGF1IDMwIGp1aW4gMjAyMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxNzsgc3RhcnRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYxNzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAwNTsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTUxOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk1MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49NDc7IGVuZF9saW5lPTg1NzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gZmFsc2UpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1NzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDU2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZfKVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl8pKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg5MTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODkxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGRhdGVfY2FsY3VsXzogZGF0ZSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTEzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5MTM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxMzAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA1NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTEzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjI5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI4MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyODAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzA2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk3NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTg3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODQwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MjYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk0MjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NTk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NykgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzNDAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA3ODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTM3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxOTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjU1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQwODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI1MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODY3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNjUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjExMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzIwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MDEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NDUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMDU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTcpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2OTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjExNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjk2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQzMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzU2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NjYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzQ0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzAwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NzcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg1MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTI1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk5OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDUxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxNjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzk4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NjkwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTcxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxOTkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTk5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwOTc7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAxODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODAwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA4NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NzEwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTczMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNDM7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2OTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyODAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ4MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTY4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNzYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzMwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2ODgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NDAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkxNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTkzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMjMwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjIzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODk7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA2MjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIxNzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNDMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDA2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ1NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTUwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTkyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNjEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEzMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzU4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDA4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA5NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjUwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjM1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyMzU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjA4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc5OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ3NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjg4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzU2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQ2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1NjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzQ5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDMwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyODA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI4MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Mzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTgxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTE2MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxNDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTE5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMTU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODM4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNzMyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTc5N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2Mzc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjM1MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTkxNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMzA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAwOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMyNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzI1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTk0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2MTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTgyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjU4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgzNjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgzNjFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM0MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4NzI5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTc5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkwNzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMjc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ5MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2OTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUxMzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzcwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNzA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg5KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTIzN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MjQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODI0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODg2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjM4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU5NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4MTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMDU4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTc2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQxNTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY5MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzIzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgyODNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzExXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMTQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NTI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDA2NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTQ4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY3NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ4NjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1OTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzMDA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzkwNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwNDI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY4MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5NTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDYwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg3MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjIxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyMjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTM0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEyNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjUyMDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODk1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM0NDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM2NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Njc2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyNjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTU2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg2NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUxNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3NzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTA1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MDU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU3NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NDJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODMyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkzOTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTU4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDQzM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODA2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDc1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1MjJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE4NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM1MTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjE5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODg5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1NTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU1MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc1N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NDQ1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTUxOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNzIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyNjA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MDI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTkwOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NjQzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTczOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY5NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MTg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwODg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NDE3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTYxNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMjg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5NzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MzExXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU5NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTk1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTQ5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4NjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5OTU0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTA3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIxODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwNzRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwNzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzUxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzMTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMjU5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5MjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MTMyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzM3M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg2MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ2ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2NDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk0NDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk0NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NDA7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY1MTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTI1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzNTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDg5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1ODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI3MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzUxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTc1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDkzM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjk3MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQzMzNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzA3N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTgzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2ODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY4NTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyOTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDEwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzgxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzUxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDQ0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjAzMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyNzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTYzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTgyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY0OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjY1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA4OTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUwNzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDg0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzg3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzczMDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEwKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzExMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzMzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDU3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjYyM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDM3NjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQ2OTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczMDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyMzVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDkwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc4M1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAwNTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDY3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgwOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDA5MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzc1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3NzU7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMCkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUzOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzYyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ5MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzODAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUyMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4MTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMDg4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTI2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyOTI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzczMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1NjM0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTA5MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODk4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI5OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY3MjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4MTIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTYxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODIwOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTM4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MjBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDY2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTc3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDEzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTA2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzUzMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM3NTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjUzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MTA1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDM4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzI0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEzMjVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDE1MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU1NjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2OTk2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODQwNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg2NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ3NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE5MjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMTA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDI2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY0NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc5MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDUxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTA3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODUyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTM5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODYzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2MzsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NjM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODYzOyBlbmRfY29sdW1uPTE0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfcmVzc291cmNlc19tw6luYWdlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njc7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5Nzsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcwMzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTJfKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Nzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcxNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDcxNjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mzc7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjM3OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg2OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04Njk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2NvcHJvcHJpZXRlXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChkYXRlX2NhbGN1bF86IGRhdGUpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg2NDsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYzMzsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYzMzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgdmFsYWJsZXMgZHUgMWVyIG9jdG9icmUgMjAyMSBhdSAzMCBqdWluIDIwMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY2FsY3VsXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk4NTsgc3RhcnRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTg1OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY2FsY3VsXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYmFzZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkwOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MDk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfY2FsY3VsXykpKSkpKSkpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT04NjQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODY0OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjQ7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX3NldWlsXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg0Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NDI7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg0Mjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg0MjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDczNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDczNjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN18pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV8pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDcyNjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9cbiAgICAgICAgICAgICAgICAgc2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnZV8pIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gc2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5OTlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpKVxuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSBlbHNlXG4gICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODQyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg0MjsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNlwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODYwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NjA7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NjA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1ODY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBwbGFmb25kX3NpZ25hdHVyZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9lbnRyZWVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX2RhdGUpIGRhdGVfZW50cmVlX2xvZ2VtZW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1Njg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9kYXRlKSBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODYwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQ0MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19zZXVpbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDE7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQxOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIChlbWJlZF9kZWNpbWFsKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDQ0OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NDQ7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKVxuICAgICh7Q2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUubW9udGFudCBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnR5cGVfbG9nZW1lbnRfZm95ZXJcIl1cbiAgICAgIChlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IFR5cGVMb2dlbWVudEZveWVyLkF1dHJlICgpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudFwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX29mX251bWJlcnMgKDE5NzApICgxKSAoMSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTA1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwOTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2V1aWxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MDk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxMTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkxMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxMTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkxMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05MTM7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTEzOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTEzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxMzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci56b25lXCJdIChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTE1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxNTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTE3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkxNzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTE3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIucmVkZXZhbmNlXCJdIChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA3OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTkwNzsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MDE7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQwMTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiB1bml0IC0+IGRlY2ltYWwgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl0gKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NDA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MDg7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQwODsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiOyBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiOyBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3R5cGVfbG9nZW1lbnRfZm95ZXJfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY29udmVudGlvbm5lbWVudF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9yX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3JfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3BsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlIGluXG4gIGxldCBzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY2OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODY2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjcyOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00Njc1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsX1xuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTFfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2NjA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg2NjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTY7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQyMjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlXyBwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82XylcbiAgICAgICAgICAgICAgdGhlbiBwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82XyBlbHNlIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTY7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJtZW5zdWFsaXTDqV9taW5pbWFsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg1ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NTg7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQzNzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIl0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04NTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MTE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg1OTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODcxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjQ5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY0OTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbWluaW1hbF9kZXBlbnNlX25ldHRlX21pbmltYWxlXykgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODcxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg3MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODcxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg4Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04ODc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzODI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDM4MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgbWVuc3VhbGl0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4Nzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04ODc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ3MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0NzA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWJhdHRlbWVudF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pKSkpKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODkyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl0gKHVuZW1iZWRkYWJsZSlcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0ODQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDg0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODkzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODkzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSAodW5lbWJlZGRhYmxlKSAoXG4gICAgdHJ5XG4gICAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTQ7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTA0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzZfKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9ODk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbF99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhdGVnb3JpZV9jYWxjdWxfYXBsXzogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NzQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0NjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQxMzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRmb3llcl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgbG9nZW1lbnRmb3llcl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBwcm9wcmlldGFpcmVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQ2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0NjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcInJlc3NvdXJjZXNfbcOpbmFnZV9hdmVjX2Fycm9uZGlcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzQwOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTc0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMVwiKSkgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICBcIjQ5XCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTc0MDsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfOiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwic291c19jYWxjdWxfdHJhaXRlbWVudFwiXVxuICAgIChlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQ5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQzNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDM2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ2OyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ2OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQxOyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDE7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ4OyBzdGFydF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDg7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ0OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQyOyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDI7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0NTsgc3RhcnRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ1OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0Mzsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQzOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0OTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ5OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTI7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHR5cGVfYWlkZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDUzOyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NTM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jb2xvY2F0aW9uKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTA7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCBiYWlsbGV1cl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhaWxsZXVyXy5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1NTsgc3RhcnRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDU4OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTk7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1OTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQwOyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2MDsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0OTc7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTc7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5Mjsgc3RhcnRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDkyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDkzOyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk2OyBzdGFydF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTY7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk4OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0OTg7IGVuZF9jb2x1bW49ODA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5OTsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk5OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwMjsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTAyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTAzOyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDQ7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5NDsgc3RhcnRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfcHJldF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDU7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5hbmNpZW5uZXRlX2xvZ2VtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDY7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNjsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5NTsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk1OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ5MTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTA3OyBlbmRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl9fIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDpcbiAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzg7IHN0YXJ0X2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Nzg7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Nzk7IHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3OTsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3Mjsgc3RhcnRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDcyOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzM7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ3MzsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3Njsgc3RhcnRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc2OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc0OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NzQ7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3NTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3Nzsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcil9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtMF8pKSkpKSkpfSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NzE7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDgwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFyZ186IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTc1Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NTI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MjY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDI2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAoc291c19jYWxjdWxfdHJhaXRlbWVudF8uVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXG4gICAgICAgICAgICAgICAgICAgYXJnXykpXG4gICAgICAgICB3aXRoXG4gICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgc3RhcnRfbGluZT03NTI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzUyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc1Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NTI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc1MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03NTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MjQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzUxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc1MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbjogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQudCA9XG4gIGxldCBpbmZvcm1hdGlvbnNfOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uaW5mb3JtYXRpb25zX2luIGluXG4gIGxldCBkYXRlX2VtbWVuYWdlbWVudF86IGRhdGUgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfOiBtb25leSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gaW5cbiAgbGV0IGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJkw6lsYWlfYXByw6hzX2VtbcOpbmFnZW1lbnRfbDgyM184XzJcIl0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIwODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjA4MzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNikgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU4OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fcmFuZ19lbmZhbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcImNvbmRpdGlvbl9yYW5nX2VuZmFudFwiXVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ1NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwNjU7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0yMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3JtYXRpb25zXy5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzI7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDcyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MjsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDcyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MjsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50IGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbC5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGwuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ2OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Njk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2OTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDY5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDcwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ3MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NzA7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgKGVtYmVkX2Jvb2wpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKSAocmFpc2VcbiAgICAgIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGxcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgaW5cbiAgbGV0IGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ww6lyaW9kZV9kw6ltw6luYWdlbWVudFwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDY5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDc5OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoaW5mb3JtYXRpb25zXy5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgZGF0ZV9uYWlzc2FuY2VfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpcnN0RGF5T2ZNb250aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgZGF0ZV9uYWlzc2FuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMikgKDApICgwKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgwKSAoLTEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2Q4MjNfMjJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCJwbGFmb25kX2Q4MjNfMjJcIl0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDU5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ1OTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjA2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMDY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJSSA6IFByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNFwiKSlcbiAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yXCIpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ1OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTk7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2xvZ2VtZW50XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDU3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMy04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9yYW5nX2VuZmFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2R1cl9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2VtbWVuYWdlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NTc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIm1vbnRhbnRfcHJpbWVfZMOpbcOpbmFnZW1lbnRcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00NjU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDY1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjEwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMTA5OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19cbiAgICAgICAgICAgICAgICAgcGxhZm9uZF9kODIzXzIyXykgdGhlblxuICAgICAgICAgICAgICBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfIGVsc2UgcGxhZm9uZF9kODIzXzIyXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDY1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ2NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50Lm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50ID1cbiAgICAgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKHByZXRfOiBQcmV0LnQpIC0+IFxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDI0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MzItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXRfLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocHJldF8uUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTg4OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODMyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocHJldF8uUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTM2Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82XzogUHJldC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAocHJldF86IFByZXQudCkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjc7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICBzdGFydF9saW5lPTM2Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNjc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY3OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3ByZXRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3Byw6p0XCJdXG4gICAgKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NTM7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5sb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUubG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzIxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcyNjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcxNjsgc3RhcnRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxNjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRlbWFuZGV1clwiXSAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5jb25kaXRpb25fbG9nZW1lbnRfcsOpc2lkZW5jZV9wcmluY2lwYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uXzJfcjgyM180XzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuY29uZGl0aW9uXzJfcjgyM180IGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXJfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1clwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjkzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY5ODsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIFI4MzItMjFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAxIDogQ29uZGl0aW9ucyBkJ2Fzc2ltaWxhdGlvbiBkZXMgbG9nZW1lbnRzLWZveWVycyBhdXggbG9nZW1lbnRzIMOgIHVzYWdlIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl8uTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcwNDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvZ2VtZW50Rm95ZXIuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjUwOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGNvbnZlbnRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnZlbnRpb25fLkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5jb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgY29udmVudGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udmVudGlvbl8uQ29udmVudGlvbkFOSEEuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjIzOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV8xXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIChlbWJlZF9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLnByZXQpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSkgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzY0OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogZGVjaW1hbCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zNzM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzczOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzg0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzczOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzcyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNzI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcyOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzcxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM3MTsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzE7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01OTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1cl9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV8pKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzcxOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zNzE7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSA9IGRhdGVfY291cmFudGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG1lbmFnZV86IE1lbmFnZS50ID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XzogYm9vbCA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIGluXG4gIGxldCBkdXJlZV9sODQxXzFfM186IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImR1csOpZV9sODQxXzFfM1wiXSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE3MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICg1KSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA1OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXzogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnByZXN0YXRpb25fY291cmFudGVcIl1cbiAgICAgIChlbWJlZF9lbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDIyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDIyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyMjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDIyOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MjY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDI2OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5wcmVzdGF0aW9uX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9wcmVzdGF0aW9uX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSBpblxuICBsZXQgY29uZGl0aW9uX2FjY2Vzc2lvbl9wcm9wcmlldGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpw6l0w6lcIl1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwMjsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzY5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM1MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMzNzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzAwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzAyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwMjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDAyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdXG4gICAgICAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mjg7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kZW1hbmRldXJcIl1cbiAgICAgIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDMwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzMDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzMDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY5OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2OTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY5OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDc2OTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDc3MDsgc3RhcnRfY29sdW1uPTk7IGVuZF9saW5lPTQ3NzA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc3MDsgc3RhcnRfY29sdW1uPTk7IGVuZF9saW5lPTQ3NzA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgKG1hdGNoICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIuY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSSlcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzQ7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00MTU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQxNDsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzMjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDE0OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11bmVzXzogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfZGlzcG9zaXRpb25zX2NvbW11bmVzXCJdXG4gICAgKGVtYmVkX3R5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQxMjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT00MTI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg0MDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fb3IgKG9fbm90IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXylcbiAgICAgICAgICAgICAgICAgKG9fbm90IGNvbmRpdGlvbl9hY2Nlc3Npb25fcHJvcHJpZXRlXykpIHRoZW5cbiAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkgZWxzZVxuICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDEyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9mYW1pbGlhbGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXCJdIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMDY7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05OTA7IGVuZF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTYzOyBlbmRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfYV9jaGFyZ2VfOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MjI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0VuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5pZGVudGlmaWFudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpc2VFbkNoYXJnZUVuZmFudC5FZmZlY3RpdmVFdFBlcm1hbmVudGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpfSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgZGF0ZV9tYXJpYWdlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBkYXRlX21hcmlhZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmVlX2w4NDFfMV8zXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODkwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkxMTsgZW5kX2NvbHVtbj04O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe0VuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5pZGVudGlmaWFudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlRW5mYW50LkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3NTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFjY186IGJvb2wpIChwcmVzdGF0aW9uXzogUHJlc3RhdGlvblJlY3VlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9fb3IgYWNjX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25zRmFtaWxpYWxlcyAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDA0OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQwNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9sODQxXzJfOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2w4NDFfMlwiXVxuICAgIChlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMzsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDEzOyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEyNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTI0OyBlbmRfY29sdW1uPTczO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZW1hbmRldXJfLkRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTM7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMzsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE0MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDMzOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgIChvX2VxIGVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdW5lc19cbiAgICAgICAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkpXG4gICAgICAgICAgICAgICAgIGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpIGVsc2VcbiAgICAgICAgICAgICAgKCBpZiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZhbWlsaWFsZV8gdGhlblxuICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVxuICAgICAgICAgICAgICAgICAgICAoKSkgZWxzZVxuICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcbiAgICAgICAgICAgICAgICAgICAgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDEzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQxMzsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0VsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfbDg0MV8yXztcbiAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gIGxldCBtb2RlX29jY3VwYXRpb25fOiBNb2RlT2NjdXBhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHR5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiBpblxuICBsZXQgY2F0ZWdvcmllX2NhbGN1bF9hcGxfOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImNhdMOpZ29yaWVfY2FsY3VsX2FwbFwiXVxuICAgIChlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwMDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDAwOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzk1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEzOTU7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50Zm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIGxvZ2VtZW50Zm95ZXJfKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBwcm9wcmlldGFpcmVfKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgcHJvcHJpZXRhaXJlXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAwMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInJlc3NvdXJjZXNfbcOpbmFnZV9hdmVjX2Fycm9uZGlcIl1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05OTM7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTkzOyBlbmRfY29sdW1uPTIyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MTI7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgXCI0OVwiKSkpIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk5Mzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05OTM7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDAxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMDE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5QYWNzZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDAxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfOiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRcIl1cbiAgICAoZW1iZWRfdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDAzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTIwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1MjA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBtYXRjaCBtb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRcbiAgICAgICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb3llcl9wcmluY2lwYWwpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMDsgc3RhcnRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzMDsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI1OyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MjU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzI7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzMjsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUyODsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTI4OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI2OyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MjY7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI5OyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjk7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI3OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mjc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb2dlbWVudF9lc3RfY2hhbWJyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzM7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzMzsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzY7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHR5cGVfYWlkZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM3OyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mzc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jb2xvY2F0aW9uKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzQ7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGJhaWxsZXVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFpbGxldXJfLkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM5OyBzdGFydF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NDI7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTQzOyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NDM7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTQ0OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NDQ7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI0OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0NTsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyX18gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbilcbiAgICAgICAgICAgICAgICAgICAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTc7IHN0YXJ0X2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTc7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5ODsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk4OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5NDsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk0OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODk7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4OTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTA7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MDsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTkzOyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTM7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5MTsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkxOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5Mjsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTkyOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5NjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtMF8pKSkpKSkpfSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1ODg7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk5OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpfSkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjEwOyBzdGFydF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjEwOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjExOyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTE7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTQ7IHN0YXJ0X2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxNDsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjEyOyBzdGFydF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxMzsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjEzOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYxNTsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjE1OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MjM7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYyMzsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTg7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxODsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjE3OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MTc7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjA7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyMTsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjIxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTY7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYxNjsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjIyOyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MjI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbTBfOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtMF8pKSkpKSkpfSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwOTsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI0OyBlbmRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRcbiAgICAgICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb3llcl9wcmluY2lwYWwpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2Mjsgc3RhcnRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU3OyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTc7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjQ7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NDsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2MDsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTYwOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU4OyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTg7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTYxOyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NjE7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU5OyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTk7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5sb2dlbWVudF9lc3RfY2hhbWJyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjU7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njg7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2ODsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHR5cGVfYWlkZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY5OyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Njk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jb2xvY2F0aW9uKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjY7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NjsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChsb2NhdGlvbl8uTG9jYXRpb24uYmFpbGxldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGJhaWxsZXVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFpbGxldXJfLkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTcxOyBzdGFydF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzQ7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc1OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzU7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTc2OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzY7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU2OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NzsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSAocmFpc2UgRW1wdHlFcnJvcikpKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM3OyBzdGFydF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjM3OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM4OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mzg7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDE7IHN0YXJ0X2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0MTsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjM5OyBzdGFydF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mzk7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0MDsgc3RhcnRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQwOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubWVuc3VhbGl0ZV9wcmluY2lwYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0Mjsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQyOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NTA7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY1MDsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDU7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0NTsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ0OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDQ7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDc7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0ODsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjQ4OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2NDM7IHN0YXJ0X2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY0MzsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5jb3Byb3ByaWV0ZSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ5OyBzdGFydF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NDk7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbTBfOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIHBhcmFtMF8pKSkpKSkpfSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYzNjsgc3RhcnRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjUxOyBlbmRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIChyYWlzZSBFbXB0eUVycm9yKSkpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAwMzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICh1bmVtYmVkZGFibGUpIChcbiAgICB0cnlcbiAgICAgIChmdW4gKGFyZ186IG1vbmV5KSAtPiBcbiAgICAgICAgIHRyeVxuICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMDY7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDA2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDA4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQwODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgKHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKVxuICAgICAgICAgICAgICAgICAgIGFyZ18pKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDA2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMDU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDA2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgc291c19jYWxjdWxfdHJhaXRlbWVudF8uVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV99XG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4udCkgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50Lm3DqW5hZ2VcIl0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzg7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc4OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3ODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuZGVtYW5kZXVyXCJdIChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgyOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwODI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODI7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50LmLDqW7DqWZpY2llX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIl1cbiAgICAgIChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0OTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwNDk7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTA0OTsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDk7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDQ5OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjsgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnRcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21lbmFnZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2JlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yXzogVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQubcOpbmFnZVwiXSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA3NjsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzY7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc2OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LmRlbWFuZGV1clwiXVxuICAgICAgKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODA7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgwOyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA4MDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg0OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXSAoZW1iZWRfbW9kZV9vY2N1cGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MDsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQucmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTQ7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NDsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXzogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnNpdHVhdGlvbl9mYW1pbGlhbGVcIl1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwOTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5ODsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTg7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk4OyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwNTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTA1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuem9uZVwiXVxuICAgICAgKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDk7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTExMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTEzOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExMTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTExMzsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTExMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTEzOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQudHlwZV9haWRlXCJdXG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgIChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKVxuICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKCkpXG4gICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAoVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA2NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7IFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXVxuICAgICAgKGVtYmVkX21vZGVfb2NjdXBhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDg4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwODg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnR5cGVfYWlkZVwiXVxuICAgICAgKGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgKCkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDYzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNjM7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiOyBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5yZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpXCJdXG4gICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDkyOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDkyOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDk2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTY7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDk2OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA5NjsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExMDE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExMDE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExMDE7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50LnpvbmVcIl0gKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTEwNzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMDc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTExOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTExOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTE7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjsgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90eXBlX2FpZGVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIChlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbCkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDcyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNzI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTE2OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDcyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwNjg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA2ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA1NDsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fb3IgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgKG1hdGNoIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA2ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKHVuZW1iZWRkYWJsZSkgKFxuICAgIHRyeVxuICAgICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDcwOyBzdGFydF9jb2x1bW49MTI7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA3MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA5MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfYXBsXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfYWxfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICggaWYgKG9fbm90IGVsaWdpYmlsaXRlXykgdGhlbiBhaWRlX2ZpbmFsZV8gZWxzZVxuICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBhaWRlX2ZpbmFsZV9hcGxfIGFpZGVfZmluYWxlX2FsXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV9hcGxfIGVsc2UgYWlkZV9maW5hbGVfYWxfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV9hcGxfIGVsc2UgYWlkZV9maW5hbGVfYWxfKSkpKSkpKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDcwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDcwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7IFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDY5OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNjk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzU7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fbm90IGVsaWdpYmlsaXRlXykgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTA2OTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiOyBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5lbGlnaWJpbGl0ZSA9IGVsaWdpYmlsaXRlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV99XG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUudCA9XG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5tZW5hZ2VfaW4gaW5cbiAgbGV0IGRlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLmRlbWFuZGV1cl9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gaW5cbiAgbGV0IG1lbmFnZV9zYW5zX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfOiBNZW5hZ2UudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJtw6luYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVcIl0gKGVtYmVkX21lbmFnZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzNTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTY3OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIHtNZW5hZ2UucHJlc3RhdGlvbnNfcmVjdWVzID0gKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlcyk7XG4gICAgICAgICAgICAgICBNZW5hZ2UubG9nZW1lbnQgPSAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpO1xuICAgICAgICAgICAgICAgTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSk7XG4gICAgICAgICAgICAgICBNZW5hZ2Uubm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uubm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQpO1xuICAgICAgICAgICAgICAgTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSk7XG4gICAgICAgICAgICAgICBNZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSk7XG4gICAgICAgICAgICAgICBNZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKX0pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzNTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGUubcOpbmFnZVwiXVxuICAgICAgKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0NjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQ2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGUuZGVtYW5kZXVyXCJdXG4gICAgICAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0ODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQ4OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTUwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTA7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZS5yZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTUyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGVcIjtcbiAgICAgIFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZVwiO1xuICAgICAgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQpXG4gICAgKHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ubWVuYWdlX2luID0gY2FsY3VsZXR0ZV9kb3RfbWVuYWdlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9IGNhbGN1bGV0dGVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVffSkpKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5tw6luYWdlXCJdIChlbWJlZF9tZW5hZ2UpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTU0OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybmVlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTU0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTQ7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLmRlbWFuZGV1clwiXSAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1NjsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTU2OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTU2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTY7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llLmRhdGVfY291cmFudGVcIl0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTU4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTg7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5yZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXVxuICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExNjE7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMTYxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTYxOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTE2MTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjE7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMTYxOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZVwiOyBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWVcIjsgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdXG4gICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudClcbiAgICAoe0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X21lbmFnZV87XG4gICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luID1cbiAgICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVffSkpKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiw6lsaWdpYmlsaXTDqVwiXSAoZW1iZWRfYm9vbClcbiAgICAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTQyOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTkzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExOTM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxldHRlX2RvdF9lbGlnaWJpbGl0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNDI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE0MjsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAgKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTEzNjsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTY1OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTM2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExMzY7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiYWlkZV9maW5hbGVcIl0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTQzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExNDM7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODQ7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDb25zZWlsIGQnw4l0YXQsIDXDqG1lIC0gNMOobWUgY2hhbWJyZXMgcsOpdW5pZXMsIDIxLzA3LzIwMTcsIDM5ODU2M1wiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICBjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXylcbiAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pXG4gICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpKSkpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTQzOyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLmFpZGVfZmluYWxlID0gYWlkZV9maW5hbGVffVxuIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5vcGVuIFJ1bnRpbWVfanNvby5SdW50aW1lXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEFpZGVzX2xvZ2VtZW50XG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHR5cGVfcHJldCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkQzMzFfMzJcIlxuICAgICAgICAtIFwiRDMzMV82M182NFwiXG4gICAgICAgIC0gXCJEMzMxXzU5XzhcIlxuICAgICAgICAtIFwiRDMzMV83Nl8xXCJcbiAgICAgICAgLSBcIkF1dHJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9wcmV0X3RvX2pzb28gOiBUeXBlUHJldC50IC0+IHR5cGVfcHJldCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEMzMxXzMyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRDMzMV8zMlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEQzMzFfNjNfNjQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzYzXzY0XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRDMzMV81OV84IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRDMzMV81OV84XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRDMzMV83Nl8xIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRDMzMV83Nl8xXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9wcmV0X29mX2pzb28gKHR5cGVfcHJldCA6IHR5cGVfcHJldCBKcy50KSA6IFR5cGVQcmV0LnQgPVxuICBtYXRjaCB0eXBlX3ByZXQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEMzMxXzMyXCIgLT4gVHlwZVByZXQuRDMzMV8zMiAoKVxuICB8IFwiRDMzMV82M182NFwiIC0+IFR5cGVQcmV0LkQzMzFfNjNfNjQgKClcbiAgfCBcIkQzMzFfNTlfOFwiIC0+IFR5cGVQcmV0LkQzMzFfNTlfOCAoKVxuICB8IFwiRDMzMV83Nl8xXCIgLT4gVHlwZVByZXQuRDMzMV83Nl8xICgpXG4gIHwgXCJBdXRyZVwiIC0+IFR5cGVQcmV0LkF1dHJlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlUHJldC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0aXR1bGFpcmVfcHJldCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRlbWFuZGV1clwiXG4gICAgICAgIC0gXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdGl0dWxhaXJlX3ByZXRfdG9fanNvbyA6IFRpdHVsYWlyZVByZXQudCAtPiB0aXR1bGFpcmVfcHJldCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEZW1hbmRldXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEZW1hbmRldXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdGl0dWxhaXJlX3ByZXRfb2ZfanNvbyAodGl0dWxhaXJlX3ByZXQgOiB0aXR1bGFpcmVfcHJldCBKcy50KVxuICA6IFRpdHVsYWlyZVByZXQudCA9XG4gIG1hdGNoIHRpdHVsYWlyZV9wcmV0IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRGVtYW5kZXVyXCIgLT4gVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgKClcbiAgfCBcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIiAtPlxuICAgIFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVGl0dWxhaXJlUHJldC50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIlxuICAgICAgICAtIFwiVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMlwiXG4gICAgICAgIC0gXCJQYXNEZVRyYXZhdXhcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV90b19qc29vXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50IC0+IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJUcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQYXNEZVRyYXZhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNEZVRyYXZhdXhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X29mX2pzb29cbiAgKHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IDogdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudClcbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgPVxuICBtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSAoKVxuICB8IFwiVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMlwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yICgpXG4gIHwgXCJQYXNEZVRyYXZhdXhcIiAtPiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlBhc0RlVHJhdmF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnRcIlxuICAgICAgICAtIFwiUHJldnVEYW5zTGlzdGVSMzIxXzE1XCJcbiAgICAgICAgLSBcIkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzXCJcbiAgICAgICAgLSBcIlBhc0RlVHJhdmF1eFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdG9fanNvb1xuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50IC0+IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJPYmplY3RpZkRlY2VuY2VMb2dlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFByZXZ1RGFuc0xpc3RlUjMyMV8xNSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXZ1RGFuc0xpc3RlUjMyMV8xNVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQYXNEZVRyYXZhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNEZVRyYXZhdXhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfb2ZfanNvb1xuICAodHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSA6IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudClcbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudCA9XG4gIG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJPYmplY3RpZkRlY2VuY2VMb2dlbWVudFwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50ICgpXG4gIHwgXCJQcmV2dURhbnNMaXN0ZVIzMjFfMTVcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgKClcbiAgfCBcIkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzXCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgKClcbiAgfCBcIlBhc0RlVHJhdmF1eFwiIC0+IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBhbWVsaW9yZV9wYXJfb2NjdXBhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJPdWlcIlxuICAgICAgICAtIFwiTm9uXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb29cbiAgOiBBbWVsaW9yZVBhck9jY3VwYW50LnQgLT4gYW1lbGlvcmVfcGFyX29jY3VwYW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE91aSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgYW1lbGlvcmVfcGFyX29jY3VwYW50X29mX2pzb29cbiAgKGFtZWxpb3JlX3Bhcl9vY2N1cGFudCA6IGFtZWxpb3JlX3Bhcl9vY2N1cGFudCBKcy50KVxuICA6IEFtZWxpb3JlUGFyT2NjdXBhbnQudCA9XG4gIG1hdGNoIGFtZWxpb3JlX3Bhcl9vY2N1cGFudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk91aVwiIC0+IEFtZWxpb3JlUGFyT2NjdXBhbnQuT3VpICgpXG4gIHwgXCJOb25cIiAtPiBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQW1lbGlvcmVQYXJPY2N1cGFudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsaW1pdGVfdHJhbmNoZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlJldmVudVwiXG4gICAgICAgIC0gXCJJbmZpbmlcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV90b19qc29vIDogTGltaXRlVHJhbmNoZS50IC0+IGxpbWl0ZV90cmFuY2hlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFJldmVudSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJldmVudVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IEluZmluaSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkluZmluaVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbGltaXRlX3RyYW5jaGVfb2ZfanNvbyAobGltaXRlX3RyYW5jaGUgOiBsaW1pdGVfdHJhbmNoZSBKcy50KVxuICA6IExpbWl0ZVRyYW5jaGUudCA9XG4gIG1hdGNoIGxpbWl0ZV90cmFuY2hlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUmV2ZW51XCIgLT5cbiAgTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgbGltaXRlX3RyYW5jaGUjIy5wYXlsb2FkKSlcbiAgfCBcIkluZmluaVwiIC0+IExpbWl0ZVRyYW5jaGUuSW5maW5pICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdMaW1pdGVUcmFuY2hlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJSZXZlbnVcIlxuICAgICAgICAtIFwiSW5maW5pXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbGltaXRlX3RyYW5jaGVfZGVjaW1hbF90b19qc29vXG4gIDogTGltaXRlVHJhbmNoZURlY2ltYWwudCAtPiBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFJldmVudSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJldmVudVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgSW5maW5pIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW5maW5pXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX29mX2pzb29cbiAgKGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgOiBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIEpzLnQpXG4gIDogTGltaXRlVHJhbmNoZURlY2ltYWwudCA9XG4gIG1hdGNoIGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJSZXZlbnVcIiAtPlxuICBMaW1pdGVUcmFuY2hlRGVjaW1hbC5SZXZlbnUgKGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwjIy5wYXlsb2FkKSlcbiAgfCBcIkluZmluaVwiIC0+IExpbWl0ZVRyYW5jaGVEZWNpbWFsLkluZmluaSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTGltaXRlVHJhbmNoZURlY2ltYWwudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJlc3RhdGlvbl9yZWN1ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXG4gICAgICAgIC0gXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpldW5lRW5mYW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHByZXN0YXRpb25fcmVjdWVfdG9fanNvbyA6IFByZXN0YXRpb25SZWN1ZS50IC0+IHByZXN0YXRpb25fcmVjdWUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29tcGxlbWVudEZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29tcGxlbWVudEZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkpldW5lRW5mYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkpldW5lRW5mYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByZXN0YXRpb25fcmVjdWVfb2ZfanNvbyAocHJlc3RhdGlvbl9yZWN1ZSA6IHByZXN0YXRpb25fcmVjdWUgSnMudClcbiAgOiBQcmVzdGF0aW9uUmVjdWUudCA9XG4gIG1hdGNoIHByZXN0YXRpb25fcmVjdWUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPiBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPiBQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uSmV1bmVFbmZhbnRcIiAtPiBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbkpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIgLT5cbiAgICBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIiAtPlxuICAgIFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSAoKVxuICB8IFwiQWxsb2NhdGlvbkFkdWx0ZUhhbmRpY2FwZVwiIC0+XG4gICAgUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25BZHVsdGVIYW5kaWNhcGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ByZXN0YXRpb25SZWN1ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwYXJlbnRfb3VfYXV0cmUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyA6IFBhcmVudE91QXV0cmUudCAtPiBwYXJlbnRfb3VfYXV0cmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwYXJlbnRfb3VfYXV0cmVfb2ZfanNvbyAocGFyZW50X291X2F1dHJlIDogcGFyZW50X291X2F1dHJlIEpzLnQpXG4gIDogUGFyZW50T3VBdXRyZS50ID1cbiAgbWF0Y2ggcGFyZW50X291X2F1dHJlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzXCIgLT5cbiAgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgKGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIHBhcmVudF9vdV9hdXRyZSMjLnBheWxvYWQpKVxuICB8IFwiQXV0cmVcIiAtPiBQYXJlbnRPdUF1dHJlLkF1dHJlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQYXJlbnRPdUF1dHJlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlBhc0RlR2FyZGVBbHRlcm5lZVwiXG4gICAgICAgIC0gXCJHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX3RvX2pzb29cbiAgOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQgLT4gc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFBhc0RlR2FyZGVBbHRlcm5lZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlR2FyZGVBbHRlcm5lZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qc29vXG4gIChzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgOiBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgSnMudClcbiAgOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJQYXNEZUdhcmRlQWx0ZXJuZWVcIiAtPiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLlBhc0RlR2FyZGVBbHRlcm5lZSAoKVxuICB8IFwiR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiIC0+XG4gIFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2Ugc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHBhcmVudGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBc2NlbmRhbnRcIlxuICAgICAgICAtIFwiRGVzY2VuZGFudFwiXG4gICAgICAgIC0gXCJDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhcmVudGVfdG9fanNvbyA6IFBhcmVudGUudCAtPiBwYXJlbnRlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEFzY2VuZGFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFzY2VuZGFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IERlc2NlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEZXNjZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGFyZW50ZV9vZl9qc29vIChwYXJlbnRlIDogcGFyZW50ZSBKcy50KSA6IFBhcmVudGUudCA9XG4gIG1hdGNoIHBhcmVudGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBc2NlbmRhbnRcIiAtPiBQYXJlbnRlLkFzY2VuZGFudCAoKVxuICB8IFwiRGVzY2VuZGFudFwiIC0+IFBhcmVudGUuRGVzY2VuZGFudCAoKVxuICB8IFwiQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmVcIiAtPlxuICAgIFBhcmVudGUuQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BhcmVudGUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJEYXRlRGVOYWlzc2FuY2VcIlxuICAgICAgICAtIFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiXG4gICAgICAgIC0gXCJBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VfdG9fanNvb1xuICA6IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLnQgLT4gZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRGF0ZURlTmFpc3NhbmNlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRGF0ZURlTmFpc3NhbmNlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2Vfb2ZfanNvb1xuICAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VcbiAgICA6IGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIEpzLnQpXG4gIDogRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCA9XG4gIG1hdGNoIGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRGF0ZURlTmFpc3NhbmNlXCIgLT5cbiAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuRGF0ZURlTmFpc3NhbmNlIChkYXRlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UjIy5wYXlsb2FkKSlcbiAgfCBcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIiAtPlxuICAgIERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgKClcbiAgfCBcIkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIiAtPlxuICAgIERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0RhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHpvbmVfZF9oYWJpdGF0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiWm9uZTFcIlxuICAgICAgICAtIFwiWm9uZTJcIlxuICAgICAgICAtIFwiWm9uZTNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIDogWm9uZURIYWJpdGF0aW9uLnQgLT4gem9uZV9kX2hhYml0YXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgWm9uZTEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJab25lMVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFpvbmUyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWm9uZTJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBab25lMyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlpvbmUzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vICh6b25lX2RfaGFiaXRhdGlvbiA6IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQpXG4gIDogWm9uZURIYWJpdGF0aW9uLnQgPVxuICBtYXRjaCB6b25lX2RfaGFiaXRhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlpvbmUxXCIgLT4gWm9uZURIYWJpdGF0aW9uLlpvbmUxICgpXG4gIHwgXCJab25lMlwiIC0+IFpvbmVESGFiaXRhdGlvbi5ab25lMiAoKVxuICB8IFwiWm9uZTNcIiAtPiBab25lREhhYml0YXRpb24uWm9uZTMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1pvbmVESGFiaXRhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiT3VpQXZlY0xveWVyT3VDaGFyZ2VzXCJcbiAgICAgICAgLSBcIk5vblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWxfdG9fanNvb1xuICA6IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwudCAtPiBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE91aUF2ZWNMb3llck91Q2hhcmdlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9vZl9qc29vXG4gIChwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsXG4gICAgOiBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnQpXG4gIDogUGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbC50ID1cbiAgbWF0Y2ggcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk91aUF2ZWNMb3llck91Q2hhcmdlc1wiIC0+XG4gIFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuT3VpQXZlY0xveWVyT3VDaGFyZ2VzIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIChKcy5VbnNhZmUuY29lcmNlIHBhaWVtZW50X2xvZ2VtZW50X2Rpc3RpbmN0X3Byb2Zlc3Npb25uZWwjIy5wYXlsb2FkKSlcbiAgfCBcIk5vblwiIC0+IFBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWwuTm9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQmFpbGxldXJcIlxuICAgICAgICAtIFwiQmVuZWZpY2lhaXJlXCJcbiAgICAgICAgLSBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHZlcnNlbWVudF9hX3RvX2pzb28gOiBWZXJzZW1lbnRBLnQgLT4gdmVyc2VtZW50X2EgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQmFpbGxldXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEJlbmVmaWNpYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJlbmVmaWNpYWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2Ffb2ZfanNvbyAodmVyc2VtZW50X2EgOiB2ZXJzZW1lbnRfYSBKcy50KSA6IFZlcnNlbWVudEEudCA9XG4gIG1hdGNoIHZlcnNlbWVudF9hIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQmFpbGxldXJcIiAtPiBWZXJzZW1lbnRBLkJhaWxsZXVyICgpXG4gIHwgXCJCZW5lZmljaWFpcmVcIiAtPiBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSAoKVxuICB8IFwiRXRhYmxpc3NlbWVudEhhYmlsaXRlXCIgLT4gVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEEudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZGVwZW5zZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlRvdGFsQW5udWVsRWNoZWFuY2VzXCJcbiAgICAgICAgLSBcIk1lbnN1YWxpdGVcIlxuICAgICAgICAtIFwiTG95ZXJcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28gOiBEZXBlbnNlTG9nZW1lbnQudCAtPiBkZXBlbnNlX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVG90YWxBbm51ZWxFY2hlYW5jZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBNZW5zdWFsaXRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWVuc3VhbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IExveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcblxubGV0IGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyAoZGVwZW5zZV9sb2dlbWVudCA6IGRlcGVuc2VfbG9nZW1lbnQgSnMudClcbiAgOiBEZXBlbnNlTG9nZW1lbnQudCA9XG4gIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJUb3RhbEFubnVlbEVjaGVhbmNlc1wiIC0+XG4gIERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBkZXBlbnNlX2xvZ2VtZW50IyMucGF5bG9hZCkpXG4gIHwgXCJNZW5zdWFsaXRlXCIgLT5cbiAgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IFwiTG95ZXJcIiAtPlxuICBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGVwZW5zZUxvZ2VtZW50LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJJbXBheWVMb3llclwiXG4gICAgICAgIC0gXCJJbXBheWVQcmV0XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vXG4gIDogTW9kZU9jY3VwYXRpb25JbXBheWUudCAtPiBtb2RlX29jY3VwYXRpb25faW1wYXllIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEltcGF5ZUxveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBJbXBheWVQcmV0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllUHJldFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vXG4gIChtb2RlX29jY3VwYXRpb25faW1wYXllIDogbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSBKcy50KVxuICA6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgPVxuICBtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiSW1wYXllTG95ZXJcIiAtPiBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciAoKVxuICB8IFwiSW1wYXllUHJldFwiIC0+IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ01vZGVPY2N1cGF0aW9uSW1wYXllLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlBhc0VsaWdpYmxlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvX2pzb29cbiAgOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCAtPiB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGFzRWxpZ2libGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNFbGlnaWJsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAodHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgOiB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudClcbiAgOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gIG1hdGNoIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0VsaWdpYmxlXCIgLT4gVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiAtPlxuICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAtPlxuICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgLT4gdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgKHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpXG4gIDogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgbWF0Y2ggdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRcIiAtPlxuICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIgLT5cbiAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSAoKVxuICB8IFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiIC0+XG4gICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJDZWxpYmF0YWlyZVwiXG4gICAgICAgIC0gXCJNYXJpZXNcIlxuICAgICAgICAtIFwiUGFjc2VzXCJcbiAgICAgICAgLSBcIkNvbmN1Ymluc1wiXG4gICAgICAgIC0gXCJDZWxpYmF0YWlyZVNlcGFyZURlRmFpdFwiXG4gICAgICAgIC0gXCJDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXRcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb29cbiAgOiBTaXR1YXRpb25GYW1pbGlhbGUudCAtPiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IENlbGliYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ2VsaWJhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBNYXJpZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXJpZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBQYWNzZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYWNzZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb25jdWJpbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb25jdWJpbnNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgKHNpdHVhdGlvbl9mYW1pbGlhbGUgOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQpIDogU2l0dWF0aW9uRmFtaWxpYWxlLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQ2VsaWJhdGFpcmVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgKClcbiAgfCBcIk1hcmllc1wiIC0+XG4gIFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgKGRhdGVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBzaXR1YXRpb25fZmFtaWxpYWxlIyMucGF5bG9hZCkpXG4gIHwgXCJQYWNzZXNcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzICgpXG4gIHwgXCJDb25jdWJpbnNcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zICgpXG4gIHwgXCJDZWxpYmF0YWlyZVNlcGFyZURlRmFpdFwiIC0+XG4gICAgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlU2VwYXJlRGVGYWl0ICgpXG4gIHwgXCJDb25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXRcIiAtPlxuICAgIFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbkZhbWlsaWFsZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwcmlzZV9lbl9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgICAtIFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiXG4gICAgICAgIC0gXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyA6IFByaXNlRW5DaGFyZ2UudCAtPiBwcmlzZV9lbl9jaGFyZ2UgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW5jZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV9vZl9qc29vIChwcmlzZV9lbl9jaGFyZ2UgOiBwcmlzZV9lbl9jaGFyZ2UgSnMudClcbiAgOiBQcmlzZUVuQ2hhcmdlLnQgPVxuICBtYXRjaCBwcmlzZV9lbl9jaGFyZ2UjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZVwiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5SZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJSZXNpZGVuY2VBbHRlcm5lZUFsbG9jYXRpb25zUGFydGFnZWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuUmVzaWRlbmNlQWx0ZXJuZWVBbGxvY2F0aW9uc1BhcnRhZ2VlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ2hhcmdlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlc1wiXG4gICAgICAgIC0gXCJSZXNpZGVuY2VTb2NpYWxlXCJcbiAgICAgICAgLSBcIkZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1XCJcbiAgICAgICAgLSBcIkF1dHJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vXG4gIDogVHlwZUxvZ2VtZW50Rm95ZXIudCAtPiB0eXBlX2xvZ2VtZW50X2ZveWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IExvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBSZXNpZGVuY2VTb2NpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbmNlU29jaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEZveWVySmV1bmVzVHJ2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgKHR5cGVfbG9nZW1lbnRfZm95ZXIgOiB0eXBlX2xvZ2VtZW50X2ZveWVyIEpzLnQpIDogVHlwZUxvZ2VtZW50Rm95ZXIudCA9XG4gIG1hdGNoIHR5cGVfbG9nZW1lbnRfZm95ZXIjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlc1wiIC0+XG4gICAgVHlwZUxvZ2VtZW50Rm95ZXIuTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgKClcbiAgfCBcIlJlc2lkZW5jZVNvY2lhbGVcIiAtPiBUeXBlTG9nZW1lbnRGb3llci5SZXNpZGVuY2VTb2NpYWxlICgpXG4gIHwgXCJGb3llckpldW5lc1RydmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiIC0+XG4gICAgVHlwZUxvZ2VtZW50Rm95ZXIuRm95ZXJKZXVuZXNUcnZhaWxsZXVyc091TWlncmFudHNDb252ZW50aW9ubmVMMzUzXzJBdmFudDE5OTUgKClcbiAgfCBcIkF1dHJlXCIgLT4gVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVMb2dlbWVudEZveWVyLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNcIlxuICAgICAgICAtIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZVwiXG4gICAgICAgIC0gXCJQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNlwiXG4gICAgICAgIC0gXCJBdXRyZXNQZXJzb25uZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl90b19qc29vXG4gIDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgLT4gY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlc1BlcnNvbm5lcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlc1BlcnNvbm5lc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAoY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICA6IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnQpXG4gIDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICBtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmtpbmRcbiAgICB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyAoKVxuICB8IFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZVwiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgKClcbiAgfCBcIlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2XCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgKClcbiAgfCBcIkF1dHJlc1BlcnNvbm5lc1wiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGVyc29ubmVTZXVsZVwiXG4gICAgICAgIC0gXCJDb3VwbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGVyc29ubmVTZXVsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlcnNvbm5lU2V1bGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb3VwbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb3VwbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgKHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIDogc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudClcbiAgOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUGVyc29ubmVTZXVsZVwiIC0+IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpXG4gIHwgXCJDb3VwbGVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY29sbGVjdGl2aXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiR3VhZGVsb3VwZVwiXG4gICAgICAgIC0gXCJHdXlhbmVcIlxuICAgICAgICAtIFwiTWFydGluaXF1ZVwiXG4gICAgICAgIC0gXCJMYVJldW5pb25cIlxuICAgICAgICAtIFwiU2FpbnRCYXJ0aGVsZW15XCJcbiAgICAgICAgLSBcIlNhaW50TWFydGluXCJcbiAgICAgICAgLSBcIk1ldHJvcG9sZVwiXG4gICAgICAgIC0gXCJTYWludFBpZXJyZUV0TWlxdWVsb25cIlxuICAgICAgICAtIFwiTWF5b3R0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNvbGxlY3Rpdml0ZV90b19qc29vIDogQ29sbGVjdGl2aXRlLnQgLT4gY29sbGVjdGl2aXRlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEd1YWRlbG91cGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHdWFkZWxvdXBlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR3V5YW5lIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR3V5YW5lXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWFydGluaXF1ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1hcnRpbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBMYVJldW5pb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMYVJldW5pb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludEJhcnRoZWxlbXkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludEJhcnRoZWxlbXlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTYWludE1hcnRpbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50TWFydGluXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWV0cm9wb2xlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWV0cm9wb2xlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWF5b3R0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1heW90dGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGNvbGxlY3Rpdml0ZV9vZl9qc29vIChjb2xsZWN0aXZpdGUgOiBjb2xsZWN0aXZpdGUgSnMudClcbiAgOiBDb2xsZWN0aXZpdGUudCA9XG4gIG1hdGNoIGNvbGxlY3Rpdml0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkd1YWRlbG91cGVcIiAtPiBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKVxuICB8IFwiR3V5YW5lXCIgLT4gQ29sbGVjdGl2aXRlLkd1eWFuZSAoKVxuICB8IFwiTWFydGluaXF1ZVwiIC0+IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpXG4gIHwgXCJMYVJldW5pb25cIiAtPiBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpXG4gIHwgXCJTYWludEJhcnRoZWxlbXlcIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpXG4gIHwgXCJTYWludE1hcnRpblwiIC0+IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKVxuICB8IFwiTWV0cm9wb2xlXCIgLT4gQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKVxuICB8IFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiAoKVxuICB8IFwiTWF5b3R0ZVwiIC0+IENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdDb2xsZWN0aXZpdGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcHJpc2VfZW5fY2hhcmdlX2VuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX2VuZmFudF90b19qc29vXG4gIDogUHJpc2VFbkNoYXJnZUVuZmFudC50IC0+IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFZmZlY3RpdmVFdFBlcm1hbmVudGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfb2ZfanNvb1xuICAocHJpc2VfZW5fY2hhcmdlX2VuZmFudCA6IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudClcbiAgOiBQcmlzZUVuQ2hhcmdlRW5mYW50LnQgPVxuICBtYXRjaCBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZUVuZmFudC5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlRW5mYW50LkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2VFbmZhbnQuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZUVuZmFudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgICAtIFwiQWxsb2NhdGlvbkpvdXJuYWxpZXJlUHJlc2VuY2VQYXJlbnRhbGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICA6IEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlByZXN0YXRpb25BY2N1ZWlsSmV1bmVFbmZhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkVkdWNhdGlvbkVuZmFudEhhbmRpY2FwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25SZW50cmVlU2NvbGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Kb3VybmFsaWVyZVByZXNlbmNlUGFyZW50YWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAoZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpXG4gIDogRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbWF0Y2ggZWxlbWVudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiUHJlc3RhdGlvbkFjY3VlaWxKZXVuZUVuZmFudFwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5QcmVzdGF0aW9uQWNjdWVpbEpldW5lRW5mYW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvbkxvZ2VtZW50ICgpXG4gIHwgXCJBbGxvY2F0aW9uRWR1Y2F0aW9uRW5mYW50SGFuZGljYXBlXCIgLT5cbiAgICBFbGVtZW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLkFsbG9jYXRpb25FZHVjYXRpb25FbmZhbnRIYW5kaWNhcGUgKClcbiAgfCBcIkFsbG9jYXRpb25Tb3V0aWVuRmFtaWxpYWxcIiAtPlxuICAgIEVsZW1lbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblJlbnRyZWVTY29sYWlyZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uUmVudHJlZVNjb2xhaXJlICgpXG4gIHwgXCJBbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZVwiIC0+XG4gICAgRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy5BbGxvY2F0aW9uSm91cm5hbGllcmVQcmVzZW5jZVBhcmVudGFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRWxlbWVudFByZXN0YXRpb25zRmFtaWxpYWxlcy50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZVBlcmN1ZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX3RvX2pzb28gKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsXG4gICAgOiBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudCkgOiBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUkgPVxuICAgICAgICBKcy5ib29sIGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVxuICAgICAgdmFsIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZVBlcmN1ZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbC5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWVcbiAgICAgIGVuZFxuICBsZXQgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfb2ZfanNvb1xuICAgIChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCA6IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIEpzLnQpIDpcbiAgICBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudCA9XG4gICAge1xuICAgICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIyMuY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJO1xuICAgICAgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIyMucmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlUGVyY3VlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbnZlbnRpb25fYV9uX2hfYSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlSUlDaGFwSVNlYzM6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY29udmVudGlvbl9hX25faF9hX3RvX2pzb28gKGNvbnZlbnRpb25fYV9uX2hfYSA6IENvbnZlbnRpb25BTkhBLnQpXG4gICAgOiBjb252ZW50aW9uX2Ffbl9oX2EgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZUlJQ2hhcElTZWMzID1cbiAgICAgICAgSnMuYm9vbCBjb252ZW50aW9uX2Ffbl9oX2EuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzNcbiAgICAgIGVuZFxuICBsZXQgY29udmVudGlvbl9hX25faF9hX29mX2pzb29cbiAgICAoY29udmVudGlvbl9hX25faF9hIDogY29udmVudGlvbl9hX25faF9hIEpzLnQpIDogQ29udmVudGlvbkFOSEEudCA9XG4gICAge1xuICAgICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzMgPVxuICAgICAgICBKcy50b19ib29sIGNvbnZlbnRpb25fYV9uX2hfYSMjLmNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVJSUNoYXBJU2VjM1xuICAgIH1cblxuY2xhc3MgdHlwZSBwZXJzb25uZV9zb3VzX2xvY2F0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVOYWlzc2FuY2VQZXJzb25uZVNvdXNMb2NhdGlvbjpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZm9ybWVBcnRpY2xlTDQ0MjE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIChwZXJzb25uZV9zb3VzX2xvY2F0aW9uXG4gICAgOiBQZXJzb25uZVNvdXNMb2NhdGlvbi50KSA6IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZVBlcnNvbm5lU291c0xvY2F0aW9uID1cbiAgICAgICAgZGF0ZV90b19qc29vIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvblxuICAgICAgdmFsIGNvbmZvcm1lQXJ0aWNsZUw0NDIxID1cbiAgICAgICAgSnMuYm9vbCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uLmNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xXG4gICAgICBlbmRcbiAgbGV0IHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvb1xuICAgIChwZXJzb25uZV9zb3VzX2xvY2F0aW9uIDogcGVyc29ubmVfc291c19sb2NhdGlvbiBKcy50KSA6XG4gICAgUGVyc29ubmVTb3VzTG9jYXRpb24udCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24jIy5kYXRlTmFpc3NhbmNlUGVyc29ubmVTb3VzTG9jYXRpb247XG4gICAgICBjb25mb3JtZV9hcnRpY2xlX2w0NDJfMSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgcGVyc29ubmVfc291c19sb2NhdGlvbiMjLmNvbmZvcm1lQXJ0aWNsZUw0NDIxXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBhdHJpbW9pbmUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcHJvZHVpc2FudFJldmVudVBlcmlvZGVSODIyMzNSODIyNDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbmVQcm9kdWlzYW50UGFzUmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0OlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHBhdHJpbW9pbmVfdG9fanNvbyAocGF0cmltb2luZSA6IFBhdHJpbW9pbmUudCkgOiBwYXRyaW1vaW5lIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHByb2R1aXNhbnRSZXZlbnVQZXJpb2RlUjgyMjMzUjgyMjQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcGF0cmltb2luZS5wcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNFxuICAgICAgdmFsIG5lUHJvZHVpc2FudFBhc1JldmVudVBlcmlvZGVSODIyMzNSODIyNCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwYXRyaW1vaW5lLm5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNFxuICAgICAgZW5kXG4gIGxldCBwYXRyaW1vaW5lX29mX2pzb28gKHBhdHJpbW9pbmUgOiBwYXRyaW1vaW5lIEpzLnQpIDogUGF0cmltb2luZS50ID1cbiAgICB7XG4gICAgICBwcm9kdWlzYW50X3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwYXRyaW1vaW5lIyMucHJvZHVpc2FudFJldmVudVBlcmlvZGVSODIyMzNSODIyNDtcbiAgICAgIG5lX3Byb2R1aXNhbnRfcGFzX3JldmVudV9wZXJpb2RlX3I4MjJfM18zX3I4MjJfNCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwYXRyaW1vaW5lIyMubmVQcm9kdWlzYW50UGFzUmV2ZW51UGVyaW9kZVI4MjIzM1I4MjI0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbmRpdGlvbnNfZXRyYW5nZXJzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHNhdGlzZmFpdENvbmRpdGlvbnNMNTEyMkNvZGVTZWN1cml0ZVNvY2lhbGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbmRpdGlvbnNfZXRyYW5nZXJzX3RvX2pzb28gKGNvbmRpdGlvbnNfZXRyYW5nZXJzXG4gICAgOiBDb25kaXRpb25zRXRyYW5nZXJzLnQpIDogY29uZGl0aW9uc19ldHJhbmdlcnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgc2F0aXNmYWl0Q29uZGl0aW9uc0w1MTIyQ29kZVNlY3VyaXRlU29jaWFsZSA9XG4gICAgICAgIEpzLmJvb2wgY29uZGl0aW9uc19ldHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZVxuICAgICAgZW5kXG4gIGxldCBjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vXG4gICAgKGNvbmRpdGlvbnNfZXRyYW5nZXJzIDogY29uZGl0aW9uc19ldHJhbmdlcnMgSnMudCkgOlxuICAgIENvbmRpdGlvbnNFdHJhbmdlcnMudCA9XG4gICAge1xuICAgICAgc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjb25kaXRpb25zX2V0cmFuZ2VycyMjLnNhdGlzZmFpdENvbmRpdGlvbnNMNTEyMkNvZGVTZWN1cml0ZVNvY2lhbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGR1cmVlUmVzaWRlbmNlRHVyYW50UGVyaW9kZVI4MjIzMVN1cGVyaWV1cmVBNk1vaXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX3RvX2pzb29cbiAgICAocGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyXG4gICAgOiBQZXJzb25uZVZpdmFudEhhYml0dWVsbGVtZW50QXVGb3llci50KVxuICAgIDogcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGR1cmVlUmVzaWRlbmNlRHVyYW50UGVyaW9kZVI4MjIzMVN1cGVyaWV1cmVBNk1vaXMgPVxuICAgICAgICBKcy5ib29sIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llci5kdXJlZV9yZXNpZGVuY2VfZHVyYW50X3BlcmlvZGVfcl84MjJfM18xX3N1cGVyaWV1cmVfYV82X21vaXNcbiAgICAgIHZhbCByZXNzb3VyY2VzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llci5yZXNzb3VyY2VzXG4gICAgICBlbmRcbiAgbGV0IHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llcl9vZl9qc29vXG4gICAgKHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llclxuICAgICAgOiBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIgSnMudCkgOlxuICAgIFBlcnNvbm5lVml2YW50SGFiaXR1ZWxsZW1lbnRBdUZveWVyLnQgPVxuICAgIHtcbiAgICAgIGR1cmVlX3Jlc2lkZW5jZV9kdXJhbnRfcGVyaW9kZV9yXzgyMl8zXzFfc3VwZXJpZXVyZV9hXzZfbW9pcyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXJcbiAgICAgICAgICAjIy5kdXJlZVJlc2lkZW5jZUR1cmFudFBlcmlvZGVSODIyMzFTdXBlcmlldXJlQTZNb2lzO1xuICAgICAgcmVzc291cmNlcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwZXJzb25uZV92aXZhbnRfaGFiaXR1ZWxsZW1lbnRfYXVfZm95ZXIjIy5yZXNzb3VyY2VzXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGU6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZWxpZ2liaWxpdGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZTogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZTpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy5ib29sIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZSA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcbiAgICAgIHZhbCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB4KSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZSA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQjIy5kYXRlQ291cmFudGU7XG4gICAgICBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZTtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICAgICAgIyMuY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRQcmltZURlbWVuYWdlbWVudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC50KVxuICAgIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnRQcmltZURlbWVuYWdlbWVudCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQubW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCMjLm1vbnRhbnRQcmltZURlbWVuYWdlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0IG1ldGhvZCByZXNzb3VyY2VzUHJpc2VzRW5Db21wdGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIDogUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KVxuICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzUHJpc2VzRW5Db21wdGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5yZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGVcbiAgICAgIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSA6XG4gICAgUmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICByZXNzb3VyY2VzX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCMjLnJlc3NvdXJjZXNQcmlzZXNFbkNvbXB0ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vbnRhbnQ6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgbWV0aG9kIG1vbnRhbnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5tb250YW50IFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbW9udGFudCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRMb3llckQ4MjMxNjI6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFydGljaXBhdGlvbk1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlc0Q4MjMxNiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZcbiAgICAgIHZhbCBwbGFmb25kTG95ZXJEODIzMTYyID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMlxuICAgICAgdmFsIHBhcnRpY2lwYXRpb25NaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZVxuICAgICAgdmFsIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIHBhcnRpY2lwYXRpb25QZXJzb25uZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgICAgICAjIy5tb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2O1xuICAgICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzIgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIyMucGxhZm9uZExveWVyRDgyMzE2MjtcbiAgICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIyMucGFydGljaXBhdGlvbk1pbmltYWxlO1xuICAgICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgICAgICMjLnRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZTtcbiAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICAgICAgIyMucGFydGljaXBhdGlvblBlcnNvbm5lbGxlO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50KVxuICAgIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm1vbnRhbnRcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX29mX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50KSA6XG4gICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3QgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciA6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIyMubk5vbWJyZVBhcnRzRDgzMjI1XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29lZmZpY2llbnRNdWx0aXBsaWNhdGV1ckQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFJEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVxdWl2YWxlbmNlTG95ZXJFbGlnaWJsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XG4gICAgICB2YWwgY29lZmZpY2llbnRSRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1XG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVcbiAgICAgIHZhbCBwbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZVxuICAgICAgdmFsIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgICAgICAjIy5jb2VmZmljaWVudE11bHRpcGxpY2F0ZXVyRDgzMjI1O1xuICAgICAgY29lZmZpY2llbnRfcl9kODMyXzI1ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5jb2VmZmljaWVudFJEODMyMjU7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMubk5vbWJyZVBhcnRzRDgzMjI1O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLmVxdWl2YWxlbmNlTG95ZXJFbGlnaWJsZTtcbiAgICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgICAgICAgICMjLnBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGU7XG4gICAgICBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMuZXF1aXZhbGVuY2VMb3llck1pbmltYWxlO1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgICAgICAjIy5jb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjU7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSA9XG4gIG9iamVjdCBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjExOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG5Ob21icmVQYXJ0c0Q4MzIxMSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgIHtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSMjLm5Ob21icmVQYXJ0c0Q4MzIxMVxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuc3VhbGl0ZUVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVNaW5pbWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMTA6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5zdWFsaXRlRWxpZ2libGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGVcbiAgICAgIHZhbCBtZW5zdWFsaXRlTWluaW1hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGVcbiAgICAgIHZhbCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMTAgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBtZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLm1lbnN1YWxpdGVFbGlnaWJsZTtcbiAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMubWVuc3VhbGl0ZU1pbmltYWxlO1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGVfdG9fanNvbyAodHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlXG4gICAgOiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCkgOiB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0ICh0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZV9vZl9qc29vXG4gICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSA6IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSBKcy50KSA6XG4gICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQgPVxuICAgIHtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhbmNpZW5Mb3llclByaW5jaXBhbDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhbmNpZW5uZUFsbG9jYXRpb25Mb2dlbWVudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb29cbiAgICAoaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgOiBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQpXG4gICAgOiBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhbmNpZW5Mb3llclByaW5jaXBhbCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsXG4gICAgICB2YWwgYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vXG4gICAgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XG4gICAgICA6IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQpIDpcbiAgICBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPVxuICAgIHtcbiAgICAgIGFuY2llbl9sb3llcl9wcmluY2lwYWwgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5hbmNpZW5Mb3llclByaW5jaXBhbDtcbiAgICAgIGFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5hbmNpZW5uZUFsbG9jYXRpb25Mb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2U6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZXF1aXZhbGVuY2VMb3llcjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxveWVyTWluaW1hbDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llciA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5lcXVpdmFsZW5jZV9sb3llclxuICAgICAgdmFsIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXG4gICAgICB2YWwgbG95ZXJNaW5pbWFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyLmxveWVyX21pbmltYWxcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICAgIHtcbiAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5jb2VmZmljaWVudFByaXNlRW5DaGFyZ2U7XG4gICAgICBlcXVpdmFsZW5jZV9sb3llciA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmVxdWl2YWxlbmNlTG95ZXI7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5tb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzO1xuICAgICAgbG95ZXJfbWluaW1hbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmxveWVyTWluaW1hbDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvbyAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50KSA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhZ2VPdXZlcnR1cmVEcm9pdDpcbiAgICAgIFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGUudCkgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFnZU91dmVydHVyZURyb2l0ID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmFnZV9vdXZlcnR1cmVfZHJvaXRcbiAgICAgIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIEpzLnQpIDpcbiAgICBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50ID1cbiAgICB7XG4gICAgICBhZ2Vfb3V2ZXJ0dXJlX2Ryb2l0ID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIyMuYWdlT3V2ZXJ0dXJlRHJvaXRcbiAgICB9XG5cbmNsYXNzIHR5cGUgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnRJbXBheWU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc29vIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudFxuICAgIDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEltcGF5ZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudC5tb250YW50X2ltcGF5ZVxuICAgICAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCkgOlxuICAgIEltcGF5ZURlcGVuc2VMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ltcGF5ZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCMjLm1vbnRhbnRJbXBheWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZTpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfdG9fanNvbyAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAgIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50KSA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPSBKcy5ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgZWxpZ2liaWxpdGUgPSBKcy50b19ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQjIy5lbGlnaWJpbGl0ZTtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZWxpZ2liaWxpdGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUudClcbiAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy5ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBhaWRlRmluYWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUuYWlkZV9maW5hbGVcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9vZl9qc29vXG4gICAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUudCA9XG4gICAge1xuICAgICAgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUjIy5lbGlnaWJpbGl0ZTtcbiAgICAgIGFpZGVfZmluYWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWUjIy5haWRlRmluYWxlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3QgbWV0aG9kIG1vbnRhbnQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KVxuICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMubW9udGFudFxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLm1vbnRhbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pYyA9XG4gIG9iamVjdCBtZXRob2QgYnJ1dEhvcmFpcmU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX3RvX2pzb28gKHNtaWMgOiBTbWljLnQpIDogc21pYyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBicnV0SG9yYWlyZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBzbWljLmJydXRfaG9yYWlyZVxuICAgICAgZW5kXG4gIGxldCBzbWljX29mX2pzb28gKHNtaWMgOiBzbWljIEpzLnQpIDogU21pYy50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgc21pYyMjLmJydXRIb3JhaXJlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZVByZXQ6IHR5cGVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVQcmV0OiB0aXR1bGFpcmVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmV0X3RvX2pzb28gKHByZXQgOiBQcmV0LnQpIDogcHJldCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlUHJldCA9IHR5cGVfcHJldF90b19qc29vIHByZXQudHlwZV9wcmV0XG4gICAgICB2YWwgZGF0ZVNpZ25hdHVyZSA9IGRhdGVfdG9fanNvbyBwcmV0LmRhdGVfc2lnbmF0dXJlXG4gICAgICB2YWwgdGl0dWxhaXJlUHJldCA9IHRpdHVsYWlyZV9wcmV0X3RvX2pzb28gcHJldC50aXR1bGFpcmVfcHJldFxuICAgICAgZW5kXG4gIGxldCBwcmV0X29mX2pzb28gKHByZXQgOiBwcmV0IEpzLnQpIDogUHJldC50ID1cbiAgICB7XG4gICAgICB0eXBlX3ByZXQgPSB0eXBlX3ByZXRfb2ZfanNvbyBwcmV0IyMudHlwZVByZXQ7XG4gICAgICBkYXRlX3NpZ25hdHVyZSA9IGRhdGVfb2ZfanNvbyBwcmV0IyMuZGF0ZVNpZ25hdHVyZTtcbiAgICAgIHRpdHVsYWlyZV9wcmV0ID0gdGl0dWxhaXJlX3ByZXRfb2ZfanNvbyBwcmV0IyMudGl0dWxhaXJlUHJldFxuICAgIH1cblxuY2xhc3MgdHlwZSBuZXVmX291X2FuY2llbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5ldWZcIlxuICAgICAgICAtIFwiQW5jaWVuXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyA6IE5ldWZPdUFuY2llbi50IC0+IG5ldWZfb3VfYW5jaWVuIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE5ldWYgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOZXVmXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQW5jaWVuIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQW5jaWVuXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IG5ldWZfb3VfYW5jaWVuX29mX2pzb28gKG5ldWZfb3VfYW5jaWVuIDogbmV1Zl9vdV9hbmNpZW4gSnMudClcbiAgOiBOZXVmT3VBbmNpZW4udCA9XG4gIG1hdGNoIG5ldWZfb3VfYW5jaWVuIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTmV1ZlwiIC0+IE5ldWZPdUFuY2llbi5OZXVmICgpXG4gIHwgXCJBbmNpZW5cIiAtPlxuICBOZXVmT3VBbmNpZW4uQW5jaWVuIChhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBuZXVmX291X2FuY2llbiMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTmV1Zk91QW5jaWVuLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHRyYW5jaGVfcmV2ZW51ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGhhdXQ6IGxpbWl0ZV90cmFuY2hlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiYXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X3RvX2pzb28gKHRyYW5jaGVfcmV2ZW51IDogVHJhbmNoZVJldmVudS50KVxuICAgIDogdHJhbmNoZV9yZXZlbnUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX3RvX2pzb28gdHJhbmNoZV9yZXZlbnUuaGF1dFxuICAgICAgdmFsIGJhcyA9IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCB0cmFuY2hlX3JldmVudS5iYXNcbiAgICAgIHZhbCB0YXV4ID0gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnUudGF1eFxuICAgICAgZW5kXG4gIGxldCB0cmFuY2hlX3JldmVudV9vZl9qc29vICh0cmFuY2hlX3JldmVudSA6IHRyYW5jaGVfcmV2ZW51IEpzLnQpIDpcbiAgICBUcmFuY2hlUmV2ZW51LnQgPVxuICAgIHtcbiAgICAgIGhhdXQgPSBsaW1pdGVfdHJhbmNoZV9vZl9qc29vIHRyYW5jaGVfcmV2ZW51IyMuaGF1dDtcbiAgICAgIGJhcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICB0cmFuY2hlX3JldmVudSMjLmJhcztcbiAgICAgIHRhdXggPSBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB0cmFuY2hlX3JldmVudSMjLnRhdXhcbiAgICB9XG5cbmNsYXNzIHR5cGUgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBoYXV0OiBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiYXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfdG9fanNvbyAodHJhbmNoZV9yZXZlbnVfZGVjaW1hbFxuICAgIDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiB0cmFuY2hlX3JldmVudV9kZWNpbWFsIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGhhdXQgPSBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28gdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC5oYXV0XG4gICAgICB2YWwgYmFzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC5iYXNcbiAgICAgIHZhbCB0YXV4ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbC50YXV4XG4gICAgICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvb1xuICAgICh0cmFuY2hlX3JldmVudV9kZWNpbWFsIDogdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCBKcy50KSA6XG4gICAgVHJhbmNoZVJldmVudURlY2ltYWwudCA9XG4gICAge1xuICAgICAgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvbyB0cmFuY2hlX3JldmVudV9kZWNpbWFsIyMuaGF1dDtcbiAgICAgIGJhcyA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwjIy5iYXM7XG4gICAgICB0YXV4ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCMjLnRhdXhcbiAgICB9XG5cbmNsYXNzIHR5cGUgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhcmVudGU6IHBhcmVudGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGluY2FwYWNpdGU4MFBvdXJjZW50T3VSZXN0cmljdGlvbkVtcGxvaTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpYWlyZUwxNjExOUwzNTE4TDY0MzNTZWN1OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVBbGxvY2F0aW9uUGVyc29ubmVBZ2VlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlXG4gICAgOiBBdXRyZVBlcnNvbm5lQUNoYXJnZS50KSA6IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCByZXNzb3VyY2VzID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnJlc3NvdXJjZXNcbiAgICAgIHZhbCBhc2NlbmRhbnREZXNjZW5kYW50Q29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlXG4gICAgICB2YWwgcGFyZW50ZSA9IHBhcmVudGVfdG9fanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5wYXJlbnRlXG4gICAgICB2YWwgaW5jYXBhY2l0ZTgwUG91cmNlbnRPdVJlc3RyaWN0aW9uRW1wbG9pID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUwxNjExOUwzNTE4TDY0MzNTZWN1ID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5iZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3VcbiAgICAgIHZhbCB0aXR1bGFpcmVBbGxvY2F0aW9uUGVyc29ubmVBZ2VlID1cbiAgICAgICAgSnMuYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS50aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlXG4gICAgICBlbmRcbiAgbGV0IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb29cbiAgICAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgOiBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSBKcy50KSA6XG4gICAgQXV0cmVQZXJzb25uZUFDaGFyZ2UudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5kYXRlTmFpc3NhbmNlO1xuICAgICAgcmVzc291cmNlcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnJlc3NvdXJjZXM7XG4gICAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZVxuICAgICAgICAgICMjLmFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZTtcbiAgICAgIHBhcmVudGUgPSBwYXJlbnRlX29mX2pzb28gYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXJlbnRlO1xuICAgICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2kgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5pbmNhcGFjaXRlODBQb3VyY2VudE91UmVzdHJpY3Rpb25FbXBsb2k7XG4gICAgICBiZW5lZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3NlY3UgPVxuICAgICAgICBKcy50b19ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMuYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3U7XG4gICAgICB0aXR1bGFpcmVfYWxsb2NhdGlvbl9wZXJzb25uZV9hZ2VlID1cbiAgICAgICAgSnMudG9fYm9vbCBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWVcbiAgICB9XG5cbmNsYXNzIHR5cGUgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJNb2luc0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgICAgLSBcIlBsdXNEZVRyb2lzRW5mYW50c1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50X3RvX2pzb29cbiAgOiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50IC0+IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE1vaW5zRGVUcm9pc0VuZmFudHMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNb2luc0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGx1c0RlVHJvaXNFbmZhbnRzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGx1c0RlVHJvaXNFbmZhbnRzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2VfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfb2ZfanNvb1xuICAoZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICA6IGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IEpzLnQpXG4gIDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCA9XG4gIG1hdGNoIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50IyMua2luZFxuICAgIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJNb2luc0RlVHJvaXNFbmZhbnRzXCIgLT5cbiAgICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5Nb2luc0RlVHJvaXNFbmZhbnRzICgpXG4gIHwgXCJQbHVzRGVUcm9pc0VuZmFudHNcIiAtPlxuICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC5QbHVzRGVUcm9pc0VuZmFudHMgKGRhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0RhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZWxpZ2liaWxpdGU6XG4gICAgICB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZTogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZTpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudClcbiAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPVxuICAgICAgICB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50LmVsaWdpYmlsaXRlXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcbiAgICAgIHZhbCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB4KSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlO1xuICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgeCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICAgICAgIyMuY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0eXBlVXNlcjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVtcGxpdENvbmRpdGlvbnNSODMyMjE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnQ6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZGV2YW5jZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2OlxuICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgbG9nZW1lbnRfZm95ZXJfdG9fanNvbyAobG9nZW1lbnRfZm95ZXIgOiBMb2dlbWVudEZveWVyLnQpXG4gICAgOiBsb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCB0eXBlVXNlciA9IHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBsb2dlbWVudF9mb3llci50eXBlX3VzZXJcbiAgICAgIHZhbCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIucmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcbiAgICAgIHZhbCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUkgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50X2ZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVxuICAgICAgdmFsIGRhdGVDb252ZW50aW9ubmVtZW50ID1cbiAgICAgICAgZGF0ZV90b19qc29vIGxvZ2VtZW50X2ZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudFxuICAgICAgdmFsIGNvbnN0cnVpdEFwcGxpY2F0aW9uTG9pMTk1NzEySUlJID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudF9mb3llci5jb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJXG4gICAgICB2YWwgcmVkZXZhbmNlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGxvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVxuICAgICAgdmFsIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTYgPVxuICAgICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl90b19qc29vIGxvZ2VtZW50X2ZveWVyLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2XG4gICAgICBlbmRcbiAgbGV0IGxvZ2VtZW50X2ZveWVyX29mX2pzb28gKGxvZ2VtZW50X2ZveWVyIDogbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIExvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgdHlwZV91c2VyID0gdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vIGxvZ2VtZW50X2ZveWVyIyMudHlwZVVzZXI7XG4gICAgICByZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5yZW1wbGl0Q29uZGl0aW9uc1I4MzIyMTtcbiAgICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5jb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUk7XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnQgPVxuICAgICAgICBkYXRlX29mX2pzb28gbG9nZW1lbnRfZm95ZXIjIy5kYXRlQ29udmVudGlvbm5lbWVudDtcbiAgICAgIGNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkgPVxuICAgICAgICBKcy50b19ib29sIGxvZ2VtZW50X2ZveWVyIyMuY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUk7XG4gICAgICByZWRldmFuY2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgbG9nZW1lbnRfZm95ZXIjIy5yZWRldmFuY2U7XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBsb2dlbWVudF9mb3llciMjLmNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaWRlbnRpZmlhbnQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG9ibGlnYXRpb25TY29sYWlyZTpcbiAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByaXNlRW5DaGFyZ2U6IHByaXNlX2VuX2NoYXJnZV9lbmZhbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaWRlbnRpZmlhbnQgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5pZGVudGlmaWFudFxuICAgICAgdmFsIG9ibGlnYXRpb25TY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb28gZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZVxuICAgICAgdmFsIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlXG4gICAgICB2YWwgZGF0ZURlTmFpc3NhbmNlID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgcHJpc2VFbkNoYXJnZSA9XG4gICAgICAgIHByaXNlX2VuX2NoYXJnZV9lbmZhbnRfdG9fanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICB2YWwgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgOiBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGlkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5pZGVudGlmaWFudDtcbiAgICAgIG9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vXG4gICAgICAgICAgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5vYmxpZ2F0aW9uU2NvbGFpcmU7XG4gICAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMucmVtdW5lcmF0aW9uTWVuc3VlbGxlO1xuICAgICAgZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICBkYXRlX29mX2pzb28gZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICBwcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfZW5mYW50X29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLnByaXNlRW5DaGFyZ2U7XG4gICAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgIyMuYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlcztcbiAgICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgICAgICMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVEZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkdhcmRlQWx0ZXJuZWU6XG4gICAgICBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2FfY2hhcmdlX3RvX2pzb28gKGVuZmFudF9hX2NoYXJnZSA6IEVuZmFudEFDaGFyZ2UudClcbiAgICA6IGVuZmFudF9hX2NoYXJnZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudF9hX2NoYXJnZS5pZGVudGlmaWFudFxuICAgICAgdmFsIGJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9hX2NoYXJnZS5iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfYV9jaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGRhdGVEZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X2FfY2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBvYmxpZ2F0aW9uU2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vIGVuZmFudF9hX2NoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgICB2YWwgc2l0dWF0aW9uR2FyZGVBbHRlcm5lZSA9XG4gICAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qc29vIGVuZmFudF9hX2NoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2FfY2hhcmdlX29mX2pzb28gKGVuZmFudF9hX2NoYXJnZSA6IGVuZmFudF9hX2NoYXJnZSBKcy50KSA6XG4gICAgRW5mYW50QUNoYXJnZS50ID1cbiAgICB7XG4gICAgICBpZGVudGlmaWFudCA9IGludGVnZXJfb2ZfaW50IGVuZmFudF9hX2NoYXJnZSMjLmlkZW50aWZpYW50O1xuICAgICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVuZmFudF9hX2NoYXJnZSMjLmJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQ7XG4gICAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgSnMudG9fYm9vbCBlbmZhbnRfYV9jaGFyZ2UjIy5hRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgZGF0ZV9kZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZW5mYW50X2FfY2hhcmdlIyMuZGF0ZURlTmFpc3NhbmNlO1xuICAgICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAgICAgICAgIGVuZmFudF9hX2NoYXJnZSMjLm9ibGlnYXRpb25TY29sYWlyZTtcbiAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSA9XG4gICAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qc29vXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMuc2l0dWF0aW9uR2FyZGVBbHRlcm5lZVxuICAgIH1cblxuY2xhc3MgdHlwZSB0eXBlX2JhaWxsZXVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQmFpbGxldXJTb2NpYWxcIlxuICAgICAgICAtIFwiQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCJcbiAgICAgICAgLSBcIkJhaWxsZXVyUHJpdmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX2JhaWxsZXVyX3RvX2pzb28gOiBUeXBlQmFpbGxldXIudCAtPiB0eXBlX2JhaWxsZXVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEJhaWxsZXVyU29jaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmFpbGxldXJTb2NpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoY29udmVudGlvbl9hX25faF9hX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBCYWlsbGV1clByaXZlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQmFpbGxldXJQcml2ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9iYWlsbGV1cl9vZl9qc29vICh0eXBlX2JhaWxsZXVyIDogdHlwZV9iYWlsbGV1ciBKcy50KVxuICA6IFR5cGVCYWlsbGV1ci50ID1cbiAgbWF0Y2ggdHlwZV9iYWlsbGV1ciMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkJhaWxsZXVyU29jaWFsXCIgLT5cbiAgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHR5cGVfYmFpbGxldXIjIy5wYXlsb2FkKSlcbiAgfCBcIkJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbFwiIC0+XG4gIFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgKGNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIHR5cGVfYmFpbGxldXIjIy5wYXlsb2FkKSlcbiAgfCBcIkJhaWxsZXVyUHJpdmVcIiAtPiBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUJhaWxsZXVyLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTm9uXCJcbiAgICAgICAgLSBcIk91aVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzX3RvX2pzb29cbiAgOiBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy50IC0+IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IE5vbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5vblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE91aSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk91aVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfb2ZfanNvb1xuICAobG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgOiBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50KVxuICA6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQgPVxuICBtYXRjaCBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk5vblwiIC0+IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiAoKVxuICB8IFwiT3VpXCIgLT5cbiAgTG91ZU91U291c0xvdWVBRGVzVGllcnMuT3VpIChwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIG5hdGlvbmFsaXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRnJhbmNhaXNlXCJcbiAgICAgICAgLSBcIkV0cmFuZ2VyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG5hdGlvbmFsaXRlX3RvX2pzb28gOiBOYXRpb25hbGl0ZS50IC0+IG5hdGlvbmFsaXRlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEZyYW5jYWlzZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkZyYW5jYWlzZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0cmFuZ2VyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0cmFuZ2VyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGNvbmRpdGlvbnNfZXRyYW5nZXJzX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IG5hdGlvbmFsaXRlX29mX2pzb28gKG5hdGlvbmFsaXRlIDogbmF0aW9uYWxpdGUgSnMudCkgOiBOYXRpb25hbGl0ZS50ID1cbiAgbWF0Y2ggbmF0aW9uYWxpdGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJGcmFuY2Fpc2VcIiAtPiBOYXRpb25hbGl0ZS5GcmFuY2Fpc2UgKClcbiAgfCBcIkV0cmFuZ2VyZVwiIC0+XG4gIE5hdGlvbmFsaXRlLkV0cmFuZ2VyZSAoY29uZGl0aW9uc19ldHJhbmdlcnNfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBuYXRpb25hbGl0ZSMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTmF0aW9uYWxpdGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJDaGFuZ2VtZW50XCJcbiAgICAgICAgLSBcIlBhc0RlQ2hhbmdlbWVudFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb29cbiAgOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50IC0+IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IENoYW5nZW1lbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDaGFuZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlQ2hhbmdlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlQ2hhbmdlbWVudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAoY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgOiBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50KVxuICA6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPVxuICBtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNoYW5nZW1lbnRcIiAtPlxuICBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMucGF5bG9hZCkpXG4gIHwgXCJQYXNEZUNoYW5nZW1lbnRcIiAtPiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByb3ByaWV0YWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb2dlbWVudFNpdHVlQ29tbXVuZURlc2VxdWlsaWJyZUw4MzEyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlUHJpbmNpcGFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFyZ2VzTWVuc3VlbGxlc1ByZXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVudHJlZUxvZ2VtZW50OiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTU6XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1OlxuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25SODIyMTExMzE3OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhbmNpZW5uZXRlTG9nZW1lbnQ6IG5ldWZfb3VfYW5jaWVuIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmV0OiBwcmV0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByb3ByaWV0YWlyZV90b19qc29vIChwcm9wcmlldGFpcmUgOiBQcm9wcmlldGFpcmUudClcbiAgICA6IHByb3ByaWV0YWlyZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb2dlbWVudFNpdHVlQ29tbXVuZURlc2VxdWlsaWJyZUw4MzEyID1cbiAgICAgICAgSnMuYm9vbCBwcm9wcmlldGFpcmUubG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZVxuICAgICAgdmFsIGNoYXJnZXNNZW5zdWVsbGVzUHJldCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRcbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnQgPSBkYXRlX3RvX2pzb28gcHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50XG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNSA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb28gcHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vIHByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgICB2YWwgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmUgPVxuICAgICAgICBKcy5ib29sIHByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVcbiAgICAgIHZhbCBjb3Byb3ByaWV0ZSA9IEpzLmJvb2wgcHJvcHJpZXRhaXJlLmNvcHJvcHJpZXRlXG4gICAgICB2YWwgc2l0dWF0aW9uUjgyMjExMTMxNyA9IEpzLmJvb2wgcHJvcHJpZXRhaXJlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3XG4gICAgICB2YWwgYW5jaWVubmV0ZUxvZ2VtZW50ID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyBwcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudFxuICAgICAgdmFsIHByZXQgPSBwcmV0X3RvX2pzb28gcHJvcHJpZXRhaXJlLnByZXRcbiAgICAgIGVuZFxuICBsZXQgcHJvcHJpZXRhaXJlX29mX2pzb28gKHByb3ByaWV0YWlyZSA6IHByb3ByaWV0YWlyZSBKcy50KSA6XG4gICAgUHJvcHJpZXRhaXJlLnQgPVxuICAgIHtcbiAgICAgIGxvZ2VtZW50X3NpdHVlX2NvbW11bmVfZGVzZXF1aWxpYnJlX2w4MzFfMiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgcHJvcHJpZXRhaXJlIyMubG9nZW1lbnRTaXR1ZUNvbW11bmVEZXNlcXVpbGlicmVMODMxMjtcbiAgICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwcm9wcmlldGFpcmUjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZTtcbiAgICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHByb3ByaWV0YWlyZSMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldDtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50ID0gZGF0ZV9vZl9qc29vIHByb3ByaWV0YWlyZSMjLmRhdGVFbnRyZWVMb2dlbWVudDtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAgICAgICAgIHByb3ByaWV0YWlyZSMjLnR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTU7XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICAgICAgICAgcHJvcHJpZXRhaXJlIyMudHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1O1xuICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlID1cbiAgICAgICAgSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5sb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZTtcbiAgICAgIGNvcHJvcHJpZXRlID0gSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5jb3Byb3ByaWV0ZTtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3ID0gSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5zaXR1YXRpb25SODIyMTExMzE3O1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudCA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb28gcHJvcHJpZXRhaXJlIyMuYW5jaWVubmV0ZUxvZ2VtZW50O1xuICAgICAgcHJldCA9IHByZXRfb2ZfanNvbyBwcm9wcmlldGFpcmUjIy5wcmV0XG4gICAgfVxuXG5jbGFzcyB0eXBlIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qgbm9tYnJlRW5mYW50c0FOYWl0cmVBcHJlc1Ryb2lzaWVtZU1vaXNHcm9zc2Vzc2U6XG4gICAgICBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzOlxuICAgICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF90b19qc29vXG4gICAgKGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgOiBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50LnQpXG4gICAgOiBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG5vbWJyZUVuZmFudHNBTmFpdHJlQXByZXNUcm9pc2llbWVNb2lzR3Jvc3Nlc3NlID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudC5ub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2VcbiAgICAgIHZhbCBkYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzID1cbiAgICAgICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfdG9fanNvbyBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50LmRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzXG4gICAgICBlbmRcbiAgbGV0IGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRfb2ZfanNvb1xuICAgIChpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICA6IGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCkgOlxuICAgIEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudCA9XG4gICAge1xuICAgICAgbm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlRW5mYW50c0FOYWl0cmVBcHJlc1Ryb2lzaWVtZU1vaXNHcm9zc2Vzc2U7XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1cyA9XG4gICAgICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZXJuaWVyX3BsdXNfZW5mYW50X29mX2pzb29cbiAgICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICAgICAgIyMuZGF0ZU5haXNzYW5jZVRyb2lzaWVtZUVuZmFudE91RGVybmllclNpUGx1c1xuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0OlxuICAgICAgKHVuaXQsICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlOlxuICAgICAgKHVuaXQsICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGFnZUw1MTIzMjogUnVudGltZV9qc29vLlJ1bnRpbWUuZHVyYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZ2ltZU91dHJlTWVyTDc1MTE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy50KVxuICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIG1ldGhvZCBkcm9pdE91dmVydCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRyb2l0X291dmVydCAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgXG4gICAgICAgICAgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMiA9XG4gICAgICAgIGR1cmF0aW9uX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzJcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGRyb2l0X291dmVydCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2UgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uc19ob3JzX2FnZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yID1cbiAgICAgICAgZHVyYXRpb25fb2ZfanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuYWdlTDUxMjMyO1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZWdpbWVPdXRyZU1lckw3NTExXG4gICAgfVxuXG5jbGFzcyB0eXBlIHBlcnNvbm5lX2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICAgIC0gXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBwZXJzb25uZV9hX2NoYXJnZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFbmZhbnRBQ2hhcmdlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGVuZmFudF9hX2NoYXJnZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKHBlcnNvbm5lX2FfY2hhcmdlIDogcGVyc29ubmVfYV9jaGFyZ2UgSnMudClcbiAgOiBQZXJzb25uZUFDaGFyZ2UudCA9XG4gIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRW5mYW50QUNoYXJnZVwiIC0+XG4gIFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIChlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBwZXJzb25uZV9hX2NoYXJnZSMjLnBheWxvYWQpKVxuICB8IFwiQXV0cmVQZXJzb25uZUFDaGFyZ2VcIiAtPlxuICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BlcnNvbm5lQUNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkZW1hbmRldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuYXRpb25hbGl0ZTogbmF0aW9uYWxpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhdHJpbW9pbmU6IHBhdHJpbW9pbmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGRlbWFuZGV1cl90b19qc29vIChkZW1hbmRldXIgOiBEZW1hbmRldXIudCkgOiBkZW1hbmRldXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBkZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBuYXRpb25hbGl0ZSA9IG5hdGlvbmFsaXRlX3RvX2pzb28gZGVtYW5kZXVyLm5hdGlvbmFsaXRlXG4gICAgICB2YWwgcGF0cmltb2luZSA9IHBhdHJpbW9pbmVfdG9fanNvbyBkZW1hbmRldXIucGF0cmltb2luZVxuICAgICAgdmFsIHBlcnNvbm5lSGViZXJnZWVDZW50cmVTb2luTEwxNjIyMjNTZWN1cml0ZVNvY2lhbGUgPVxuICAgICAgICBKcy5ib29sIGRlbWFuZGV1ci5wZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlXG4gICAgICBlbmRcbiAgbGV0IGRlbWFuZGV1cl9vZl9qc29vIChkZW1hbmRldXIgOiBkZW1hbmRldXIgSnMudCkgOiBEZW1hbmRldXIudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZGVtYW5kZXVyIyMuZGF0ZU5haXNzYW5jZTtcbiAgICAgIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfb2ZfanNvbyBkZW1hbmRldXIjIy5uYXRpb25hbGl0ZTtcbiAgICAgIHBhdHJpbW9pbmUgPSBwYXRyaW1vaW5lX29mX2pzb28gZGVtYW5kZXVyIyMucGF0cmltb2luZTtcbiAgICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZGVtYW5kZXVyIyMucGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZVxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBiYWlsbGV1cjogdHlwZV9iYWlsbGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWw6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50RXN0Q2hhbWJyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29sb2NhdGlvbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudE1ldWJsZUQ4NDIyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNDpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGxvY2F0aW9uX3RvX2pzb28gKGxvY2F0aW9uIDogTG9jYXRpb24udCkgOiBsb2NhdGlvbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBiYWlsbGV1ciA9IHR5cGVfYmFpbGxldXJfdG9fanNvbyBsb2NhdGlvbi5iYWlsbGV1clxuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbFxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXMgPVxuICAgICAgICBKcy5ib29sIGxvY2F0aW9uLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc1xuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZSA9IEpzLmJvb2wgbG9jYXRpb24ubG9nZW1lbnRfZXN0X2NoYW1icmVcbiAgICAgIHZhbCBjb2xvY2F0aW9uID0gSnMuYm9vbCBsb2NhdGlvbi5jb2xvY2F0aW9uXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnMgPVxuICAgICAgICBKcy5ib29sIGxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMiA9IEpzLmJvb2wgbG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMlxuICAgICAgdmFsIGNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0ID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvbyBsb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNFxuICAgICAgZW5kXG4gIGxldCBsb2NhdGlvbl9vZl9qc29vIChsb2NhdGlvbiA6IGxvY2F0aW9uIEpzLnQpIDogTG9jYXRpb24udCA9XG4gICAge1xuICAgICAgYmFpbGxldXIgPSB0eXBlX2JhaWxsZXVyX29mX2pzb28gbG9jYXRpb24jIy5iYWlsbGV1cjtcbiAgICAgIGxveWVyX3ByaW5jaXBhbCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBsb2NhdGlvbiMjLmxveWVyUHJpbmNpcGFsO1xuICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2NhdGlvbiMjLmJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXM7XG4gICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZSA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5sb2dlbWVudEVzdENoYW1icmU7XG4gICAgICBjb2xvY2F0aW9uID0gSnMudG9fYm9vbCBsb2NhdGlvbiMjLmNvbG9jYXRpb247XG4gICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycyA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBsb2NhdGlvbiMjLmFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5sb2dlbWVudE1ldWJsZUQ4NDIyO1xuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vIGxvY2F0aW9uIyMuY2hhbmdlbWVudExvZ2VtZW50RDg0MjRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVsaWdpYmlsaXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZGl0aW9uMlI4MjM0OlxuICAgICAgKHVuaXQsICBwZXJzb25uZV9hX2NoYXJnZSBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZSA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy5ib29sIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50LmVsaWdpYmlsaXRlXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgbWV0aG9kIGNvbmRpdGlvbjJSODIzNCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogcGVyc29ubmVfYV9jaGFyZ2UgSnMudCkgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgXG4gICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb29cbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMuZGF0ZUNvdXJhbnRlO1xuICAgICAgZWxpZ2liaWxpdGUgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlO1xuICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgeCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGU7XG4gICAgICBjb25kaXRpb25fMl9yODIzXzQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uXzJfcjgyM180JyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvY2F0aW9uXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZVwiXG4gICAgICAgIC0gXCJMb2dlbWVudEZveWVyXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vXG4gIDogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgLT4gY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBMb2NhdGlvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvY2F0aW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEFjY2Vzc2lvblByb3ByaWV0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFjY2Vzc2lvblByb3ByaWV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvZ2VtZW50Rm95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2dlbWVudF9mb3llcl90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgKGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wgOiBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIEpzLnQpXG4gIDogQ2F0ZWdvcmllQ2FsY3VsQVBMLnQgPVxuICBtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTG9jYXRpb25cIiAtPlxuICBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gKGxvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiQWNjZXNzaW9uUHJvcHJpZXRlXCIgLT5cbiAgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IFwiTG9nZW1lbnRGb3llclwiIC0+XG4gIENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIChsb2dlbWVudF9mb3llcl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUNhbGN1bEFQTC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBtb2RlX29jY3VwYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJMb2NhdGFpcmVcIlxuICAgICAgICAtIFwiUmVzaWRlbnRMb2dlbWVudEZveWVyXCJcbiAgICAgICAgLSBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIlxuICAgICAgICAtIFwiU291c0xvY2F0YWlyZVwiXG4gICAgICAgIC0gXCJMb2NhdGlvbkFjY2Vzc2lvblwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl90b19qc29vIDogTW9kZU9jY3VwYXRpb24udCAtPiBtb2RlX29jY3VwYXRpb24gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTG9jYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9jYXRpb25fdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGxvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgU291c0xvY2F0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNvdXNMb2NhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgTG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2NhdGlvbkFjY2Vzc2lvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKHByb3ByaWV0YWlyZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBtb2RlX29jY3VwYXRpb25fb2ZfanNvbyAobW9kZV9vY2N1cGF0aW9uIDogbW9kZV9vY2N1cGF0aW9uIEpzLnQpXG4gIDogTW9kZU9jY3VwYXRpb24udCA9XG4gIG1hdGNoIG1vZGVfb2NjdXBhdGlvbiMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvY2F0YWlyZVwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSAobG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlJlc2lkZW50TG9nZW1lbnRGb3llclwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciAobG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIChwcm9wcmlldGFpcmVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBcIlNvdXNMb2NhdGFpcmVcIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIChsb2NhdGlvbl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiTG9jYXRpb25BY2Nlc3Npb25cIiAtPlxuICBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiAocHJvcHJpZXRhaXJlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbW9kZV9vY2N1cGF0aW9uIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdNb2RlT2NjdXBhdGlvbi50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBsb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNpZGVuY2VQcmluY2lwYWxlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcm9wcmlldGFpcmU6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG91ZU91U291c0xvdWVBRGVzVGllcnM6XG4gICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdXN1ZnJ1aXQ6IHBhcmVudF9vdV9hdXRyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnREZWNlbnRMODk0NjI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHN1cmZhY2VNQ2FycmVzOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBsb2dlbWVudF90b19qc29vIChsb2dlbWVudCA6IExvZ2VtZW50LnQpIDogbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgcmVzaWRlbmNlUHJpbmNpcGFsZSA9IEpzLmJvb2wgbG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGVcbiAgICAgIHZhbCBlc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudC5lc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZlxuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gbG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uXG4gICAgICB2YWwgcHJvcHJpZXRhaXJlID0gcGFyZW50X291X2F1dHJlX3RvX2pzb28gbG9nZW1lbnQucHJvcHJpZXRhaXJlXG4gICAgICB2YWwgbG91ZU91U291c0xvdWVBRGVzVGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc190b19qc29vIGxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXG4gICAgICB2YWwgdXN1ZnJ1aXQgPSBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyBsb2dlbWVudC51c3VmcnVpdFxuICAgICAgdmFsIGxvZ2VtZW50RGVjZW50TDg5NDYyID0gSnMuYm9vbCBsb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlxuICAgICAgdmFsIHN1cmZhY2VNQ2FycmVzID0gaW50ZWdlcl90b19pbnQgbG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlc1xuICAgICAgdmFsIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGxvZ2VtZW50LnpvbmVcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfb2ZfanNvbyAobG9nZW1lbnQgOiBsb2dlbWVudCBKcy50KSA6IExvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLnJlc2lkZW5jZVByaW5jaXBhbGU7XG4gICAgICBlc3RfZWhwYWRfb3VfbWFpc29uX2F1dG9ub21pZV9sMzEzXzEyX2FzZiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnQjIy5lc3RFaHBhZE91TWFpc29uQXV0b25vbWllTDMxMzEyQXNmO1xuICAgICAgbW9kZV9vY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gbG9nZW1lbnQjIy5tb2RlT2NjdXBhdGlvbjtcbiAgICAgIHByb3ByaWV0YWlyZSA9IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIGxvZ2VtZW50IyMucHJvcHJpZXRhaXJlO1xuICAgICAgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gICAgICAgICAgbG9nZW1lbnQjIy5sb3VlT3VTb3VzTG91ZUFEZXNUaWVycztcbiAgICAgIHVzdWZydWl0ID0gcGFyZW50X291X2F1dHJlX29mX2pzb28gbG9nZW1lbnQjIy51c3VmcnVpdDtcbiAgICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLmxvZ2VtZW50RGVjZW50TDg5NDYyO1xuICAgICAgc3VyZmFjZV9tX2NhcnJlcyA9IGludGVnZXJfb2ZfaW50IGxvZ2VtZW50IyMuc3VyZmFjZU1DYXJyZXM7XG4gICAgICB6b25lID0gem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyBsb2dlbWVudCMjLnpvbmVcbiAgICB9XG5cbmNsYXNzIHR5cGUgbWVuYWdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHByZXN0YXRpb25zUmVjdWVzOlxuICAgICAgcHJlc3RhdGlvbl9yZWN1ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudDogbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc0FDaGFyZ2U6XG4gICAgICBwZXJzb25uZV9hX2NoYXJnZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBtZW5hZ2VfdG9fanNvbyAobWVuYWdlIDogTWVuYWdlLnQpIDogbWVuYWdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHByZXN0YXRpb25zUmVjdWVzID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28geCkgbWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlc1xuICAgICAgdmFsIGxvZ2VtZW50ID0gbG9nZW1lbnRfdG9fanNvbyBtZW5hZ2UubG9nZW1lbnRcbiAgICAgIHZhbCBwZXJzb25uZXNBQ2hhcmdlID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIG1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2VcbiAgICAgIHZhbCBub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudCA9XG4gICAgICAgIGludGVnZXJfdG9faW50IG1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudFxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBtZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmkgPVxuICAgICAgICBKcy5ib29sIG1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmlcbiAgICAgIHZhbCBlbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlID1cbiAgICAgICAgSnMuYm9vbCBtZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgZW5kXG4gIGxldCBtZW5hZ2Vfb2ZfanNvbyAobWVuYWdlIDogbWVuYWdlIEpzLnQpIDogTWVuYWdlLnQgPVxuICAgIHtcbiAgICAgIHByZXN0YXRpb25zX3JlY3VlcyA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgbWVuYWdlIyMucHJlc3RhdGlvbnNSZWN1ZXM7XG4gICAgICBsb2dlbWVudCA9IGxvZ2VtZW50X29mX2pzb28gbWVuYWdlIyMubG9nZW1lbnQ7XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2UgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBtZW5hZ2UjIy5wZXJzb25uZXNBQ2hhcmdlO1xuICAgICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludCBtZW5hZ2UjIy5ub21icmVBdXRyZXNPY2N1cGFudHNMb2dlbWVudDtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb28gbWVuYWdlIyMuc2l0dWF0aW9uRmFtaWxpYWxlO1xuICAgICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgSnMudG9fYm9vbCBtZW5hZ2UjIy5jb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpO1xuICAgICAgZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbWVuYWdlIyMuZW5mYW50QU5haXRyZUFwcmVzUXVhdHJpZW1lTW9pc0dyb3NzZXNzZVxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFJlc2lkZW5jZVByaW5jaXBhbGVJbjpcbiAgICAgICh1bml0LCAgdW5pdCAtPiBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFN1cmZhY2VJbjpcbiAgICAgICh1bml0LCAgdW5pdCAtPiBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBtZXRob2QgY29uZGl0aW9uTG9nZW1lbnRSZXNpZGVuY2VQcmluY2lwYWxlSW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luIFxuICAgICAgICAgIChcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgbWV0aG9kIGNvbmRpdGlvbkxvZ2VtZW50U3VyZmFjZUluID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiB1bml0KSAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luIFxuICAgICAgICAgIChcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBiZW5lZmljaWVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4gPVxuICAgICAgICBKcy5ib29sIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb28gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRlbWFuZGV1ckluO1xuICAgICAgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuYmVuZWZpY2llQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbnNJbjpcbiAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbW1lbmFnZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZXBlbnNlc0p1c3RpZmllZXNSZWVsbGVtZW50RW5nYWdlZXNJbjpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5cbiAgICA6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaW5mb3JtYXRpb25zSW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmluZm9ybWF0aW9uc19pblxuICAgICAgdmFsIGRhdGVFbW1lbmFnZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGF0ZV9lbW1lbmFnZW1lbnRfaW5cbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kZW1hbmRldXJfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW5cbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgaW5mb3JtYXRpb25zX2luID1cbiAgICAgICAgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuaW5mb3JtYXRpb25zSW47XG4gICAgICBkYXRlX2VtbWVuYWdlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLmRhdGVFbW1lbmFnZW1lbnRJbjtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgICAgICAgICMjLmRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc0RlbWFuZGV1ckluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNDb25qb2ludEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbjpcbiAgICAgIHBlcnNvbm5lX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9hdV9mb3llciBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJFeGVyY2VBY3Rpdml0ZVJlbXVuZXJlZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBlcnNvbm5lc0FDaGFyZ2VJbjpcbiAgICAgIHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUluOiBzaXR1YXRpb25fZmFtaWxpYWxlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvbkFnZUJvdXJzZUVuc2VpZ25lbWVudFN1cGVyaWV1ckluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVyUG91cnN1aXREZXNFdHVkZXNJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZURlbWFuZGVPdVJlZXhhbWVuRHJvaXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYWllbWVudExvZ2VtZW50RGlzdGluY3RQcm9mZXNzaW9ubmVsSW46XG4gICAgICBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IFJlc3NvdXJjZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KVxuICAgIDogcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzRGVtYW5kZXVySW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX2RlbWFuZGV1cl9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNDb25qb2ludEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19jb25qb2ludF9pblxuICAgICAgdmFsIHBlcnNvbm5lc1ZpdmFudEhhYml0dWVsbGVtZW50Rm95ZXJJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX3RvX2pzb28geCkgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5wZXJzb25uZXNfdml2YW50X2hhYml0dWVsbGVtZW50X2ZveWVyX2luXG4gICAgICB2YWwgZGVtYW5kZXVyRXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbiA9XG4gICAgICAgIEpzLmJvb2wgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kZW1hbmRldXJfZXhlcmNlX2FjdGl2aXRlX3JlbXVuZXJlZV9pblxuICAgICAgdmFsIGNvbmpvaW50RXhlcmNlQWN0aXZpdGVSZW11bmVyZWVJbiA9XG4gICAgICAgIEpzLmJvb2wgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5jb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luXG4gICAgICB2YWwgcGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIHgpIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgY29uZGl0aW9uQWdlQm91cnNlRW5zZWlnbmVtZW50U3VwZXJpZXVySW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uY29uZGl0aW9uX2FnZV9ib3Vyc2VfZW5zZWlnbmVtZW50X3N1cGVyaWV1cl9pblxuICAgICAgdmFsIGRlbWFuZGV1clBvdXJzdWl0RGVzRXR1ZGVzSW4gPVxuICAgICAgICBKcy5ib29sIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX3BvdXJzdWl0X2Rlc19ldHVkZXNfaW5cbiAgICAgIHZhbCBkYXRlRGVtYW5kZU91UmVleGFtZW5Ecm9pdEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luXG4gICAgICB2YWwgcGFpZW1lbnRMb2dlbWVudERpc3RpbmN0UHJvZmVzc2lvbm5lbEluID1cbiAgICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF90b19qc29vIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4ucGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgZW5kXG4gIGxldCByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBSZXNzb3VyY2VzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgcmVzc291cmNlc19kZW1hbmRldXJfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNEZW1hbmRldXJJbjtcbiAgICAgIHJlc3NvdXJjZXNfY29uam9pbnRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNDb25qb2ludEluO1xuICAgICAgcGVyc29ubmVzX3ZpdmFudF9oYWJpdHVlbGxlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfdml2YW50X2hhYml0dWVsbGVtZW50X2F1X2ZveWVyX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMucGVyc29ubmVzVml2YW50SGFiaXR1ZWxsZW1lbnRGb3llckluO1xuICAgICAgZGVtYW5kZXVyX2V4ZXJjZV9hY3Rpdml0ZV9yZW11bmVyZWVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRlbWFuZGV1ckV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW47XG4gICAgICBjb25qb2ludF9leGVyY2VfYWN0aXZpdGVfcmVtdW5lcmVlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5jb25qb2ludEV4ZXJjZUFjdGl2aXRlUmVtdW5lcmVlSW47XG4gICAgICBwZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMucGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLm1vZGVPY2N1cGF0aW9uSW47XG4gICAgICBjb25kaXRpb25fYWdlX2JvdXJzZV9lbnNlaWduZW1lbnRfc3VwZXJpZXVyX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5jb25kaXRpb25BZ2VCb3Vyc2VFbnNlaWduZW1lbnRTdXBlcmlldXJJbjtcbiAgICAgIGRlbWFuZGV1cl9wb3Vyc3VpdF9kZXNfZXR1ZGVzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5kZW1hbmRldXJQb3Vyc3VpdERlc0V0dWRlc0luO1xuICAgICAgZGF0ZV9kZW1hbmRlX291X3JlZXhhbWVuX2Ryb2l0X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRhdGVEZW1hbmRlT3VSZWV4YW1lbkRyb2l0SW47XG4gICAgICBwYWllbWVudF9sb2dlbWVudF9kaXN0aW5jdF9wcm9mZXNzaW9ubmVsX2luID1cbiAgICAgICAgcGFpZW1lbnRfbG9nZW1lbnRfZGlzdGluY3RfcHJvZmVzc2lvbm5lbF9vZl9qc29vXG4gICAgICAgICAgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnBhaWVtZW50TG9nZW1lbnREaXN0aW5jdFByb2Zlc3Npb25uZWxJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgICA6IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpXG4gICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb3llclByaW5jaXBhbEJhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uem9uZV9pblxuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBjb2xvY2F0aW9uSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMkluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxveWVyUHJpbmNpcGFsQmFzZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnpvbmVJbjtcbiAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBjb2xvY2F0aW9uX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5sb2dlbWVudE1ldWJsZUQ4NDIySW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuTm9tYnJlUGFydHNEODMyMjVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgIDogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udClcbiAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiMjLmNvbmRpdGlvbjJEdTgzMjI1SW47XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5uTm9tYnJlUGFydHNEODMyMjVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgSnMudG9fYm9vbCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4jIy5jb25kaXRpb24yRHU4MzIyNUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZUxvZ2VtZW50Rm95ZXJJbjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25kaXRpb24yRHU4MzIyNUluOlxuICAgICAgKHVuaXQsICB1bml0IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNUluOlxuICAgICAgKHVuaXQsICB1bml0IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgdHlwZUxvZ2VtZW50Rm95ZXJJbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIHZhbCBkYXRlQ29udmVudGlvbm5lbWVudEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZWRldmFuY2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLnJlZGV2YW5jZV9pblxuICAgICAgbWV0aG9kIGNvbmRpdGlvbjJEdTgzMjI1SW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gXG4gICAgICAgICAgKFxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1SW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy50eXBlTG9nZW1lbnRGb3llckluO1xuICAgICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLmRhdGVDb252ZW50aW9ubmVtZW50SW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlZGV2YW5jZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMucmVkZXZhbmNlSW47XG4gICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uXzJfZHVfODMyXzI1X2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgIDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KSA6XG4gICAgQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50ID1cbiAgICB7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudEluOlxuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVTaWduYXR1cmVQcmV0SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVudHJlZUxvZ2VtZW50SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29wcm9wcmlldGVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlUHJldEluOiB0eXBlX3ByZXQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFuY2llbm5ldGVMb2dlbWVudEluOiBuZXVmX291X2FuY2llbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGRhdGVTaWduYXR1cmVQcmV0SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW5cbiAgICAgIHZhbCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgY29wcm9wcmlldGVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uUjgyMjExMTMxN0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgdHlwZVByZXRJbiA9XG4gICAgICAgIHR5cGVfcHJldF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi50eXBlX3ByZXRfaW5cbiAgICAgIHZhbCBhbmNpZW5uZXRlTG9nZW1lbnRJbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmFuY2llbm5ldGVfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW47XG4gICAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuY29wcm9wcmlldGVJbjtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvblI4MjIxMTEzMTdJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuem9uZUluO1xuICAgICAgdHlwZV9wcmV0X2luID1cbiAgICAgICAgdHlwZV9wcmV0X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlUHJldEluO1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5hbmNpZW5uZXRlTG9nZW1lbnRJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZUFpZGVJbjogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlSW46IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIHR5cGVBaWRlSW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnR5cGVBaWRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGxveWVyUHJpbmNpcGFsSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRFc3RDaGFtYnJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzSW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2xvY2F0aW9uSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50TWV1YmxlRDg0MjJJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJbjpcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbG95ZXJQcmluY2lwYWxJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmxveWVyX3ByaW5jaXBhbF9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uem9uZV9pblxuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luXG4gICAgICB2YWwgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pblxuICAgICAgdmFsIHR5cGVBaWRlSW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBjb2xvY2F0aW9uSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uY29sb2NhdGlvbl9pblxuICAgICAgdmFsIHJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW5cbiAgICAgIHZhbCBsb2dlbWVudE1ldWJsZUQ4NDIySW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pblxuICAgICAgdmFsIGNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0SW4gPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMubG95ZXJQcmluY2lwYWxJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMuem9uZUluO1xuICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzSW47XG4gICAgICB0eXBlX2FpZGVfaW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMudHlwZUFpZGVJbjtcbiAgICAgIGNvbG9jYXRpb25faW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jb2xvY2F0aW9uSW47XG4gICAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMucmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW47XG4gICAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb2dlbWVudE1ldWJsZUQ4NDIySW47XG4gICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9pbiA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMuY2hhbmdlbWVudExvZ2VtZW50RDg0MjRJblxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlUHJpbmNpcGFsZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvblI4MjIxMTEzMTdJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZVByZXRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlVHJhdmF1eExvZ2VtZW50SW46XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRW50cmVlTG9nZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFyZ2VzTWVuc3VlbGxlc1ByZXRJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb3Byb3ByaWV0ZUluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25SODIyMTExMzE3SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCBkYXRlU2lnbmF0dXJlUHJldEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pblxuICAgICAgdmFsIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW5cbiAgICAgIHZhbCBjb3Byb3ByaWV0ZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZUluO1xuICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvblI4MjIxMTEzMTdJbjtcbiAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuZGF0ZVNpZ25hdHVyZVByZXRJbjtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlVHJhdmF1eExvZ2VtZW50SW47XG4gICAgICBsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW47XG4gICAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlRW50cmVlTG9nZW1lbnRJbjtcbiAgICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5jaGFyZ2VzTWVuc3VlbGxlc1ByZXRJbjtcbiAgICAgIGNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy5jb3Byb3ByaWV0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHR5cGVMb2dlbWVudEZveWVySW46IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb252ZW50aW9ubmVtZW50SW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkZXZhbmNlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNkluOlxuICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVMb2dlbWVudEZveWVySW4gPVxuICAgICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4udHlwZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgdmFsIGRhdGVDb252ZW50aW9ubmVtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luXG4gICAgICB2YWwgcmVkZXZhbmNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4ucmVkZXZhbmNlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi56b25lX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTZJbiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50ID1cbiAgICB7XG4gICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy50eXBlTG9nZW1lbnRGb3llckluO1xuICAgICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ29udmVudGlvbm5lbWVudEluO1xuICAgICAgcmVkZXZhbmNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMucmVkZXZhbmNlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luID1cbiAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNkluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlSW46IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZUFpZGVJbjogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl90b19qc29vIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pblxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb2RlT2NjdXBhdGlvbkluID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVNhbnNBcnJvbmRpSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi50eXBlX2FpZGVfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMubW9kZU9jY3VwYXRpb25JbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHpvbmVfaW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy50eXBlQWlkZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gPVxuICBvYmplY3QgbWV0aG9kIGRhdGVOYWlzc2FuY2VBc3N1cmVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdG9fanNvbyAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pblxuICAgIDogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZUFzc3VyZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4uZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX2luXG4gICAgICBlbmRcbiAgbGV0IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fb2ZfanNvb1xuICAgIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KSA6XG4gICAgT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiMjLmRhdGVOYWlzc2FuY2VBc3N1cmVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb2RlT2NjdXBhdGlvbkluOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVWZXJzZWVJbjogdmVyc2VtZW50X2EgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRBcGxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250YW50Q2hhcmdlc0luOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlcGVuc2VMb2dlbWVudEluOiBkZXBlbnNlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBtb250YW50RGV0dGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvX2pzb28gKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luXG4gICAgOiBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbi50KSA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb2RlX29jY3VwYXRpb25faW5cbiAgICAgIHZhbCBhaWRlVmVyc2VlSW4gPVxuICAgICAgICB2ZXJzZW1lbnRfYV90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLmFpZGVfdmVyc2VlX2luXG4gICAgICB2YWwgbW9udGFudEFwbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vbnRhbnRfYXBsX2luXG4gICAgICB2YWwgbW9udGFudENoYXJnZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb250YW50X2NoYXJnZXNfaW5cbiAgICAgIHZhbCBkZXBlbnNlTG9nZW1lbnRJbiA9XG4gICAgICAgIGRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5kZXBlbnNlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgbW9udGFudERldHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4ubW9udGFudF9kZXR0ZV9pblxuICAgICAgZW5kXG4gIGxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gICAgKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9kZU9jY3VwYXRpb25JbjtcbiAgICAgIGFpZGVfdmVyc2VlX2luID1cbiAgICAgICAgdmVyc2VtZW50X2Ffb2ZfanNvbyBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLmFpZGVWZXJzZWVJbjtcbiAgICAgIG1vbnRhbnRfYXBsX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudEFwbEluO1xuICAgICAgbW9udGFudF9jaGFyZ2VzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudENoYXJnZXNJbjtcbiAgICAgIGRlcGVuc2VfbG9nZW1lbnRfaW4gPVxuICAgICAgICBkZXBlbnNlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLmRlcGVuc2VMb2dlbWVudEluO1xuICAgICAgbW9udGFudF9kZXR0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiMjLm1vbnRhbnREZXR0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9IG1lbmFnZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtZW5hZ2VfaW4gPSBtZW5hZ2Vfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX3RvX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VQcmlzZXNFbkNvbXB0ZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQpIDpcbiAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9XG4gICAgICAgIG1lbmFnZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMuZGVtYW5kZXVySW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19pbl90b19qc29vIChzbWljX2luIDogU21pY0luLnQpIDogc21pY19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9IGRhdGVfdG9fanNvbyBzbWljX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9IGNvbGxlY3Rpdml0ZV90b19qc29vIHNtaWNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfaW5fb2ZfanNvbyAoc21pY19pbiA6IHNtaWNfaW4gSnMudCkgOiBTbWljSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9IGRhdGVfb2ZfanNvbyBzbWljX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPSBjb2xsZWN0aXZpdGVfb2ZfanNvbyBzbWljX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmVzdGF0aW9uQ291cmFudGVJbjpcbiAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBwcmVzdGF0aW9uQ291cmFudGVJbiA9XG4gICAgICAgIGVsZW1lbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4ucHJlc3RhdGlvbl9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHByZXN0YXRpb25fY291cmFudGVfaW4gPVxuICAgICAgICBlbGVtZW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5wcmVzdGF0aW9uQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5cblxuXG5sZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50KVxuICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50ID1cbiAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICB8PiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KVxuICA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgSnMudCA9XG4gIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5cbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vZl9qc29vXG4gIHw+IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qc29vXG5cblxubGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCA9XG4gIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luXG4gIHw+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IHNtaWMgKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpXG4gIDogc21pYyBKcy50ID1cbiAgc21pY19pbiB8PiBzbWljX2luX29mX2pzb28gfD4gc21pYyB8PiBzbWljX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cblxuXG5sZXQgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAocmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA6IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiByZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IHJlc3NvdXJjZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50XG4gIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQpXG4gIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50ID1cbiAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX3RvX2pzb29cblxuXG5sZXQgXyA9XG4gICBKcy5leHBvcnQgXCJBaWRlc0xvZ2VtZW50TGliXCJcbiAgICAob2JqZWN0JWpzXG4gICAgICBcbiAgICAgIG1ldGhvZCBjb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgOiAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50IC0+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA6IChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgLT4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlIDogKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBvdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZSA6IChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAgICAgXG4gICAgICBtZXRob2QgaW1wYXllRGVwZW5zZUxvZ2VtZW50IDogKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQgLT4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBiYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzIDogKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBzbWljIDogKHNtaWNfaW4gSnMudCAtPiBzbWljIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBzbWljXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZiA6IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudCAtPiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlIDogKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2tcbiAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgcmVzc291cmNlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA6IChyZXNzb3VyY2VzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIEpzLnQgLT4gcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgcmVzc291cmNlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgOiAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50IC0+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyIDogKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudCA6IChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IDogKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBlbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudCA6IChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQgLT4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50IDogKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50IDogKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZSA6IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQgLT4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgICAgXG4gICAgZW5kKSIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVuY2ggbGF3IGxpYnJhcnksIGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbnMgZm9yXG4gICBjb21wdXRpbmcgRnJlbmNoIHRheGVzIGFuZCBiZW5lZml0cyBkZXJpdmVkIGZyb20gQ2F0YWxhIHByb2dyYW1zLiBDb3B5cmlnaHRcbiAgIChDKSAyMDIxIElucmlhLCBjb250cmlidXRvcjogRGVuaXMgTWVyaWdvdXggPGRlbmlzLm1lcmlnb3V4QGlucmlhLmZyPiwgRW1pbGVcbiAgIFJvbGxleSA8ZW1pbGUucm9sbGV5QHR1dGEuaW8+XG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gTGF3X3NvdXJjZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxubW9kdWxlIEFGID0gQWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xubW9kdWxlIEFGX3dlYiA9IEFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfYXBpX3dlYlxubW9kdWxlIEFMID0gQWlkZXNfbG9nZW1lbnRcbm1vZHVsZSBBTF93ZWIgPSBBaWRlc19sb2dlbWVudF9hcGlfd2ViXG5cbmxldCBfID1cbiAgSnMuZXhwb3J0X2FsbFxuICAgIChvYmplY3QlanNcbiAgICAgICB2YWwgZXZlbnRzTWFuYWdlciA9IGV2ZW50X21hbmFnZXJcblxuICAgICAgIG1ldGhvZCBjb21wdXRlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXG4gICAgICAgICAgIDogKEFGX3dlYi5pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAtPiBmbG9hdCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIC0+XG4gICAgICAgICAgICAgZXhlY3V0ZV9vcl90aHJvd19lcnJvciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgICAgICAgICAgfD4gQUZfd2ViLmludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHJlc3VsdCMjLmlNb250YW50VmVyc2UpKVxuXG4gICAgICAgbWV0aG9kIGNvbXB1dGVBaWRlc0F1TG9nZW1lbnRcbiAgICAgICAgICAgOiAoQUxfd2ViLmNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gLT4gZmxvYXQpXG4gICAgICAgICAgICAgSnMuY2FsbGJhY2sgPVxuICAgICAgICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gLT5cbiAgICAgICAgICAgICBleGVjdXRlX29yX3Rocm93X2Vycm9yIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgICAgICAgICAgICAgICAgIHw+IEFMX3dlYi5jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHJlc3VsdCMjLmFpZGVGaW5hbGUpKVxuICAgIGVuZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl19 \ No newline at end of file diff --git a/syntax_highlighting/en/pygments/catala_en_lexer/lexer.py b/syntax_highlighting/en/pygments/catala_en_lexer/lexer.py index 2e2b1d800..af86f69a7 100644 --- a/syntax_highlighting/en/pygments/catala_en_lexer/lexer.py +++ b/syntax_highlighting/en/pygments/catala_en_lexer/lexer.py @@ -3,9 +3,9 @@ import re -__all__=['CatalaEnLexer'] +__all__=['CustomLexer'] -class CatalaEnLexer(RegexLexer): +class CustomLexer(RegexLexer): name = 'CatalaEn' aliases = ['catala_en'] filenames = ['*.catala_en'] diff --git a/syntax_highlighting/en/pygments/pyproject.toml b/syntax_highlighting/en/pygments/pyproject.toml index b39f94901..aacffbd3d 100644 --- a/syntax_highlighting/en/pygments/pyproject.toml +++ b/syntax_highlighting/en/pygments/pyproject.toml @@ -8,4 +8,4 @@ version = "0.8" dependencies = ["pygments"] [project.entry-points."pygments.lexers"] -catala-en-lexer = "catala_en_lexer.lexer:CatalaEnLexer" +catala-en-lexer = "catala_en_lexer.lexer:CustomLexer" diff --git a/syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py b/syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py index 0eeceea21..45ba95ff8 100644 --- a/syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py +++ b/syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py @@ -3,9 +3,9 @@ import re -__all__=['CatalaFrLexer'] +__all__=['CustomLexer'] -class CatalaFrLexer(RegexLexer): +class CustomLexer(RegexLexer): name = 'CatalaFr' aliases = ['catala_fr'] filenames = ['*.catala_fr'] diff --git a/syntax_highlighting/fr/pygments/pyproject.toml b/syntax_highlighting/fr/pygments/pyproject.toml index c4ebe3cac..7c1609ac7 100644 --- a/syntax_highlighting/fr/pygments/pyproject.toml +++ b/syntax_highlighting/fr/pygments/pyproject.toml @@ -8,4 +8,4 @@ version = "0.8" dependencies = ["pygments"] [project.entry-points."pygments.lexers"] -catala-fr-lexer = "catala_fr_lexer.lexer:CatalaFrLexer" +catala-fr-lexer = "catala_fr_lexer.lexer:CustomLexer" diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py index 8431b6c22..5db05cdfb 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -3,9 +3,9 @@ import re -__all__=['CatalaPlLexer'] +__all__=['CustomLexer'] -class CatalaPlLexer(RegexLexer): +class CustomLexer(RegexLexer): name = 'CatalaPl' aliases = ['catala_pl'] filenames = ['*.catala_pl'] diff --git a/syntax_highlighting/pl/pygments/pyproject.toml b/syntax_highlighting/pl/pygments/pyproject.toml index b3eb21613..8d22d4173 100644 --- a/syntax_highlighting/pl/pygments/pyproject.toml +++ b/syntax_highlighting/pl/pygments/pyproject.toml @@ -8,4 +8,4 @@ version = "0.8" dependencies = ["pygments"] [project.entry-points."pygments.lexers"] -catala-pl-lexer = "catala_pl_lexer.lexer:CatalaPlLexer" +catala-pl-lexer = "catala_pl_lexer.lexer:CustomLexer" From 5282aec4003a9fa95181c0490e3d0f95dced1698 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Mon, 13 Mar 2023 14:44:34 +0100 Subject: [PATCH 2/3] LaTeX output: start refactor --- compiler/literate/latex.ml | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/compiler/literate/latex.ml b/compiler/literate/latex.ml index e31df6daa..3f1cb8e5e 100644 --- a/compiler/literate/latex.ml +++ b/compiler/literate/latex.ml @@ -185,6 +185,19 @@ codes={\catcode`\$=3\catcode`\^=7} (** {1 Weaving} *) +let code_block ~meta lang fmt (code, pos) = + let opts = if meta then "numbersep=9mm, " else "" in + Format.fprintf fmt + "\\begin{minted}[label={\\hspace*{\\fill}\\texttt{%s}},%sfirstnumber=%d]{%s}\n\ + ```catala\n\ + %s```\n\ + \\end{minted}" + (pre_latexify (Filename.basename (Pos.get_file pos))) + opts + (Pos.get_start_line pos + 1) + (get_language_extension lang) + code + let rec law_structure_to_latex (language : C.backend_lang) (print_only_law : bool) @@ -228,15 +241,7 @@ let rec law_structure_to_latex let block_content = Marked.unmark c in check_exceeding_lines start_line filename block_content; update_lines_of_code c; - Format.fprintf fmt - "\\begin{minted}[label={\\hspace*{\\fill}\\texttt{%s}},firstnumber=%d]{%s}\n\ - ```catala\n\ - %s```\n\ - \\end{minted}" - (pre_latexify (Filename.basename (Pos.get_file (Marked.get_mark c)))) - (Pos.get_start_line (Marked.get_mark c) + 1) - (get_language_extension language) - (Marked.unmark c) + code_block ~meta:false language fmt c | A.CodeBlock (_, c, true) when not print_only_law -> let metadata_title = match language with @@ -253,15 +258,11 @@ let rec law_structure_to_latex "\\begin{tcolorbox}[colframe=OliveGreen, breakable, \ title=\\textcolor{black}{\\texttt{%s}},title after \ break=\\textcolor{black}{\\texttt{%s}},before skip=1em, after skip=1em]\n\ - \\begin{minted}[numbersep=9mm, firstnumber=%d, \ - label={\\hspace*{\\fill}\\texttt{%s}}]{%s}\n\ - ```catala\n\ - %s```\n\ - \\end{minted}\n\ + %a\n\ \\end{tcolorbox}" - metadata_title metadata_title start_line (pre_latexify filename) - (get_language_extension language) - block_content + metadata_title metadata_title + (code_block ~meta:true language) + c | A.CodeBlock _ -> () (** {1 API} *) From f1e44619e0e3cea1cdb6d8edf0c887ee13df9c43 Mon Sep 17 00:00:00 2001 From: Louis Gesbert Date: Mon, 13 Mar 2023 18:33:15 +0100 Subject: [PATCH 3/3] LaTeX literate output: handle pygments coloration from within Catala This leverages the embedded lexer already used for HTML output, and uses the LaTeX pygments backend to colorise code directly, without the need for `minted`. --- INSTALL.md | 10 ++-- compiler/catala_utils/file.ml | 42 ++++++++++++++ compiler/catala_utils/file.mli | 15 +++++ compiler/literate/html.ml | 83 ++++++--------------------- compiler/literate/latex.ml | 33 +++++++---- compiler/literate/literate_common.ml | 22 +++++++ compiler/literate/literate_common.mli | 5 ++ 7 files changed, 126 insertions(+), 84 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 9bd37a589..ec25ac4ab 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -73,15 +73,13 @@ Next, install all the packages that Catala depends on with This should ensure everything is set up for developing on the Catala compiler! The Python dependencies are installed inside a local virtual environment -(`venv`), so for things like syntax coloration in Catala's literate output to -work, you will have to run +(`venv`). The Makefile rules will use it automatically when building the syntax +cheat-sheet, for example, but if you need to otherwise colorise Catala code, or +use generated Python code, you should run the following command once in every +new shell session: . _python_venv/bin/activate -from the catala directory to enable it. This needs to be done in every new shell -session, unless you use the predefined `make` rules which already account for -that. - **Warning**: the `make dependencies` command does not include the `z3` dependency required to enable the proof platform feature of Catala. If you wish to enable support for the `Proof` command of the Catala compiler, you should diff --git a/compiler/catala_utils/file.ml b/compiler/catala_utils/file.ml index d7524f7b0..ce6bd57aa 100644 --- a/compiler/catala_utils/file.ml +++ b/compiler/catala_utils/file.ml @@ -66,3 +66,45 @@ let get_out_channel ~source_file ~output_file ?ext () = let get_formatter_of_out_channel ~source_file ~output_file ?ext () = let f, with_ = get_out_channel ~source_file ~output_file ?ext () in f, fun fmt -> with_ (fun oc -> with_formatter_of_out_channel oc fmt) + +let with_temp_file pfx sfx ?contents f = + let filename = temp_file pfx sfx in + finally (fun () -> Sys.remove filename) + @@ fun () -> + Option.iter + (fun contents -> + with_out_channel filename (fun oc -> output_string oc contents)) + contents; + f filename + +let contents filename = + with_in_channel filename (fun ic -> + really_input_string ic (in_channel_length ic)) + +let process_out ?check_exit cmd args = + let check_exit = + let default n = + if n <> 0 then + Printf.ksprintf failwith "Sub-process %s returned with status %d" cmd n + in + Option.value check_exit ~default + in + let aargs = Array.of_list (cmd :: args) in + let ic = + try Unix.open_process_args_in cmd aargs + with Unix.Unix_error (Unix.ENOENT, _, _) -> + Printf.ksprintf failwith "ERROR: program %s not found" cmd + in + let buf = Buffer.create 4096 in + finally (fun () -> + match Unix.close_process_in ic with + | Unix.WEXITED n -> check_exit n + | Unix.WSIGNALED n | Unix.WSTOPPED n -> + Printf.ksprintf failwith "Sub-process %s was killed (%d)" cmd n) + @@ fun () -> + try + while true do + Buffer.add_channel buf ic 4096 + done; + assert false + with End_of_file -> Buffer.contents buf diff --git a/compiler/catala_utils/file.mli b/compiler/catala_utils/file.mli index e94804cb4..19e4e8c58 100644 --- a/compiler/catala_utils/file.mli +++ b/compiler/catala_utils/file.mli @@ -64,3 +64,18 @@ val get_formatter_of_out_channel : val temp_file : string -> string -> string (** Like [Filename.temp_file], but registers the file for deletion at program exit unless Cli.debug_flag is set. *) + +val with_temp_file : + string -> string -> ?contents:string -> (string -> 'a) -> 'a +(** Creates a temp file (with prefix and suffix like [temp_file], optionally + with the given contents, for the lifetime of the supplied function, then + remove it unconditionally *) + +val contents : string -> string +(** Reads the contents of a file as a string *) + +val process_out : ?check_exit:(int -> unit) -> string -> string list -> string +(** [process_out cmd args] executes the given command with the specified + arguments, and returns the stdout of the process as a string. [check_exit] + is called on the return code of the sub-process, the default is to fail on + anything but 0. *) diff --git a/compiler/literate/html.ml b/compiler/literate/html.ml index 35d853758..7ed068c3b 100644 --- a/compiler/literate/html.ml +++ b/compiler/literate/html.ml @@ -30,13 +30,6 @@ module C = Cli (** Converts double lines into HTML newlines. *) let pre_html (s : string) = String.trim (run_pandoc s `Html) -(** Raise an error if pygments cannot be found *) -let raise_failed_pygments (command : string) (error_code : int) : 'a = - Errors.raise_error - "Weaving to HTML failed: pygmentize command \"%s\" returned with error \ - code %d" - command error_code - (** Partial application allowing to remove first code lines of [] and [] generated HTML. Basically, remove all code block first lines. *) @@ -57,21 +50,9 @@ let wrap_html (language : Cli.backend_lang) (fmt : Format.formatter) (wrapped : Format.formatter -> unit) : unit = - let pygments = "pygmentize" in - let css_file = File.temp_file "catala_css_pygments" "" in - let pygments_args = - [| "-f"; "html"; "-S"; "colorful"; "-a"; ".catala-code" |] - in - let cmd = - Format.sprintf "%s %s > %s" pygments - (String.concat " " (Array.to_list pygments_args)) - css_file + let css_as_string = + call_pygmentize ["-f"; "html"; "-S"; "default"; "-a"; ".catala-code"] in - let return_code = Sys.command cmd in - if return_code <> 0 then raise_failed_pygments cmd return_code; - let oc = open_in css_file in - let css_as_string = really_input_string oc (in_channel_length oc) in - close_in oc; Format.fprintf fmt "\n\ \n\ @@ -118,54 +99,24 @@ let wrap_html (** Performs syntax highlighting on a piece of code by using Pygments and the special Catala lexer. *) -let pygmentize_code (c : string Marked.pos) (language : C.backend_lang) : string - = +let pygmentize_code (c : string Marked.pos) (lang : C.backend_lang) : string = C.debug_print "Pygmenting the code chunk %s" (Pos.to_string (Marked.get_mark c)); - let pyg_lexer = - let lexer_fname = "lexer_" ^ Cli.language_code language ^ ".py" in - match Pygment_lexers.read lexer_fname with - | None -> failwith "Pygments lexer not found for this language" - | Some parser -> - let f = File.temp_file "pygments_lexer_" ".py" in - File.with_out_channel f (fun oc -> output_string oc parser); - f - in - let temp_file_in = File.temp_file "catala_html_pygments" "in" in - let temp_file_out = File.temp_file "catala_html_pygments" "out" in - let oc = open_out temp_file_in in - Printf.fprintf oc "%s" (Marked.unmark c); - close_out oc; - let pygments = "pygmentize" in - let pygments_args = - [| - "-l"; - pyg_lexer; - "-x"; - "-f"; - "html"; - "-O"; - "style=colorful,anchorlinenos=True,lineanchors=\"" - ^ String.to_ascii (Pos.get_file (Marked.get_mark c)) - ^ "\",linenos=table,linenostart=" - ^ string_of_int (Pos.get_start_line (Marked.get_mark c)); - "-o"; - temp_file_out; - temp_file_in; - |] - in - let cmd = - Format.asprintf "%s %s" pygments - (String.concat " " (Array.to_list pygments_args)) + let output = + File.with_temp_file "catala_html_pygments" "in" ~contents:(Marked.unmark c) + @@ fun temp_file_in -> + call_pygmentize ~lang + [ + "-f"; + "html"; + "-O"; + "anchorlinenos=True,lineanchors=" + ^ String.to_ascii (Pos.get_file (Marked.get_mark c)) + ^ ",linenos=table,linenostart=" + ^ string_of_int (Pos.get_start_line (Marked.get_mark c)); + temp_file_in; + ] in - let return_code = Sys.command cmd in - Sys.remove temp_file_in; - Sys.remove pyg_lexer; - if return_code <> 0 then raise_failed_pygments cmd return_code; - let oc = open_in temp_file_out in - let output = really_input_string oc (in_channel_length oc) in - close_in oc; - Sys.remove temp_file_out; (* Remove code blocks delimiters needed by [Pygments]. *) let trimmed_output = output |> remove_cb_first_lines |> remove_cb_last_lines diff --git a/compiler/literate/latex.ml b/compiler/literate/latex.ml index 3f1cb8e5e..588ac14d0 100644 --- a/compiler/literate/latex.ml +++ b/compiler/literate/latex.ml @@ -59,7 +59,8 @@ let wrap_latex \usepackage{fontspec} \usepackage[hidelinks]{hyperref} %s -\usepackage{minted} +\usepackage{fancyvrb} +\usepackage{color} \usepackage{longtable} \usepackage{booktabs,tabularx} \usepackage{newunicodechar} @@ -122,8 +123,10 @@ let wrap_latex \newunicodechar{→}{$\rightarrow$} \newunicodechar{≠}{$\neq$} -\newcommand*\FancyVerbStartString{\PYG{l+s}{```catala}} -\newcommand*\FancyVerbStopString{\PYG{l+s}{```}} +%s + +\newcommand*\FancyVerbStartString{\PY{l+s}{```catala}} +\newcommand*\FancyVerbStopString{\PY{l+s}{```}} \fvset{ numbers=left, @@ -157,6 +160,7 @@ codes={\catcode`\$=3\catcode`\^=7} (match language with Fr -> "\\setmainfont{Marianne}" | _ -> "") (* for France, we use the official font of the French state design system https://gouvfr.atlassian.net/wiki/spaces/DB/pages/223019527/Typographie+-+Typography *) + (call_pygmentize ["-f"; "latex"; "-S"; "default"]) (literal_title language) (literal_generated_by language) Cli.version @@ -186,17 +190,22 @@ codes={\catcode`\$=3\catcode`\^=7} (** {1 Weaving} *) let code_block ~meta lang fmt (code, pos) = - let opts = if meta then "numbersep=9mm, " else "" in + (* Pygments does'nt allow to specify multiple 'verboptions' (escaping bug ?) + so we call it with "nowrap" and write the FancyVrb wrapper ourselves. *) + let pygmentized_code = + let contents = String.concat "" ["```catala\n"; code; "```"] in + File.with_temp_file "catala_latex_pygments" "in" ~contents + @@ fun temp_file_in -> + call_pygmentize ~lang ["-f"; "latex"; "-O"; "nowrap=true"; temp_file_in] + in Format.fprintf fmt - "\\begin{minted}[label={\\hspace*{\\fill}\\texttt{%s}},%sfirstnumber=%d]{%s}\n\ - ```catala\n\ - %s```\n\ - \\end{minted}" - (pre_latexify (Filename.basename (Pos.get_file pos))) - opts + {latex|\begin{Verbatim}[commandchars=\\\{\},numbers=left,firstnumber=%d,stepnumber=1,label={\hspace*{\fill}\texttt{%s}}%s]|latex} (Pos.get_start_line pos + 1) - (get_language_extension lang) - code + (pre_latexify (Filename.basename (Pos.get_file pos))) + (if meta then ",numbersep=9mm" else ""); + Format.pp_print_newline fmt (); + Format.pp_print_string fmt pygmentized_code; + Format.pp_print_string fmt "\\end{Verbatim}\n" let rec law_structure_to_latex (language : C.backend_lang) diff --git a/compiler/literate/literate_common.ml b/compiler/literate/literate_common.ml index 7513bb04e..e089f07aa 100644 --- a/compiler/literate/literate_common.ml +++ b/compiler/literate/literate_common.ml @@ -124,3 +124,25 @@ let check_exceeding_lines ANSITerminal.[red] "%s" String.(sub s max_len (len_s - max_len))))) + +let call_pygmentize ?lang args = + let cmd = "pygmentize" in + let check_exit n = + if n <> 0 then + Errors.raise_error + "Weaving failed: pygmentize command %S returned with error code %d" + (String.concat " " (cmd :: args)) + n + in + match lang with + | None -> File.process_out ~check_exit cmd args + | Some lang -> + let lexer_py = + let lexer_fname = "lexer_" ^ Cli.language_code lang ^ ".py" in + match Pygment_lexers.read lexer_fname with + | None -> failwith "Pygments lexer not found for this language" + | Some lexer -> lexer + in + File.with_temp_file "pygments_lexer_" ".py" ~contents:lexer_py + @@ fun pyg_lexer -> + File.process_out ~check_exit cmd ("-l" :: pyg_lexer :: "-x" :: args) diff --git a/compiler/literate/literate_common.mli b/compiler/literate/literate_common.mli index d9240a9d2..4164a2faa 100644 --- a/compiler/literate/literate_common.mli +++ b/compiler/literate/literate_common.mli @@ -46,3 +46,8 @@ val run_pandoc : string -> [ `Html | `Latex ] -> string val check_exceeding_lines : ?max_len:int -> int -> string -> string -> unit (** [check_exceeding_lines ~max_len start_line filename content] prints a warning message for each lines of [content] exceeding [max_len] characters. *) + +val call_pygmentize : ?lang:Cli.backend_lang -> string list -> string +(** Calls the [pygmentize] command with the given arguments, and returns the + results as a string. If [lang] is specified, the proper arguments for the + Catala lexer are already passed. *)